A chi serve — Chiunque faccia ML o backtest su serie temporali. Il leakage è l'errore silenzioso che trasforma un modello «perfetto» in perdita live.
Il data leakage (perdita / contaminazione di dati) avviene quando informazione non disponibile al momento della decisione entra in feature, target o preprocessing — look-ahead bias, shuffle su time series, normalizzazione su tutto il dataset, join con dati revisionati a posteriori.
In parole semplici — Il modello «barare» guardando le risposte dell'esame prima di rispondere — in paper va benissimo, in live no.
Forme frequenti
| Tipo | Esempio |
|---|---|
| Look-ahead | Feature che usa close della barra corrente per entrare a open |
| Target leakage | Target costruito con dati post-evento non noti in t |
| Preprocessing globale | StandardScaler fit su train+test insieme |
| Survivorship | Universo titoli solo quelli ancora quotati oggi |
| Revisioni | Macro «final» invece del primo print |
In finanza il tempo è causale: split devono rispettare l'ordine cronologico (out-of-sample).
Prevenzione
- Feature calcolate con lag espliciti; entry su open della barra successiva
- Walk-forward e purge tra fold adiacenti
- Audit pipeline: «cosa sapevo in t?»
- Confronto con baseline naive — se il salto è enorme, sospetta leakage
Errore tipico — `train_test_split` random su OHLCV — mescola futuro e passato, metriche irrealistiche.
Esempio — Modello predice gap up: feature include `high - open` della stessa barra in cui entri a open → leakage, accuracy 90%+, live inutile.
Scheda
- Regola: nessun dato da t+1 in decisione a t.
- Test: shift feature di 1 barra — performance crolla? leakage probabile.
- Leggi: Overfitting spesso maschera leakage.