Data leakage

Informazione futura che entra nel training — backtest gonfiato, modelli che falliscono in produzione.

In questa pagina

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.

Collegamenti