Overfitting: come mentirsi con stile — e il protocollo per non farlo

L'overfitting è questo: scambiare la memoria per la comprensione. Un backtest ottimizzato ha memorizzato il passato — incluso il suo rumore — e la curva equity liscia che vi mostra non è una previsione: è un ricordo. Il mercato futuro non ha alcun obbligo di somigliare al rumore del passato, e infatti non lo fa.

La ragione per cui l'overfitting è la causa di morte numero uno dei sistemi retail non è l'ignoranza: è l'incentivo. Ogni ora di "ottimizzazione" produce una curva più bella, una dopamina immediata, un senso di progresso. La verifica onesta produce quasi sempre la notizia opposta. I tester visuali delle piattaforme, con la loro griglia di parametri e la classifica dei risultati, sono macchine per l'overfitting vendute come strumenti di ricerca. Servono difese strutturali, non buona volontà.

Le cinque porte dell'autoinganno

1 · Il grid search sui parametri

Con 6 parametri e 10 valori ciascuno avete un milione di combinazioni: qualcuna sarà spettacolare per puro caso, garantito dalla combinatoria. Il test: se il vicino di casa della vostra combinazione ottima (Displacement 475 → 450) dimezza il profitto, non avete trovato un edge — avete trovato un picco di rumore. Gli edge veri vivono su altipiani di parametri, non su guglie.

2 · Il multiple testing silenzioso

Cento idee testate, una "funziona" con significatività al 99%? Su cento test, un falso positivo all'1% è l'esito atteso. Il numero di tentativi fa parte del risultato, e nessun report di backtest lo mostra. Tenete il conto delle idee morte: è un dato.

3 · Il look-ahead

Usare, anche di sfuggita, informazione che al momento della decisione non esisteva: la candela non ancora chiusa, il massimo di giornata, dati ricampionati male. È l'errore più subdolo perché produce backtest meravigliosi — il futuro è un ottimo predittore di sé stesso — e sistemi live che muoiono al primo giorno. La difesa è strutturale, nella pipeline: ogni feature vincolata per costruzione alla barra chiusa.

4 · Il survivorship del setup

Testate la strategia sull'asset dove "sapete che funziona" — che è l'asset dove l'avete vista funzionare, cioè un campione già selezionato dall'esito.

5 · I costi di cortesia

Spread fisso ottimista, zero slippage, zero swap. Su un profit factor 1,18, la sola differenza tra spread medio e spread reale in orari sottili può decidere il segno del sistema.

Il caso in casa: l'overfitting senza ottimizzazione

Esiste una variante più insidiosa che non richiede nemmeno l'ottimizzazione: fissare nel sistema le condizioni del mondo in cui l'avete costruito. È il mio errore più istruttivo, e ve lo racconto contro il mio interesse.

Il mio EA sull'oro, Kimera, usava soglie assolute: Displacement 475 punti, SLBuffer 690 punti — scelte quando l'oro quotava 1.600–2.000 $. A quei livelli, 475 punti erano un impulso raro e significativo: 12–61 trade l'anno, selettività alta. Poi l'oro è salito fino a 4.500. A parità di volatilità relativa, l'escursione media in punti si è quasi triplicata — e la mia soglia, ferma lì, è passata dal selezionare eventi eccezionali al suonare per il rumore quotidiano: 170 trade nel 2025, 251 nel 2026. Il sistema che avevo validato non esisteva più; al suo posto girava un omonimo iperattivo, mai testato da nessuno. Il drawdown peggiore della sua storia è arrivato proprio nel periodo di massima frequenza.

La natura dell'errore: nessun grid search, nessun trucco. Solo unità di misura sbagliate. La cura vale per ogni parametro di ogni sistema: le soglie devono essere espresse in unità che si muovono col mercato — multipli di ATR, percentuali del prezzo, quantili della distribuzione recente — mai in punti, pip o dollari assoluti. E un corollario da monitoraggio: un sistema che cambia ritmo è un sistema che sta cambiando natura, anche se l'equity ancora non lo mostra.

Il protocollo minimo di difesa

In-sample / out-of-sample, con voto unico

Si sviluppa e ottimizza solo sulla prima parte dei dati; l'ultima parte (nel mio standard: i 6 mesi finali) resta sigillata e si usa una volta, alla fine, come verdetto. Usarla dieci volte "per controllare" la trasforma in in-sample con cerimonia. Criterio di lettura: non pretendo che l'OOS eguagli l'IS; pretendo che non cambi verdetto.

Robustezza al posto dell'ottimo

Dopo ogni ottimizzazione, perturbate: ogni parametro ±10–20%, spread peggiorato, esecuzione ritardata di una barra. Se il sistema regge dignitosamente, avete un altipiano; se crolla, avete una guglia di rumore con il vostro nome sopra.

Walk-forward

Ottimizzare su una finestra mobile, validare sulla successiva, avanzare, ripetere. Misura l'unica cosa che conta in produzione: la procedura di ricalibrazione regge nel tempo?

Le tre difese strutturali (dalla letteratura quantitativa seria)

  1. Derivare i parametri da un modello del processo invece che dalla ricerca esaustiva, dove possibile: un parametro calcolato non può essere overfittato dalla griglia.
  2. Triple barrier: etichettare gli esiti con stop, target e tempo massimo in unità di ATR invece che con orizzonti fissi.
  3. Validare su scenari sintetici — bootstrap a blocchi, ricampionamenti, dati generati — perché il vostro storico è una traiettoria sola, e il sistema deve sopravvivere alla famiglia di mondi possibili, non al singolo mondo osservato.

La domanda finale

Tutte le difese di questo articolo sono forme diverse della stessa domanda: "perché questo dovrebbe continuare a funzionare?". L'overfitting, in ultima analisi, è la risposta sbagliata: "perché ha funzionato". Un sistema merita soldi veri solo se la risposta è una fonte di edge identificabile — strutturale, comportamentale, di premio al rischio — più un processo di verifica che ha provato seriamente a ucciderlo e non c'è riuscito.

Cosa succede quando entrambe le metà mancano, su un sistema con numeri pubblici da sogno: Anatomia di un inganno: il mio +641%.