Pratica di backtesting in termini semplici
La pratica di backtesting è il processo di valutazione di un’idea di trading (ad esempio, una regola di entrata e uscita basata su regole) eseguendola su dati storici dei prezzi. L’obiettivo è stimare cosa avrebbe potuto produrre l’idea in passato se fossero state seguite le stesse regole.
Un backtest in genere include (1) dati storici, (2) una regola o un modello che genera azioni a partire da quei dati e (3) un modo per calcolare risultati come profitto e perdita, drawdown e frequenza di win/loss. Questi calcoli si basano su assunzioni su ciò che è accaduto all’interno di ciascun periodo di tempo (ad esempio, come si sono mossi i prezzi tra i punti dati registrati) e sull’esecuzione degli ordini (ad esempio, commissioni, spread e se gli ordini sono stati eseguiti).
Perché il backtesting può essere meno utile di quanto sembri
Una limitazione fondamentale è che il backtest è una simulazione del passato, non un’osservazione del futuro. Anche quando gli esiti storici sembrano forti, le relazioni apprese dalla storia potrebbero non ripetersi in nuove condizioni di mercato. Le limitazioni seguenti spiegano modalità di fallimento comuni.
1) Lacune nei dati storici e nella microstruttura del mercato
La maggior parte dei backtest usa barre o tick di prezzo registrati, ma il trading reale coinvolge più dettagli di quelli che molti dataset riescono a catturare. Se i tuoi dati storici sono incompleti, sono stati aggiustati in modo da cambiare il significato del prezzo o mancano delle informazioni necessarie per modellare l’esecuzione degli ordini, il backtest potrebbe discostarsi da ciò che accadrebbe nel trading live.
Inoltre, la mappatura dai prezzi registrati alle possibili esecuzioni è incerta. Ad esempio, se una regola assume un’esecuzione a un livello di prezzo specifico, ma il mercato reale potrebbe essere andato oltre quel livello prima che un ordine potesse essere eseguito, la simulazione diventa ottimistica.
2) Assunzioni su costi, qualità dell’esecuzione e slippage
Anche se la logica della strategia è corretta, i risultati dipendono fortemente dalle assunzioni su costi di transazione ed esecuzione. I backtest a volte usano modelli di costo semplificati (ad esempio, spread costanti o nessuno slippage) oppure assumono un’esecuzione perfetta degli ordini. Nella pratica, gli spread si allargano, la liquidità cambia e lo slippage può variare con la volatilità e l’orario del giorno.
Poiché piccole differenze di costo possono sommarsi su molte operazioni, un backtest che ignora o sottostima questi effetti può sopravvalutare le performance.
3) Overfitting e data-snooping
Il backtesting può involontariamente “adattare” il rumore di un dataset specifico. Questo accade quando si provano molti parametri e si selezionano quelli che migliorano i risultati passati. Più cerchi una combinazione che sembri funzionare bene sugli stessi dati, maggiore è la probabilità che il presunto vantaggio sia specifico di quel periodo piuttosto che una proprietà generale del mercato.
Un problema correlato è il data-snooping: testare ripetutamente molte varianti finché una non sembra funzionare bene. Senza una separazione accurata tra periodi di training e di testing, risultati forti del passato potrebbero non riflettere un meccanismo ripetibile.
4) Mercati non stazionari e condizioni che cambiano
I mercati non sono sistemi stabili. I regimi di volatilità cambiano, la partecipazione si sposta e la liquidità può muoversi. Una regola che ha funzionato in un determinato contesto potrebbe comportarsi in modo diverso quando cambiano spread, volatilità o correlazioni.
Anche senza eventi regolamentari o strutturali, le proprietà statistiche delle serie storiche dei prezzi possono subire drift. Ciò significa che le assunzioni che erano implicitamente “incorporate” nel periodo che hai testato potrebbero non valere più.
5) Definizione ambigua di ciò che viene testato esattamente
I backtest possono essere difficili da confrontare perché gli input e le regole differiscono. Per qualsiasi esempio, dovresti essere in grado di dichiarare:
- Quale frequenza dei dati è stata usata (ad esempio, barre vs. tick).
- Come sono stati calcolati indicatori o feature e se usavano solo informazioni disponibili al momento.
- Come sono state decise entrate e uscite e come sono state modellate le esecuzioni degli ordini.
Se uno qualsiasi di questi dettagli non è chiaro, il backtest potrebbe non testare l’idea prevista; potrebbe invece testare un artefatto dell’implementazione scelta.
Verifica che può migliorare l’affidabilità
Non puoi far sì che un backtest “dimostri” che una strategia funzionerà, ma puoi controllare se i risultati sono probabilmente robusti.
Un approccio pratico alla verifica consiste nel definire esplicitamente le assunzioni e testare la sensibilità. Ad esempio, varia i parametri dei costi entro intervalli ragionevoli oppure usa periodi storici diversi con condizioni di mercato differenti. In modo separato, usa il testing out-of-sample: valuta le regole su dati non usati per la selezione dei parametri.
DOCUMENT END