Come si può backtestare lo SMA in modo responsabile?
Definire lo SMA e cosa esattamente si sta testando
Il backtest della Media Mobile Semplice (SMA) verifica una regola che trasforma i dati dei prezzi in una media calcolata, per poi valutare il comportamento di una regola decisionale scelta quando tale media è disponibile. Anche se non trasformi lo SMA in un “segnale di trading”, devi comunque specificare la meccanica che stai valutando: la formula dello SMA, il timeframe e la frequenza di campionamento (ad esempio, chiusure giornaliere rispetto a barre intraday).
Una definizione responsabile parte da assunzioni esplicite. Esempi di assunzioni da rendere chiare sono: quale serie di prezzi si utilizza (chiusura, prezzo tipico o altra definizione), cosa significa “barra” nel tuo dataset e cosa rappresenta la lunghezza della finestra dello SMA in quell’unità temporale. Se successivamente modifichi una di queste scelte, non stai più testando la stessa idea.
Utilizzare regole sui dati coerenti con le decisioni effettive
I backtest diventano poco affidabili quando il dataset include informazioni che non sarebbero state disponibili al momento della decisione. Un errore comune è il bias da anticipazione (look-ahead bias): utilizzare prezzi o valori calcolati che includono implicitamente dati futuri. Per lo SMA, di solito si desidera che il valore dello SMA al tempo t sia calcolato solo con dati disponibili fino a t (o fino a t-1 se si assume che la decisione avvenga all’apertura della barra).
Controlla anche la coerenza dei dati. Se ricampioni, interpoli, aggiusti per eventi societari (dove applicabile) o unisci più fonti, i risultati del backtest possono cambiare. Una pratica responsabile consiste nel definire una singola pipeline di preprocessing e mantenerla fissa in tutti gli esperimenti.
Includere costi, slippage e ipotesi di esecuzione
Anche nei backtest a scopo didattico, dovresti modellare costi e ipotesi di esecuzione, perché spesso sono determinanti nei risultati. I fattori variabili includono spread/fee, commissioni, slippage e la differenza tra i prezzi delle barre osservati e il prezzo effettivamente ottenibile.
Specifica ipotesi come: come tradurre il timing basato sullo SMA in un orario di esecuzione (fine della barra rispetto alla barra successiva), se assumi che gli scambi avvengano a prezzi bid/ask o a prezzi di medio, e come gestisci i riempimenti parziali. Se non includi i costi, il ranking tra le diverse varianti può essere fuorviante, poiché piccoli cambiamenti nel timing possono sembrare redditizi solo in un mondo senza attriti.
Controllare l’overfitting con verifiche di bias e test fuori campione
Un backtest responsabile non è semplicemente “esegui una volta e guarda i rendimenti”. Hai bisogno di controlli contro i bias che separino l’esplorazione dalla valutazione.
Inizia con una suddivisione bloccata o ordinata nel tempo: utilizza un periodo iniziale per scegliere i parametri (ad esempio, la lunghezza della finestra dello SMA o altre soglie di regole da abbinare allo SMA), quindi mantieni un periodo successivo completamente intatto per la valutazione. Se testi molti valori di parametri e selezioni il migliore basandoti sui dati che poi utilizzi per la valutazione, il backtest può sovrastimare le prestazioni.
Aggiungi quindi verifiche fuori campione che riflettano l’incertezza reale. Ad esempio:
- Ripeti il processo con più finestre di test non sovrapposte (rolling forward).
- Prova test di robustezza in cui alteri leggermente il dataset (ad esempio, piccoli cambiamenti nella frequenza di campionamento) e verifica se le conclusioni crollano.
- Utilizza concettualmente valutazioni consapevoli del regime (ad esempio, confronta il comportamento durante condizioni di trend rispetto a condizioni di range), ma mantieni sempre le stesse regole sui dati e la logica delle finestre di valutazione.
Testare limitazioni e modi di fallimento, non solo i risultati principali
Le relazioni storiche non garantiscono risultati futuri. Nei backtest basati sullo SMA, limitazioni e modi di fallimento significativi includono spesso:
- Cambiamento di regime: lo SMA funziona in modo diverso quando i mercati sono in trend rispetto a quando tendono al mean-reversion.
- Sensibilità ai parametri: le conclusioni possono dipendere da una specifica lunghezza della finestra che casualmente si adatta al campione scelto.
- Qualità dei dati: barre mancanti, storie diverse dei simboli o definizioni di prezzo inconsistenti possono alterare lo SMA calcolato.
- Mismatch nell’esecuzione: backtest che assumono riempimenti ideali possono sovrastimare ciò che le regole di timing raggiungerebbero in pratica.
Per rendere concreti questi limiti, definisci cosa “fallimento” significhi nelle tue metriche di valutazione. Piuttosto che affidarti a un singolo numero, osserva come i risultati cambiano quando i costi aumentano, quando le ipotesi di slippage peggiorano e quando passi da una finestra di test all’altra.
Verifica e prossima domanda: cosa dovresti validare in modo indipendente?
Per verificare responsabilmente il tuo backtest, trattalo come un esperimento riproducibile.
Prima di tutto, ricalcola indipendentemente la serie SMA e conferma che i valori dello SMA corrispondano alla tua implementazione per un piccolo campione in cui puoi verificare manualmente la finestra mobile.