A chi serve — A chi costruisce un backtest, usa dati fondamentali o macro, ricostruisce un indice o confronta segnali storici. Il punto non è sapere oggi che cosa accadde allora, ma sapere che cosa era consultabile nel preciso momento della decisione.
I dati point-in-time conservano la storia così come poteva essere osservata in ciascun istante. Per ogni valore non basta la data a cui il dato si riferisce: occorre registrare quando fu pubblicato, quando divenne disponibile al sistema, quale versione era allora valida e fino a quando rimase tale. Un database aggiornato e corretto oggi può descrivere perfettamente il passato e, nello stesso tempo, essere inadatto a simulare una decisione passata.
In parole semplici — Una fotografia restaurata oggi non è la fotografia che il trader vedeva ieri. Il backtest deve ricevere solo l'immagine disponibile allora, comprese imperfezioni, ritardi e successive revisioni.
Le quattro date da non confondere
| Campo temporale | Domanda | Errore se manca |
|---|---|---|
| Periodo di osservazione | A quale trimestre, barra o evento si riferisce il valore? | attribuire il dato al momento sbagliato |
| Timestamp di pubblicazione | Quando la fonte lo ha diffuso? | usare un risultato prima dell'annuncio |
| Timestamp di disponibilità | Quando il dato è entrato davvero nella pipeline, nel fuso e nel calendario corretti? | ignorare latenza, chiusure o ritardi del vendor |
| Vintage o versione | Quale valore era noto prima di una rettifica? | usare oggi la revisione finale nel passato |
Il timestamp di disponibilità è quello operativo. Un comunicato pubblicato alle 16:05 di New York non può generare un ordine alla chiusura delle 16:00. Se il sistema acquisisce il file alle 16:08, la prima decisione ammissibile deve rispettare anche quella latenza. Per dati giornalieri senza orario affidabile è prudente definire una convenzione esplicita, per esempio “utilizzabile dalla seduta successiva”, e documentarla.
I dati macro illustrano bene il problema del revision vintage. Produzione, occupazione e crescita possono essere corretti molte volte. La serie più recente risponde a “qual è oggi la migliore stima del passato”; un test point-in-time risponde a “quale stima era pubblica in quella data”. Sono domande diverse.
Universo, identificatori e appartenenza
Un elenco odierno di titoli, fondi o contratti non può essere proiettato all'indietro. L'universo deve essere una tabella temporale con intervalli di validità:
| Entità | Informazione point-in-time necessaria |
|---|---|
| Titolo | identificatore permanente, date di quotazione e cessazione, venue, valuta |
| Indice | data di annuncio e data effettiva di ogni ingresso o uscita |
| Fondo | nascita, fusione, liquidazione, cambio di mandato e serie commissionale |
| Future | contratto specifico, scadenza, calendario e regola di roll dichiarata |
| Dato societario | periodo contabile, filing originale, rettifiche e timestamp di diffusione |
Il ticker è un'etichetta, non un'identità stabile: può cambiare o essere riutilizzato. Per collegare prezzi, bilanci e corporate action servono identificatori persistenti e una mappa con validità temporale. Anche la classificazione settoriale o il paese di appartenenza possono cambiare; usare la classificazione attuale nel 2010 introduce informazione retrospettiva.
Corporate action e delisting
Split, dividendi, spin-off, fusioni, offerte, conversioni e cambi di simbolo richiedono più date: annuncio, ex-date, record date, pagamento ed efficacia. Una serie “adjusted close” ricalcolata oggi è comoda per i rendimenti, ma non sostituisce un registro causale degli eventi. Il fattore di aggiustamento deve essere applicato in modo coerente allo scopo: confrontare rendimenti totali non è la stessa cosa che simulare limiti, quantità e ordini osservabili prima dell'evento.
Il delisting non autorizza a eliminare l'ultima osservazione. Occorre conservare motivo, data, eventuale rendimento di delisting, distribuzione o valore di recupero e regola adottata quando il dato manca. Una perdita cancellata dal database rende il campione più sano di quanto fosse e si collega direttamente al survivorship bias.
Protocollo point-in-time
- Fissa il tempo decisionale. Definisci timezone, calendario, cutoff e frequenza di ogni strategia.
- Separa evento e disponibilità. Conserva
event_time,published_at,available_ateingested_atquando disponibili. - Archivia i vintage. Non sovrascrivere una revisione: aggiungi una nuova versione con inizio e fine validità.
- Usa identità persistenti. Mappa ticker e descrizioni a identificatori stabili con intervalli temporali.
- Ricostruisci l'universo. Salva membership, eleggibilità, annunci ed effettività; non partire dai superstiti odierni.
- Tratta le corporate action come eventi. Conserva termini, date e fonti, poi genera gli aggiustamenti necessari.
- Mantieni fallimenti e assenze. Delisting, sospensioni, fondi chiusi e valori mancanti fanno parte della storia.
- Modella la latenza. Aggiungi ritardo di vendor, elaborazione e successiva finestra di negoziazione.
- Rendi ripetibile la query. Il comando “mostrami ciò che era noto alle 10:00 del giorno X” deve restituire sempre lo stesso snapshot.
- Congela il dataset del test. Registra versione, checksum, trasformazioni e codice insieme ai risultati out-of-sample.
Esempio illustrativo — Una società chiude il trimestre il 31 marzo, deposita i risultati il 7 maggio alle 17:20 e li rettifica il 20 giugno. Un segnale sulla crescita trimestrale non può usare quel numero il 31 marzo; per una strategia che opera solo in chiusura, il primo utilizzo può essere la seduta successiva al 7 maggio. Per decisioni fra l'8 maggio e il 19 giugno va usato il filing originale, non la rettifica di giugno. Date e orari sono scelti soltanto per mostrare il metodo.
Controlli rapidi
| Controllo | Evidenza da conservare |
|---|---|
| La fonte aveva già pubblicato il dato? | timestamp e documento originale |
| Il sistema poteva averlo ricevuto? | log di acquisizione o ritardo dichiarato |
| Il valore è stato rivisto? | tabella dei vintage |
| Lo strumento esisteva ed era negoziabile? | intervalli di listing e stato della venue |
| Apparteneva allora all'universo? | membership con annuncio ed efficacia |
| Il rendimento include uscita o delisting? | evento terminale e metodo di valorizzazione |
| L'aggiustamento usa solo eventi già noti? | registro delle corporate action |
Limiti
Una base point-in-time riduce il look-ahead bias, ma non certifica la strategia. Dati tardivi possono essere errati; una fonte può avere copertura selettiva; la pipeline può applicare trasformazioni future; l'universo può restare incompleto. Inoltre il point-in-time non modella automaticamente ordini, liquidità, capacità o costi di transazione nel backtest. Ogni risultato resta condizionato a fonti, convenzioni e disponibilità documentate.
Fonti
- Federal Reserve Bank of St. Louis, ALFRED® e Real-Time Periods — archiviazione dei valori originariamente pubblicati, revisioni e periodi di validità informativa.
- U.S. Securities and Exchange Commission, EDGAR Application Programming Interfaces — storia dei filing, metadati e aggiornamento delle informazioni disseminate.
- Center for Research in Security Prices, CRSP Survivor-Bias-Free US Mutual Fund Database Guide — struttura storica comprendente fondi attivi e cessati.
- Tyler Shumway, The Delisting Bias in CRSP Data, The Journal of Finance, 1997 — conseguenze dell'omissione dei rendimenti di delisting.
- S&P Dow Jones Indices, Equity Indices Policies & Practices — annunci, date effettive, ribilanciamenti e trattamento delle correzioni di composizione.