Il backtesting come prova
Passare al setaccio 253 regole ordinarie di medie mobili sulle sessanta chiusure di questo corso fa uscire un vincitore che rende 9,84 dollari per azione al netto dei costi, contro 5,68 del tenere, su 7 operazioni, con una statistica t di 3,65. Ora rimescola quegli stessi sessanta movimenti da candela a candela in modo che non sopravviva alcuna struttura temporale, tieni deriva e volatilità esattamente come stavano, e rilancia identica la stessa ricerca. Sul 52,5 per cento di quelle serie senza struttura la regola migliore batte il tenere di almeno quanto ha fatto quella vera, e sul 77,2 per cento lo batte del tutto. Il risultato sta sotto la mediana di ciò che produce un mercato che non contiene niente. Un backtest di una regola è una misura; un backtest della migliore di 253 è una misura della ricerca.
Prerequisiti: Lezione 62, per la frase in quattro parti in cui una regola va scritta prima di poter essere messa alla prova, la lezione 19, per quello che sette operazioni possono e non possono reggere, e la lezione 11, per il costo di andata e ritorno che questa pagina sottrae da ogni numero che ci sta sopra.
La tesi, detta come la si intende davvero
Le ragioni a favore del backtesting sono buone e meritano di essere enunciate per bene prima di farci qualunque cosa. Una regola è un insieme di istruzioni. Lo storico è un registro di ciò che i prezzi hanno fatto. Si possono quindi far girare le istruzioni sul registro e scoprire quanto avrebbe reso la regola, il che è una prova ingegneristica ordinaria e non una superstizione. Se ha perso, l’hai imparato a poco prezzo. Se ha vinto, hai almeno stabilito che l’idea non è manifestamente vuota. Nessuno di sensato sostiene che un backtest preveda il futuro. La tesi è più stretta e suona inattaccabile: un backtest ti dice se la regola ha funzionato.
Ecco che cosa ti dice davvero, su dati che questo corso ha già stampato. Prendi le sessanta chiusure e una famiglia di regole: lungo quando una media mobile veloce delle chiusure incrocia sopra una lenta, fuori quando torna a incrociare sotto. Lunghezze veloci da 2 a 12, lente da 3 a 30, la lenta sempre più lunga della veloce. Sono 253 configurazioni, che con qualunque metro è una ricerca piccola, e ognuna di esse è una regola che una persona ragionevole avrebbe potuto proporre.
La convenzione di esecuzione pesa più di quanto sembri, perciò sta sulla pagina. Un incrocio è visibile solo dopo che una candela ha chiuso, quindi il segnale si legge alla chiusura della candela i e l’operazione si fa alla chiusura della candela i più uno. Eseguire sulla candela stessa del segnale è l’anticipazione che fa funzionare metà dei backtest di internet, e qui vale circa un terzo del vantaggio apparente. I costi sono un centesimo di spread, cinque punti base di slippage per lato su un prezzo vicino a 103 e mezzo centesimo per azione di commissione, che fa 0,1230 per azione per un andata e ritorno. Qualunque posizione ancora aperta sull’ultima candela viene chiusa lì.
Fai girare tutte e 253 e la migliore è una media veloce a 2 candele contro una lenta a 5. Prende 7 operazioni e rende 10,70 per azione lordo, 9,84 al netto dei costi, contro 5,68 del comprare alla prima chiusura e vendere all’ultima. La sua percentuale di successo è 6 su 7, la sua operazione media vale 0,910 di una deviazione standard di candela, e la statistica t sul suo stesso registro operazioni è 3,65. Ognuno di quei numeri è del tipo che fa finanziare una strategia.
Che cosa trova la stessa ricerca in un mercato che non contiene niente
La prova costa poco. Prendi i 59 movimenti da candela a candela che compongono questa serie, estraine 59 a caso con reimmissione e mettili in fila a partire dallo stesso prezzo iniziale. Il risultato ha la stessa deriva e la stessa volatilità dell’originale, costruito letteralmente con gli stessi movimenti, e nessuna struttura temporale: niente al suo interno può essere sfruttato da una regola che dipende dall’ordine di qualcosa, perché l’ordine è stato distrutto. Fallo 4.000 volte dal seme 20260903 e fai girare su ciascuna la stessa ricerca a 253 celle.
| Misura | Valore |
|---|---|
| Migliore di 253, lordo | 10,70 |
| Migliore di 253, al netto dei costi | 9,84 |
| Comprare e tenere, al netto dei costi | 5,68 |
| Vantaggio sul tenere | 4,16 |
| Serie senza struttura la cui cella migliore batte il tenere | 0,772 |
| Serie senza struttura che superano il vantaggio vero | 0,525 |
Sul 77,2 per cento delle serie senza alcuna struttura dentro, la migliore delle 253 regole batte il comprare e tenere. Sul 52,5 per cento lo batte di almeno i 4,16 che ha trovato la ricerca vera. Il risultato misurato non è soltanto poco impressionante rispetto a quella distribuzione: sta sotto la sua mediana. Qualunque cosa la ricerca abbia trovato sulle chiusure vere, una ricerca della stessa dimensione trova più di quello, più di una volta su due, in dati che non contengono niente da trovare.
Nota che cosa questo non dice. Non dice che la regola sia cattiva, e non dice che la serie non abbia struttura. Dice che il numero 9,84 è stato prodotto da una procedura che produce numeri come 9,84 comunque, quindi il numero non può servire da prova sul mercato. È un’affermazione sulla misura, ed è il motivo per cui quasi nessuno contro cui operi ha mai verificato la propria: la verifica costa una sera e un ciclo di ricampionamento, e può soltanto toglierti un risultato.
Due colonne vanno sul foglio che questo modulo ha aperto nella lezione 62, accanto alla frase. Quanto ha reso il backtest, qui 4,16 sopra il riferimento. E quanto ha reso la stessa ricerca su dati che non contengono niente, qui 4,16 o meglio nel 52,5 per cento dei tentativi. Una riga la cui seconda colonna non sia comodamente maggiore della terza non ha guadagnato nulla, e la coppia vale più di ciascuna delle due cifre da sola, perché nessuna delle due significa granché senza l’altra.
Le due sottrazioni che vengono prima
Prima i costi, perché sono l’unica parte certa di tutto questo. Un andata e ritorno costa qui 0,1230 per azione, e una deviazione standard di candela su questa serie è 1,5443, quindi un andata e ritorno vale 0,0796 di un R. Sembra poco finché non lo si moltiplica. La regola vincente prende 7 operazioni e paga perciò 0,557R di costi; il tenere ne prende una e paga 0,0796R. La regola che opera spesso parte con mezzo R di ritardo prima che una delle due abbia ragione su qualcosa, e lo stesso costo vale 0,0398R contro uno stop a due sigma e 0,1593R contro uno a mezzo sigma, perché il costo è fissato in centesimi e l’R no.
Poi il riferimento, ed è la sottrazione che quasi sempre manca. La cella migliore ha fatto 9,84. Il tenere ha fatto 5,68. Il contributo della regola non è 9,84, è 4,16, perché la serie è salita e qualunque regola che passi tempo lunga raccoglie quella salita, che abbia capito qualcosa oppure no. Un backtest che riporta la curva di capitale della strategia e mai quella del riferimento ha nascosto il maggiore dei due numeri.
La riga che il test a campione diviso non può vedere
La difesa consueta contro tutto questo è il test fuori campione, e vale davvero la pena, quindi facciamolo qui. Ottimizza solo sulle prime trenta chiusure. La cella migliore su quella finestra è di nuovo la coppia 2 e 5, che fa 5,53 netti su 3 operazioni, su un tratto in cui il comprare e tenere ha perso 0,82. Sembra una regola che trova qualcosa in un mercato che non offriva niente. Congela i parametri, non toccare nulla e falli girare sulle ultime trenta chiusure.
| Finestra | Regola migliore, netto | Comprare e tenere, netto | Operazioni |
|---|---|---|---|
| Candele da 1 a 30, ottimizzato qui | 5,53 | -0,82 | 3 |
| Candele da 31 a 60, parametri congelati | 4,29 | 6,88 | 5 |
Passa. La performance è scesa da 5,53 a 4,29, un degrado del 22 per cento, e ogni lista di controllo del settore considera qualunque cosa sotto il 30 per cento come promosso. La regola non era sovradattata nel senso che intende la lista: ha davvero continuato a funzionare su dati che non aveva mai visto.
E su quelle stesse candele mai viste, non fare niente ha reso 6,88. La regola validata ha perso contro il riferimento di 2,59 proprio sulla finestra che doveva darle ragione, e il test fuori campione non poteva segnalarlo, perché al suo interno non c’è alcun riferimento da nessuna parte. Il test chiede se un risultato si ripete. Non chiede mai se il risultato valesse la pena.
Le stesse sessanta chiusure, a quattro livelli di onestà
Niente di quel che segue cambia i dati o la regola. L’incrocio 2 e 5 è la stessa regola a ogni livello, fatta girare sulle stesse sessanta chiusure. Cambia solo ciò contro cui viene misurata, e ogni livello è quello in cui la maggior parte dei backtest si ferma.
Fermati al primo livello e la regola ha fatto 10,70 per azione su 7 operazioni con 6 vincenti. Fermati al secondo e i costi la portano a 9,84, che è un taglio dell’8 per cento e dà una sensazione di diligenza, perché una pagina che sottrae i costi sembra scrupolosa. Fermati al terzo e il riferimento la porta a 4,16, che la taglia di nuovo per più di metà, e a quel punto si è già andati più in là della maggior parte dei backtest pubblicati.
Il quarto livello è quello che cambia il verdetto e non la dimensione. Riestrai i movimenti, rilancia la ricerca, e il 52,5 per cento delle serie senza struttura produce una cella migliore che batte il tenere di 4,16 o più. La statistica t di 3,65 della regola stessa non è sbagliata: risponde a un’altra domanda. Misura quanto sicuramente le 7 operazioni di quella cella si scostino da zero, e non ha modo di sapere che altre 252 celle hanno fatto il provino e sono state scartate. La statistica t si calcola dentro il vincitore. La ricerca è avvenuta fuori.
Un backtest misura la ricerca che hai lanciato, non il mercato su cui l’hai lanciata.
Quel che sopravvive è più di quanto sembri. Un backtest continua a uccidere regole, a poco prezzo e per sempre: una regola che perde dentro campione, prima dei costi, è morta, e scoprirlo in un pomeriggio è il grosso di ciò a cui serve la tecnica. Quel che non può fare da sola è promuoverne una. La promozione richiede il riferimento, i costi e la distribuzione nulla ricampionata, e la nulla è un ciclo di codice.
Quindi stasera fai girare tutti e quattro i livelli sulla tua regola, in quest’ordine, e fermati al primo che ti porta via il risultato.
Ciò che questo non risolve
Che il backtesting non funzioni. La pagina ha testato una famiglia di regole su una serie di sessanta candele con una ricerca a 253 celle, mentre un programma vero gira su migliaia di candele e molti strumenti, dove il rumore campionario che questa pagina sta sfruttando è molto più piccolo. L’argomento sull’inflazione da ricerca non dipende dalla dimensione né dell’una né dell’altro, ma il 52,5 per cento preciso sì, e su una serie più lunga la stessa ricerca fabbricherebbe un vantaggio proporzionalmente minore. Niente qui mostra che la tecnica sia inutile: mostra che cosa deve sopravvivere un risultato prima di significare qualcosa.
Che il test per ricampionamento sia la distribuzione nulla giusta. Estrarre movimenti con reimmissione distrugge tutta la struttura temporale in una volta, il che ne fa un test di se la regola sfrutti l’ordine, e nient’altro. Distrugge anche il raggruppamento della volatilità, che è reale e che una regola di incrocio può davvero operare, quindi sotto quell’aspetto la nulla è troppo facile da battere e la frazione vera sta più sopra del 52,5 per cento che sotto. Un bootstrap a blocchi conserverebbe parte di quella struttura ed è il passo onesto successivo; questa pagina non ne lancia uno.
Che i costi siano i tuoi. Un centesimo di spread e cinque punti base di slippage descrivono uno strumento liquido a dimensione piccola. Su qualcosa di più largo sono gravemente ottimisti, e su una grande capitalizzazione profonda a cento azioni sono pessimisti. Ogni cifra di questa pagina si muove con quell’ipotesi, e la regola da 7 operazioni si muove circa sette volte più in fretta del riferimento, che è la direzione che favorisce il tenere.
Che comprare e tenere sia il riferimento giusto. Lo è qui perché la regola è solo lunga su una serie che sale, ed è quello sbagliato per una regola che va corta, o per un tratto che è sceso. Su una serie che scende ogni regola solo lunga appare mediocre rispetto al tenere per un motivo che con la regola non c’entra niente, e scegliersi un riferimento che ti favorisce è lo stesso errore che scegliersi una finestra che lo faccia. Il riferimento va scelto prima della prova, e questa pagina l’ha scelto dopo, perché la serie era già scritta.
Che il risultato a campione diviso si generalizzi. Trenta candele per metà sono decisamente troppo poche, la finestra dentro campione contiene 3 operazioni e quella fuori 5, e con campioni così piccoli la cifra del 22 per cento di degrado non porta quasi nessuna informazione. Il rilievo che sostiene non è che i test fuori campione promuovano di solito regole cattive; è quello più stretto e più solido che possono promuovere una regola che perde contro il riferimento, perché al loro interno non contengono alcun riferimento. Quel difetto è strutturale e non dipende affatto dalla dimensione del campione.
E la concessione che costa di più: questa pagina ti dice di sottrarre ciò che la ricerca avrebbe prodotto, e non dà alcun modo di farlo per la ricerca che hai davvero lanciato. Le 253 celle sono contabili perché sono state programmate. Le regole che hai guardato su un grafico e abbandonato, il parametro che hai spostato due volte e rimesso a posto, lo strumento che hai provato per primo e lasciato perdere perché era brutto — anche quelle sono configurazioni, non sono registrate, e sono quasi sicuramente più numerose di 253. La correzione di questa pagina è calcolabile solo per la parte della ricerca che è stata abbastanza onesta da finire scritta. La lezione 64 affronta quel problema di petto e trova che l’inflazione è prevedibile in anticipo dal solo conteggio: per una ricerca su 15.000 configurazioni e 156 operazioni, la cella migliore mostra 0,351R di vantaggio prima che il mercato abbia fatto alcunché.
Esercizi
- Metti un prezzo a un andata e ritorno in R. Prendi lo spread del tuo strumento, la commissione del tuo broker e una cifra di slippage che difenderesti, sommale per un andata e ritorno e dividi per una deviazione standard di candela sul time frame che operi. Dieci minuti, e finisci con un numero, il costo di un’operazione in R, che è l’importo che ogni backtest che tu abbia mai letto ha lasciato fuori.
- Metti il riferimento accanto alla tua regola. Prendi una regola che già operi o a cui già credi, falla girare su duecento candele al netto del costo che hai appena calcolato, e sulle stesse duecento candele calcola quanto avrebbe reso comprare alla prima chiusura e vendere all’ultima. Mezz’ora, e finisci con un numero, la distanza fra i due, che è l’unica parte della tua curva di capitale di cui la regola è responsabile.
- Lancia la distribuzione nulla. Prendi le variazioni da candela a candela di quelle stesse duecento candele, estraine duecento a caso con reimmissione, mettile in fila e rilancia tutta la tua ricerca sulla serie sintetica. Fallo mille volte con un seme che scrivi, e conta quante volte il risultato migliore batte il riferimento di almeno quanto ha trovato la tua ricerca vera. Una sera, e finisci con un numero, la frazione, che è la probabilità che un mercato che non contiene niente ti avrebbe consegnato quello che hai trovato.
Fonti. Halbert White, «A Reality Check for Data Snooping» (Econometrica, 2000), per la procedura bootstrap che questa lezione esegue in miniatura, e per l’argomento che è la distribuzione della regola migliore, non quella di una regola, quella contro cui va giudicata una ricerca. Ryan Sullivan, Allan Timmermann e Halbert White, «Data-Snooping, Technical Trading Rule Performance, and the Bootstrap» (The Journal of Finance, 1999), per lo stesso esperimento condotto a piena scala su un secolo di dati giornalieri e migliaia di regole, che è lo studio di cui questa pagina è un’imitazione a sessanta candele. David H. Bailey, Jonathan M. Borwein, Marcos López de Prado e Qiji Jim Zhu, «Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance» (Notices of the American Mathematical Society, 2014), per il risultato che il numero di configurazioni provate basta da solo a prevedere quanto vantaggio apparente salti fuori, che è proprio ciò che calcola la lezione successiva. Bradley Efron, «Bootstrap Methods: Another Look at the Jackknife» (The Annals of Statistics, 1979), per il metodo di ricampionamento con cui è costruita la distribuzione nulla di questa lezione.
Che cosa dovrebbe succedere
La frase in quattro parti in cui una regola va scritta prima di poter essere messa alla prova.
Leggi la lezione →Quanto tempo prima di saperlo
Quello che sette operazioni e una statistica t di 3,65 possono e non possono reggere.
Leggi la lezione →Slippage e impatto a size retail
Il costo di andata e ritorno che questa lezione sottrae da ogni numero della pagina.
Leggi la lezione →Solo a scopo educativo. Il trading comporta un rischio sostanziale di perdita. Non è una consulenza finanziaria. I risultati passati non garantiscono risultati futuri.
💬 Discussione (0 commenti)
Caricamento dei commenti…
Pronto a operare con Signal Pilot?
Metti in pratica la tua formazione con indicatori professionali e strumenti di analisi di mercato in tempo reale.
Torna a Signal Pilot →