Se ti interessi di trading già da un po’ di tempo avrai probabilmente sentito parlare di backtesting. In questo articolo troverai tutto quello che ti serve sapere sull’argomento: cos’è e in che cosa consiste il backtesting, cosa serve per effettuarlo, che cos'è l'ottimizzazione di un sistema e quali errori evitare.
Il backtesting è una procedura utilissima che consente di valutare l'efficacia di una strategia di trading prima di metterla a mercato, quindi prima di investirvi del denaro.
Questa procedura necessita di tre elementi fondamentali: un software con funzionalità di backtesting, una strategia codificata sottoforma di trading system e uno storico contenente i dati passati del mercato.
Il software, anche detto "piattaforma di trading", consente di simulare le performance della strategia sui dati storici del mercato e restituisce varie tipologie di report che ci aiutano a valutare il sistema. Tra questi troviamo le classiche equity curve, i grafici del drawdown e i dati numerici relativi a metriche quali net profit, average trade, numero di trade, drawdown, ecc.
La corretta interpretazione di questi report ci permette di capire se la strategia testata potrebbe rivelarsi efficace quando messa a mercato.
Il backtest può essere utilizzato per testare una strategia di trading su un singolo mercato oppure su un paniere di strumenti diversi.
La scelta della tipologia di backtest dipende ovviamente dal nostro obiettivo. Se vogliamo capire se una strategia è in grado di sfruttare le caratteristiche di uno specifico mercato opteremo per un backtest singolo. Se invece vogliamo valutare il sistema su più strumenti, effettueremo un backtest di portafoglio.
Il backtest di portafoglio può essere molto utile per confrontare le performance di una stessa strategia su più mercati. Supponiamo di aver sviluppato una strategia per le azioni: con il backtest di portafoglio potremo testarla su tutte le azioni che compongono l'indice S&P 500 invece di fare 500 test sulle singole azioni che compongono l'indice. In questo modo saremo in grado, confrontando le varie performance, di capire su quali mercati funziona meglio la nostra strategia.
Come anticipato, per fare il backtest di una strategia occorrono una piattaforma di trading, il codice della strategia e uno storico dati. Per quanto riguarda le piattaforme di trading che offrono funzionalità di backtesting, puoi fare riferimento al nostro articolo sulle migliori piattaforme per il trading sistematico.
Per il servizio di fornitura dei dati storici ti consigliamo invece di leggere questo articolo: Come scegliere il fornitore di dati (data feed) nel trading sistematico.
Ma veniamo ai passaggi veri e propri del backtest.
Prima di tutto occorre caricare una serie di dati storica all'interno della piattaforma di trading utilizzata. Per saperne di più su come scegliere le porzioni di dati storici da usare per testare le tue strategie, ti invitiamo a guardare questo video di Andrea Unger:
A questo punto occorre applicare il codice del sistema da testare alla serie storica di dati, in modo che le istruzioni contenute nella strategia vengano simulate sui movimenti passati del mercato. Se ad esempio abbiamo un sistema trend following che compra quando il mercato sale, dopo aver applicato il sistema alla serie storica di dati, sul grafico compariranno tutte le operazioni di acquisto avvenute nel periodo di riferimento.
Per eseguire il backtest della strategia bisogna impostare alcuni parametri necessari per l'esecuzione dei calcoli da parte del software. I parametri dipendono dal codice della strategia e comprendono: il periodo in cui eseguire il backtest, la finestra temporale per l'apertura e chiusura delle posizioni, la sessione del mercato a cui applichiamo il sistema, la quantità di contratti o ammontare monetario per ciascuna posizione, i filtri per gli ingressi, i livelli di uscita per stop loss o take profit, l'esposizione, ecc.
Al termine dei calcoli è possibile accedere alla sezione della piattaforma contenente i report. Qui si troveranno vari grafici, come ad esempio la curva cumulativa dei profitti, l'equity line dei trade solo long oppure solo short, e la curva del drawdown. Tra i report scritti troviamo invece le metriche complessive della strategia (guadagni, perdite, drawdown, ecc.), l'analisi dei trade (average trade, numero di operazioni, percentuale di trade profittevoli, ecc.) e la ripartizione annua o mensile dei profitti.
Alcune piattaforme di trading consentono di eseguire delle ottimizzazioni sulle strategie, ovvero simularne le performance al variare di determinati parametri per decidere quali siano i valori che restituiscono i risultati migliori.
L'ottimizzazione è chiaramente una forma di backtest in cui invece di testare la strategia con un singolo set di parametri si fanno diversi test usando dei range di valori e si confrontano le metriche risultanti (profitti, perdite, average trade, drawdown, numero di trade) per migliorare l'efficacia della strategia.
Immagina di avere una strategia trend following che apre posizioni long quando il mercato sale ma solo in presenza di un trend abbastanza forte. Una strategia di questo tipo potrebbe utilizzare un indicatore per misurare la forza del trend (per esempio l'ADX) e comprare solo quando il valore di questo indicatore supera una certa soglia.
Per trovare il valore di soglia che funziona meglio possiamo lanciare un'ottimizzazione che testa la strategia con diversi valori e scegliere quello che a nostro avviso produce le performance migliori.
Le ottimizzazioni si possono usare per determinare il valore di tutti gli input presenti in un sistema, dagli orari di inizio e fine delle operazioni al valore di stop loss e take profit.
Come avrai intuito, l'ottimizzazione di una strategia può rivelarsi estremamente utile per decidere con quali parametri andare a mercato. Tuttavia, la valutazione dei risultati delle ottimizzazioni richiede grande attenzione.
Il trading sistematico è un approccio scientifico in quanto le decisioni in merito alle strategie vengono prese sulla base di dati concreti, ovvero i risultati di backtest e ottimizzazioni. Sebbene l'uso di dati numerici permetta una certa oggettività, le decisioni prese in fase di scelta dei parametri sono fondamentalmente di tipo discrezionale e richiedono quindi buon senso e realismo.
Ottimizzare una strategia optando solo ed esclusivamente per i parametri che producono le performance migliori in assoluto può portare alla creazione di una strategia inefficace sul mercato reale.
Questo per due motivi principali. Il primo è che il backtest, come dice il nome stesso, è un test che guarda all’indietro, in cui i risultati ottenuti dipendono dai movimenti passati dei mercati. Si tratta di risultati rilevanti a livello statistico ma che ovviamente non possono garantire con assoluta certezza una replicabilità.
Non vi è infatti alcuna sicurezza che il mercato continuerà a muoversi come ha fatto in passato, quindi sistemi troppo ottimizzati sui dati passati potrebbero non essere in grado di adattarsi alle condizioni presenti e future del mercato.
Un altro motivo è che non sempre i parametri che offrono i migliori risultati sono attendibili. Se un certo parametro funziona meglio di un altro dovrebbe esserci sempre un motivo ben preciso. Da questo punto di visto è dunque bene accertarsi che non si tratti del frutto di una casualità oppure di un errore presente nello storico dei dati.
Il backtesting è una parte importante nello sviluppo di una strategia di trading di successo, a condizione che sia eseguito in maniera corretta e che i risultati vengano valutati con oggettività e buon senso.