
I dati forex puliti sono una serie storica dei prezzi con timestamp coerenti in UTC, senza duplicati, controllata per anomalie, documentata per fonte e formato, e pronta per essere importata in una piattaforma di trading senza correzioni manuali. Se stai partendo da un file grezzo proprio ora, la prima mossa è un controllo cronologico: ordina ogni riga per timestamp e calcola il tasso di duplicati prima di toccare qualsiasi altra cosa. Il resto di questa guida illustra il workflow completo di pulizia e la checklist di audit che segue.
In breve:
- I duplicati vanno identificati con una regola tollerante, specialmente per timestamp quasi identici entro pochi millisecondi, per evitare di distorcere i backtest.
- Verifica che i timestamp siano strettamente crescenti e ordina i dati cronologicamente se sono fuori sequenza, invece di scartare le righe, per preservare l'integrità dei dati.
- Mantieni i timestamp in UTC e registra separatamente il timestamp originale del feed e quello di ingestione per supportare una riconciliazione e un debug accurati.
- Segnala anomalie e outlier con etichette reversibili invece di eliminarli, consentendo test flessibili delle strategie e audit dei dati.
- Esegui un audit completo in cinque fasi, includendo controlli su timeline, deduplicazione, gap e anomalie, prima di importare i dataset in piattaforme di trading come MT4 o MT5.
Indice
- Perché fonte, provenienza e formati contano per la ricerca FX
- Difetti comuni nei dati grezzi e come rilevarli
- Come costruire un workflow di pulizia dei dati forex passo dopo passo?
- Preparare dati puliti per backtest credibili
- Una checklist di audit per dati forex pronti all'importazione
- Compromessi pratici da conoscere prima di pulire i tuoi dati
- Dataset pronti all'importazione se vuoi saltare la pulizia
- FAQ
- Fonti
Perché fonte, provenienza e formati contano per la ricerca FX
Il forex viene scambiato over the counter attraverso un insieme frammentato di banche, broker e piattaforme elettroniche, quindi non esiste un unico tape autorevole come per un'azione quotata. Il BIS Triennial Central Bank Survey ha evidenziato il volume estremamente elevato di turnover OTC nell'aprile 2025 attraverso 52 giurisdizioni, una scala che sottolinea quante diverse piattaforme stiano quotando prezzi leggermente diversi in un dato momento. Questo rende la domanda "da dove viene questo prezzo" centrale per qualsiasi backtest, non una nota a margine.
La scelta del formato complica ulteriormente il problema. I dati tick preservano ogni variazione di quotazione ma sono pesanti da archiviare e lenti da interrogare; le barre minute (M1) comprimono tutto in valori open, high, low, close che sono molto più facili da gestire ma nascondono la struttura intrabar; le esportazioni da piattaforma (MT4/MT5), CSV e Parquet comportano ciascuna un compromesso tra portabilità e prestazioni.
Prima di pulire qualsiasi cosa, registra (per indicazioni pratiche, vedi Backtesting - Cryptocurrency Trading Blog | AI Trading Strategies & Guides | Darkbot):
- La fonte e la piattaforma dei dati, oltre a se la quotazione sia bid, ask o mid.
- Il timestamp del feed rispetto al timestamp in cui il tuo sistema ha ricevuto il record.
- La definizione di sessione utilizzata (quali orari di mercato, quale calendario festivo).
Difetti comuni nei dati grezzi e come rilevarli
La maggior parte dei dataset forex presenta difetti silenziosi. Quelli elencati di seguito sono quelli più propensi a distorcere un backtest, e ciascuno ha una diagnostica rapida.
- Errori di cronologia: Controlla se i timestamp sono strettamente crescenti. Se
df['timestamp'].is_monotonic_increasingrestituisce false, riordina per timestamp invece di scartare le righe, poiché l'arrivo fuori sequenza è di solito un artefatto di trasporto, non un dato errato. - Duplicati: Calcola un tasso di deduplicazione raggruppando per simbolo, timestamp e bid/ask, poi dividendo le righe duplicate per il totale delle righe. Le corrispondenze esatte sono facili; i quasi-duplicati entro pochi millisecondi richiedono una regola tollerante invece di un controllo di uguaglianza stretta.
- Gap ed errori di sessione: Costruisci una tabella dei gap confrontando il numero atteso di barre per sessione con il numero effettivo, poi segnala ciò che coincide con una festività nota rispetto a ciò che non coincide, poiché quest'ultimo caso è più probabilmente un'interruzione del feed. Le transizioni dell'ora legale sono una fonte frequente di apparenti gap di un'ora che in realtà sono artefatti di fuso orario e non dati mancanti.
- Anomalie: Esegui uno z-score mobile sulle variazioni di prezzo per segnalare outlier statistici, poi etichetta (mai eliminare silenziosamente) tutto ciò che supera la soglia, e controlla separatamente l'integrità dei campi (il bid non deve mai superare l'ask, nessun volume negativo).
Consiglio pratico: Mantieni ogni segnalazione come etichetta reversibile in una colonna separata invece di eliminare le righe, così puoi testare le strategie con e senza i punti filtrati.
Come costruire un workflow di pulizia dei dati forex passo dopo passo?
Trasformare i tick grezzi in barre pronte per il backtest è una sequenza, e saltare un passaggio tende a emergere come un bias silenzioso più avanti piuttosto che come un errore evidente subito.
- Ingestione: Preleva da uno stream persistente (WebSocket) quando possibile, oppure effettua un'ingestione batch con una logica che corregge l'arrivo fuori sequenza, come raccomandato nei workflow applicati di pulizia dei tick.
- Strategia dei timestamp: Normalizza ogni record in UTC, ma mantieni il campo timestamp originale accanto ad esso, e registra anche il tuo timestamp di ingestione per il debug futuro.
- Ordinamento batch: Per feed tick ad alto throughput, ordina in finestre di cache-and-sort invece di riordinare l'intero file ad ogni nuovo record; questo mantiene l'ingestione veloce senza sacrificare la cronologia.
- Deduplicazione: Applica prima chiavi di corrispondenza esatta (simbolo, timestamp, bid, ask), poi una regola tollerante per le collisioni a livello di microsecondo che la corrispondenza esatta non rileva.
- Etichettatura degli outlier: Segnala le anomalie statistiche e contestuali con un marcatore reversibile invece di rimuoverle definitivamente.
- Ricampionamento: Costruisci barre OHLC dal midpoint o da bid/ask a seconda del tuo modello di esecuzione, e decidi esplicitamente come trattare gli intervalli senza tick invece di lasciare che vadano per default a una barra piatta riempita in avanti.
Due cose contano in ogni fase: unifica i timestamp in UTC fin da subito e non lasciare mai che un'operazione di pulizia distrugga il record grezzo su cui ha agito.
Preparare dati puliti per backtest credibili
Un file pulito non è la stessa cosa di uno pronto per il backtest. Il lavoro di validazione deve comunque avvenire prima di fidarsi dei risultati.
- Tieni da parte un periodo di validazione che la strategia non ha mai visto durante lo sviluppo, ed evita finestre di lookback sovrapposte che permettono alle informazioni di trapelare tra i campioni.
- Preferisci serie storiche che coprano più regimi di volatilità piuttosto che un solo anno tranquillo, poiché una strategia che sopravvive solo in mercati calmi ti dice poco.
- Modella l'esecuzione in modo realistico: includi un profilo di spread, una distribuzione dello slippage ed euristiche di riempimento invece di assumere che ogni ordine venga eseguito al prezzo quotato.
Le linee guida normative e istituzionali sul backtesting supportano direttamente questa disciplina. Un ordine SEC sul framework di back-testing dell'ICC descrive la separazione tra dati di validazione e di training e la preferenza per serie storiche più lunghe e diversificate per regime, al fine di evitare inferenze distorte, un principio che si trasferisce senza problemi dal testing dei modelli di margine al backtesting delle strategie.
Tieni traccia delle tue metriche di audit come parte dei metadati del dataset: tasso di deduplicazione, frequenza dei gap, tasso di segnalazione delle anomalie, e un controllo sulla stabilità della volatilità tra i sottoperiodi, insieme ai limiti temporali del campione e alla fonte.
Una checklist di audit per dati forex pronti all'importazione
Prima di fidarti di qualsiasi dataset, esegui cinque controlli: un test di cronologia, un calcolo del tasso di deduplicazione, una tabella dei gap rispetto al tuo calendario delle sessioni, un tasso di segnalazione delle anomalie e un test di importazione in MT4 o MT5. Ognuno ha un equivalente SQL o Pandas in una riga, da ORDER BY timestamp a un conteggio groupby().size() sulle chiavi duplicate.
- I controlli di cronologia e gap intercettano le interruzioni del feed prima che corrompano un backtest.
- Un tasso di deduplicazione superiore a una piccola frazione del totale delle righe segnala di solito un bug di ingestione che vale la pena correggere alla fonte.
- Un test di importazione in MT4/MT5 conferma che il formato del file corrisponda a ciò che la piattaforma si aspetta, non solo a ciò che dice la specifica.
Dataset documentati dal 2014 con regole di timestamp pubblicate e supporto diretto da ingegneri, la nostra guida di audit per i dati di backtesting MT5 percorre esattamente questa checklist su un file reale.
Consiglio pratico: Esegui la checklist completa su un piccolo campione prima di acquistare o importare una serie storica completa, poiché una regola di timestamp errata si manifesta nelle prime mille righe con la stessa chiarezza con cui si manifesterebbe nella milionesima.
Compromessi pratici da conoscere prima di pulire i tuoi dati
Etichettare batte eliminare quasi sempre. L'unica eccezione è un record che puoi dimostrare essere corrotto, come un volume negativo o un bid/ask incrociato che non può rappresentare uno stato di mercato reale. Tutto il resto dovrebbe rimanere nel dataset come riga segnalata e reversibile, così puoi rieseguire una strategia con soglie di filtro diverse in futuro.

