10 Novembre 2026 · dati

Il tuo backtest ha bisogno di un registro delle modifiche ai dati, non solo di un’istantanea

Il tuo backtest ha bisogno di un registro delle modifiche ai dati, non solo di un’istantanea

Un’istantanea congelata dei dati di mercato non basta per rendere affidabile un backtest. Può riprodurre lo stesso risultato nascondendo che il fornitore ha modificato gli input che lo hanno generato.

Conserva l’istantanea. Poi tieni un registro delle modifiche che indichi cosa è cambiato, quando è cambiato e se la strategia ne ha risentito. È particolarmente importante quando la ricerca usa trade corretti, fondamentali rivisti, funding ricostruito o dati storici aggiornati senza preavviso dal fornitore.

Perché un backtest riproducibile può comunque trarre in inganno?

Supponiamo che lunedì scarichi cinque anni di barre orarie e lanci una strategia. Venerdì, il fornitore ha corretto un trade errato, rettificato un’operazione societaria o colmato una lacuna. Il file salvato continua a restituire esattamente il risultato di lunedì. È riproducibile. Ma se rilanci il backtest usando i dati storici attuali del fornitore, potresti ottenere un risultato diverso senza avere traccia del motivo.

Il problema non riguarda solo le correzioni più evidenti. Un singolo massimo modificato può attivare uno stop; una chiusura rivista può spostare un indicatore oltre la soglia. In un universo ampio, una modifica ai dati storici di un simbolo può cambiarne il ranking e far uscire un altro asset dal portafoglio. Lo Sharpe finale può variare anche se il codice e la configurazione della strategia sono identici.

L’hash di un file ti dice che due file sono diversi. Non ti dice se un aggiustamento per uno split ha modificato 40 anni di prezzi, se il fornitore ha corretto tre trade o se un parser ha trasformato un campo vuoto in zero.

Cosa dovrebbe contenere un registro delle modifiche ai dati di mercato?

Registra le modifiche all’unità più piccola utile, includendo abbastanza contesto per ripetere l’analisi interessata. Per un feed di barre, di solito servono lo strumento, l’intervallo, l’ora dell’evento, i valori precedenti e nuovi, la fonte e l’ora in cui hai rilevato l’aggiornamento. Se il fornitore mette a disposizione il payload originale, conservalo.

Dato da registrarePerché conservarloEsempio
Versione della fonte o ora di acquisizioneIdentifica lo stato del fornitore utilizzatoIstantanea acquisita il 2026-11-02 alle 08:15 UTC
Campo modificato e valori precedente/nuovoMostra cosa è effettivamente cambiatoETHUSDT 1h massimo: 3,412.10 → 3,418.60
Classificazione della modificaDistingue le correzioni dalle trasformazioniCorrezione tardiva di un trade, aggiustamento per split, backfill
Versione della pipeline e dello schemaDistingue le modifiche alla fonte da quelle introdotte dalla tua elaborazioneNormalizer v7, schema adjusted-bar v3

Per i dataset di grandi dimensioni, conserva istantanee immutabili e un manifest compatto con checksum, versioni delle fonti e orari di acquisizione. Aggiungi differenze a livello di riga per le partizioni modificate. È un compromesso pratico: puoi ripetere l’intera analisi senza scrivere ogni riga invariata in una seconda tabella di audit.

Come misuro se una correzione ha avuto un impatto?

Non fermarti al conteggio delle righe modificate. Rilancia la strategia interessata con i dati vecchi e nuovi, mantenendo invariati codice, parametri, commissioni e ipotesi di esecuzione. Confronta le decisioni e il percorso che ha portato al risultato.

  1. Individua dal diff gli strumenti e le ore degli eventi interessati.
  2. Scopri quali feature, segnali, ordini o pesi di portafoglio utilizzano quei record.
  3. Ripeti la simulazione sulla finestra valida più breve, includendo l’eventuale lookback e lo stato delle posizioni aperte.
  4. Confronta ordini, eseguiti, esposizione, turnover, drawdown e performance finale.

Per esempio, una correzione del fornitore che modifica di $0.02 il massimo su barre a 1 minuto può riguardare un milione di righe senza avere alcun effetto su una strategia momentum giornaliera. Una sola barra corretta che coincide con il livello di uno stop può invece essere determinante. Misura l’impatto sulle decisioni: il numero di record modificati è un indicatore poco attendibile.

Tieni distinte due domande: “Posso riprodurre il risultato usando i dati che ho salvato?” e “Questa versione dei dati sarebbe stata disponibile alla strategia in quel momento?” Un registro delle modifiche aiuta a rispondere a entrambe, ma per la seconda servono anche i dati sulla disponibilità point-in-time.

Quanto costa e quando ne vale la pena?

Il tracciamento delle modifiche richiede spazio di archiviazione, lavoro di acquisizione e decisioni operative. I fornitori potrebbero non esporre versioni stabili e alcuni feed storici vengono ricostruiti periodicamente senza una notifica chiara delle correzioni. Non puoi registrare una modifica che non rilevi.

Inizia dai dati le cui revisioni possono cambiare le conclusioni della ricerca: barre usate dalla logica degli stop, azioni corrette per le operazioni societarie, fondamentali point-in-time e serie di funding o open interest ricostruite. Per dataset ampi e stabili può bastare un manifest giornaliero con checksum delle partizioni. Aggiungi diff a livello di campo dove gli aggiornamenti sono frequenti o le decisioni di trading dipendono da singoli record.

I critici hanno ragione: un archivio completo e perpetuo di ogni risposta dei fornitori può diventare costoso e comunque non riuscire a documentare ciò che la fonte sapeva in quel momento. La soluzione è circoscrivere l’audit ai dati e alle decisioni rilevanti e documentare le lacune. Un’istantanea ti permette di rilanciare un esperimento. Un registro delle modifiche ti permette di spiegare perché il risultato dell’esperimento è cambiato.

ingegneria dei datibacktestingriproducibilitàricerca quantitativa
← Tutti gli articoli