L'archiviazione conta più di quanto ci si aspetti una volta che un dataset supera qualche anno di dati tick. Il Parquet compresso, partizionato per simbolo e data, mantiene i tempi di interrogazione ragionevoli senza l'overhead del CSV grezzo.
Sulla risoluzione, vale una semplice regola empirica: usa barre minute per strategie con periodi di detenzione di minuti o più lunghi, e riserva i dati tick al lavoro genuinamente ad alta frequenza dove la struttura intrabar cambia l'esito.
— Start
Dataset pronti all'importazione se vuoi saltare la pulizia
Se costruire questa pipeline da sé non è il punto, sono disponibili per l'acquisto dataset già puliti. Il nostro dataset GBPUSD 1mo è un esempio pratico su cui testare la checklist descritta sopra: esegui i controlli di cronologia e deduplicazione, conferma che la tabella dei gap corrisponda alle sessioni attese e prova il test di importazione direttamente in MT4 o MT5.
Oltre alle singole coppie, il nostro catalogo Dati Storici copre forex, metalli, obbligazioni e indici azionari come download completi e documentati, e il nostro Piano Annuale a 119 EUR all'anno offre accesso continuo a tutto il catalogo. Realizziamo anche Expert Advisor e Indicatori per i trader che vogliono automatizzare la parte di strategia una volta risolta quella dei dati.
- Scarica il campione ed esegui la checklist di audit in cinque fasi prima di qualsiasi altra cosa.
- Contatta direttamente il nostro team di supporto tecnico se un controllo segnala qualcosa che non riesci a spiegare.
- Passa al Piano Annuale quando hai bisogno di più di uno strumento o di una serie storica più lunga.
FAQ
Quale formato di timestamp dovrebbero usare i dati forex puliti?
Memorizza i timestamp in UTC per evitare ambiguità tra sessioni e transizioni dell'ora legale, ma mantieni il timestamp originale del feed in un campo separato. Questo ti permette di ricostruire il record sorgente se un calcolo a valle dovesse mai sembrare errato.
Gli outlier vanno eliminati o solo segnalati?
Segnala gli outlier con un'etichetta reversibile invece di eliminarli, tranne per i record dimostrabilmente corrotti, come un volume negativo o un bid e ask incrociati. Questo approccio, raccomandato nei workflow applicati di pulizia dei tick, ti permette di rieseguire una strategia con filtri diversi senza perdere il record grezzo.
Quanta serie storica mi serve per un backtest credibile?
Non esiste un minimo universale unico, ma le linee guida normative sul backtesting favoriscono campioni più lunghi e diversificati per regime, con periodi di validazione tenuti separati dai dati di training. Una serie storica che copre solo un anno tranquillo sottostimerà il rischio in uno volatile.
Cosa conta come duplicato nei dati forex a livello di tick?
Un duplicato esatto condivide lo stesso simbolo, timestamp e valori bid/ask, ma anche i quasi-duplicati entro pochi millisecondi l'uno dall'altro richiedono una regola di corrispondenza tollerante. Calcolare un tasso di deduplicazione su entrambi i casi prima della pulizia ti dice quanto sia serio il problema nel tuo feed specifico.
I dati di BacktestMarket arrivano pronti per MT4 o MT5 senza formattazione aggiuntiva?
Sì, dataset come GBPUSD 1mo sono costruiti per l'importazione diretta in MT4 e MT5 oltre che nei formati CSV e Parquet. Il nostro catalogo Dati Storici documenta il formato e le regole di timestamp per ogni strumento, così puoi verificare la compatibilità prima di importare.
Fonti
- BIS Triennial Central Bank Survey (FX turnover, 2025)
- How to sort and clean forex API tick data for accurate market backtesting
- Order approving proposed changes to ICC Back-Testing Framework
Consigliati
- Audit First MT5 Backtesting Data: Gap, Timestamp, Ready to Import
- 5 Audits Quants Must Run on Outlier Handled M1 Data Before MT4/MT5
- Fixing MT4 Missing Data: A Complete Recovery Guide
- How to Achieve 99% Modeling Quality in MT4 for Backtests
Risorse correlate
Esplora i robot Expert Advisor di BacktestMarket per mettere in pratica le idee di questo articolo.

