I termini utilizzati dai venditori di strategie, definiti in modo chiaro — e ciò che abbiamo effettivamente riscontrato quando li abbiamo testati su oltre 1.000 strategie e oltre 1.700 indicatori. Nessun gergo fine a se stesso. Ogni termine rimanda al risultato ad esso correlato, laddove disponibile.
Come una strategia non supera la nostra verifica
Nessun vantaggio reale (nessun vantaggio lordo)
Una strategia presenta un vantaggio quando le sue regole superano un ingresso casuale (tipo lancio di moneta) sugli stessi bar, prima che venga detratto anche un solo centesimo di costo. L’assenza di un vantaggio lordo significa che il segnale non ha mai previsto nulla. Gli ingressi erano rumore mascherato da logica. Questo è il motivo più comune per cui rifiutiamo una strategia, ed è il risultato che le persone si aspettano meno. Quasi la metà di tutto ciò che scartiamo fallisce proprio qui, prima ancora che lo slippage, lo spread o le commissioni entrino nei calcoli. Si dice comunemente che siano i costi a uccidere le strategie. Ma nella maggior parte dei casi non ne hanno nemmeno la possibilità. La maggior parte dei sistemi scartati non è mai stata davvero operativa. Quando si riduce la curva del capitale proprio al semplice fatto che la regola abbia effettivamente previsto la mossa successiva, la risposta è solitamente no.
La strategia ha generato profitti perché il mercato ha registrato un andamento al rialzo proprio mentre si era in posizione lunga. Questo è il beta, l’esposizione al mercato, spacciata per abilità. Una strategia «buy-and-hold» avrebbe ottenuto risultati pari o migliori, con meno regole da infrangere. È un fenomeno che si riscontra costantemente nei sistemi «long-only» sottoposti a backtest su un decennio rialzista. Nella nostra analisi, il trend-beta è il secondo motivo più comune per cui scartiamo una strategia, secondo solo alla totale assenza di un vantaggio competitivo. Il test è diretto: confrontare il sistema con il semplice possesso dello strumento nello stesso periodo. Se una posizione passiva eguaglia la curva, le regole non hanno aggiunto nulla. Un mercato in rialzo favorisce quasi tutte le strategie long. Il nostro compito è eliminare la deriva e vedere cosa rimane, se rimane qualcosa.
Quasi tutto il profitto è derivato da un numero esiguo di giorni anomali. Se si eliminano i giorni migliori, la curva si appiattisce o diventa negativa. La strategia non ha avuto un vantaggio nel tempo; ha semplicemente colto qualche jackpot e ha cavalcato l’onda. Lo verifichiamo rimuovendo la fascia superiore dei giorni vincenti e rieseguendo il test. Un vero vantaggio sopravvive anche perdendo il suo miglior 10%. Un biglietto della lotteria no. Il profitto concentrato nella coda è il nostro terzo motivo di rifiuto più comune, ed è il più seducente, perché il rendimento apparente sembra spettacolare. Il problema è che non è possibile programmare quei giorni e, nella realtà, di solito si perdono quelli più importanti a causa di un gap, di un’interruzione o di un’esecuzione non ottimale. Una curva che si basa su cinque candele verdi non è un sistema.
La strategia presentava un vantaggio reale sulla carta, ma poi lo spread effettivo, le commissioni e lo slippage l’hanno completamente annullato. Positivo al lordo, negativo al netto. Questo è il fallimento che tutti si aspettano sia quello più grave. Ma non lo è. Il "cost-fatal" è solo la nostra quarta causa più comune di rifiuto. La storia più chiacchierata, secondo cui i costi di trading uccidono silenziosamente i sistemi validi, è vera ma esagerata. Molte più strategie non avevano alcun vantaggio da perdere fin dall’inizio. Quando i costi sono il fattore determinante, il motivo è solitamente l’orizzonte temporale: più breve è la barra, più lo spread conta. Le strategie FX con intervalli inferiori ai 15 minuti falliscono qui in modo così prevedibile che non testiamo più strategie FX o CFD su grafici inferiori ai 30 minuti. Un sistema può azzeccare la direzione e comunque perdere ogni mese a causa dei propri costi di transazione.
Se si regolano abbastanza parametri, qualsiasi strategia si adatterà perfettamente alla storia, compreso il rumore casuale che non si ripeterà. Questo è l’adattamento alla curva: un sistema ottimizzato per un passato ormai andato. Sembra impeccabile sul campione, ma crolla sui dati che non ha mai visto. Il segnale rivelatore è la fragilità. Basta modificare una sola impostazione e la bella curva crolla. Ha memorizzato la storia; non ha imparato una regola. Ci proteggiamo da questo rischio effettuando test fuori campione, su anni e strumenti che l’ottimizzatore non ha mai preso in considerazione. Il vero overfitting rappresenta una categoria di scarti più ristretta di quanto si possa immaginare, poiché la maggior parte dei sistemi in overfitting viene scartata già dai nostri controlli preliminari, non avendo fin dall’inizio alcun vantaggio reale, ma solo un miraggio ben adattato. Una strategia con quattordici input ottimizzati non ha individuato un vantaggio. Sta semplicemente memorizzando.
Il backtest utilizza informazioni che non sarebbero ancora esistite al momento dell’operazione. Un segnale calcolato alla chiusura della giornata ma su cui si agisce all’apertura della giornata successiva. Un indicatore che si aggiorna automaticamente e che modifica silenziosamente le barre passate. Il risultato è una curva che non avrebbe mai potuto essere negoziata. Il “look-ahead” è il bug più pericoloso nel backtesting perché produce la falsità più convincente. Nella nostra pipeline ogni strategia che supera i test numerici viene sottoposta a un secondo controllo in cui il nostro modello più potente va a caccia proprio di questo: un’esecuzione che ha sbirciato, un valore trapelato dal futuro. Si tratta di una fetta più piccola dei nostri scarti rispetto a quella dei «no-edge», ma più costosa, perché questi sono i sistemi che sembrano i migliori fino al momento in cui li si negozia e crollano.
Mescoliamo i dati, randomizziamo l’ordine delle operazioni o codifichiamo il segnale, quindi verifichiamo se il vantaggio sopravvive. Se una strategia si comporta altrettanto bene sul rumore quanto sulla serie reale, i suoi risultati sono stati frutto della fortuna. Questo è il controllo placebo che la maggior parte dei backtest pubblicati tralascia completamente. Noi lo eseguiamo su tutto. Una quota significativa di sistemi che sembravano redditizi crolla nel momento in cui la loro tempistica viene randomizzata, perché il modello risiedeva nell’adattamento, non nel mercato. Il test di permutazione è poco affascinante e fa scomparire molte curve accattivanti, ed è proprio per questo che deve far parte del processo di analisi. Se la tua strategia non riesce a battere una versione rimescolata di se stessa, hai trovato una coincidenza e l’hai definita un sistema. Economico da eseguire, brutale quando fallisce.
Quando una barra copre un intervallo di prezzi, il backtester deve decidere l’ordine in cui si sono verificati il massimo, il minimo, l’apertura e la chiusura al suo interno. Se si sbaglia quell’ordine, uno stop trailing o un’uscita intrabar viene eseguita a un prezzo che non si sarebbe mai attivato in quella sequenza. È qui che molti sistemi con stop trailing barano silenziosamente. L’ingenua ipotesi «bar-by-bar» offre loro uscite che non avrebbero potuto cogliere in tempo reale. Abbiamo misurato il divario: le esecuzioni «bar-by-bar» sopravvalutano le strategie di trailing stop dal 42 all’84 per cento rispetto a un modello intrabar realistico. Non si tratta di un errore di arrotondamento. Per un’intera classe di sistemi, tale sovrastima costituisce l’intero prodotto venduto. Il vantaggio risiede in un’ipotesi sull’interno di una candela e non regge al confronto con i tick reali.
Raddoppia la tua posizione dopo ogni perdita in modo che la prossima vincita recuperi tutto, poi ricomincia da capo. Sulla carta il conto non fa altro che salire, perché ti rifiuti di registrare una perdita. In realtà, ogni serie di perdite fa crescere la posizione in modo geometrico fino a quando una singola serie non svuota il conto. La Martingala è il motore alla base della maggior parte dei bot grid e DCA, indipendentemente dal fatto che utilizzino o meno questo termine. È il motivo per cui mostrano percentuali di vincita quasi perfette per poi fallire in un unico trend. Abbiamo testato 76 sistemi grid, DCA e Martingale su futures, FX e criptovalute. Tutti hanno fallito, con un tasso di rifiuto del 100%, l’unica categoria nell’intera verifica a registrare tale risultato. La matematica non è un problema di messa a punto che si può risolvere con una griglia più ampia. È il design stesso.
Una griglia posiziona una scala di ordini di acquisto e vendita a intervalli fissi, con l’obiettivo di sfruttare le oscillazioni laterali del mercato. In un range laterale registra piccoli guadagni costanti e sembra inarrestabile. Poi il mercato entra in trend, il lato in perdita della scala si accumula e il drawdown aperto divora ogni profitto che la griglia abbia mai registrato. Abbiamo testato 76 sistemi a griglia e DCA utilizzando quotazioni reali di domanda/offerta su tre classi di asset. Tutti hanno fallito, al 100%, senza eccezioni: il risultato più netto emerso dall’analisi. Il fallimento non è dovuto a impostazioni errate. È strutturale: una griglia è corta sulla volatilità e lunga sulla speranza, e alla fine la volatilità presenta il conto. La curva di capitale ordinata è reale fino al giorno in cui non lo è più.
DCA (dollar-cost averaging, nel senso dei bot di trading)
Nel mondo degli investimenti, il dollar-cost averaging significa acquistare un importo fisso secondo un programma prestabilito, un’abitudine sensata e noiosa. Nel mondo dei bot di trading il termine è stato stravolto. Qui DCA significa abbassare la media di una posizione già in perdita, acquistando di più man mano che il prezzo scende per abbassare il proprio prezzo di ingresso. È la strategia martingala che indossa un nome rispettabile. Il bot mostra un’alta percentuale di successo perché mantiene la posizione e continua ad acquistare finché il prezzo alla fine non risale, chiudendo in positivo mentre la perdita iniziale cresce silenziosamente sullo sfondo. Li abbiamo testati insieme ai sistemi a griglia: 76 sistemi, tutti falliti una volta calcolati i costi reali. Il "dollar-cost averaging" su una posizione in perdita funziona finché la perdita continua, e il mercato non è tenuto a garantire un rimbalzo al tuo prezzo medio. La strategia che vince sempre è solitamente quella che nasconde le proprie perdite in operazioni che non chiuderà mai.
Il tasso di successo è la percentuale di operazioni che si chiudono in positivo. È la prima statistica che ogni venditore di strategie cita e la più fuorviante che possa scegliere. Un sistema può vincere il 95% delle volte ed essere comunque un perdente garantito, se le rare perdite sono abbastanza grandi da annullare tutte le piccole vincite. Quel divario è l’intero trucco della martingala e della griglia: mediando al ribasso e rifiutandosi di chiudere in rosso, un bot crea una percentuale di vincita spettacolare mentre un solo trend negativo azzera il conto. Un alto tasso di vincita è una scelta di progettazione, non un vantaggio. Ciò che ci interessa è il rapporto tra quanto fruttano le operazioni vincenti e quanto costano quelle perdenti, nell’arco dell’intero drawdown, non la percentuale di operazioni in positivo. Chiedete a qualsiasi bot che pubblicizza un tasso di vincita del 99% quale sia stata la sua singola perdita più grave.
Il drawdown è il calo dal picco del capitale al minimo successivo, ovvero quanto in perdita si va prima di raggiungere un nuovo massimo, misurato in percentuale o in valuta. È il numero che indica se si sarebbe potuto effettivamente mantenere il sistema senza andare in bancarotta o abbandonare la posizione. Il drawdown sulle operazioni chiuse è onesto. Il drawdown sulle posizioni aperte è dove i bot grid e DCA nascondono il vero quadro. Poiché si rifiutano di chiudere una posizione in perdita, il loro capitale registrato appare regolare mentre la perdita reale, non realizzata, si gonfia nelle posizioni ancora aperte in portafoglio. Il conto può subire un crollo catastrofico mentre il registro delle operazioni mostra una serie ininterrotta di vincite. Noi misuriamo il drawdown delle posizioni aperte, non la curva lusinghiera delle operazioni chiuse. Un tasso di vincita vicino al 100% e un drawdown in grado di azzerare il conto sono la stessa strategia descritta in due modi diversi.
Lo slippage è il divario tra il prezzo che ti aspettavi e quello che hai effettivamente ottenuto. I mercati si muovono tra la tua decisione e l’esecuzione dell’ordine, e la differenza viene addebitata sul tuo conto, operazione dopo operazione. La maggior parte dei backtest presuppone che l’ordine venga eseguito esattamente al prezzo del segnale, un regalo che nessun broker reale ti fa. Se lo si modella in modo onesto, i sistemi con volume ridotto, veloci o con timeframe brevi perdono una fetta di vantaggio che non hanno mai potuto permettersi di sprecare. Lo slippage è uno dei tre costi, insieme allo spread e alla commissione, alla base dei nostri scarti fatali in termini di costi: i sistemi che erano positivi in termini lordi ma negativi in termini netti. Il suo impatto è più forte quando le operazioni sono frequenti e di volume elevato rispetto a quanto è disponibile in conto. Un'esecuzione che si riteneva gratuita è una cifra presa in prestito da una curva che non la restituirà nella realtà.
Lo spread è il divario tra il miglior prezzo di acquisto (bid) e il miglior prezzo di vendita (ask). Si acquista al prezzo più alto e si vende a quello più basso, e la differenza è un costo che si paga ad ogni operazione, che si guadagni o si perda. Sembra banale finché non lo si attraversa migliaia di volte. Lo modelliamo a partire da dati di tick reali con quotazioni bid/ask effettive, non da un’ipotesi fissa applicata ai prezzi di chiusura. Più il timeframe è ravvicinato, più incide. Il trading sul Forex con intervalli inferiori ai 15 minuti fallisce quasi interamente a causa dello spread: il vantaggio è reale ma inferiore al costo necessario per ottenerlo, motivo per cui abbiamo smesso di testare strategie sul Forex e sui CFD con grafici inferiori ai 30 minuti. Un backtest eseguito sul prezzo medio elimina silenziosamente questo costo. I conti reali non possono farlo.
I dati tick sono ogni singola quotazione e operazione, con il prezzo reale di acquisto e di vendita in ogni momento, non un unico prezzo campionato una volta per ogni barra. Sono la materia prima di cui la modellizzazione onesta dei costi ha effettivamente bisogno. Se si esegue un backtest sui chiusure delle candele "pulite", non si vedrà mai lo spread che si pagherebbe realmente né l’esecuzione che si otterrebbe realmente. Per il Forex utilizziamo dati tick con prezzi di acquisto e vendita reali, in modo che lo spread e lo slippage siano misurati, non stimati. Per i futures analizziamo 13 anni di dati CME. La differenza non è solo teorica. Un sistema che esegue la liquidazione sul prezzo medio della candela può andare in perdita nel momento stesso in cui gli si addebita il costo reale di ogni entrata e uscita. Dati scadenti danno risposte scadenti. Se il modello dei costi è una supposizione, lo è anche il verdetto sulla strategia.
Il test walk-forward mette a punto una strategia su un intervallo storico, poi la verifica su un intervallo successivo che non ha mai visto, e fa scorrere quella finestra in avanti nel tempo. L’out-of-sample è il punto cruciale: se un vantaggio è reale, funziona su dati che l’ottimizzatore non ha potuto vedere. Se dà il meglio di sé solo negli anni su cui è stato addestrato, significa che ha memorizzato il rumore. Questo è il controllo che distingue una regola autentica da una coincidenza ben confezionata, ed è quello che la maggior parte dei backtest pubblicati tralascia perché fa apparire i risultati peggiori. Effettuiamo i test su anni e strumenti tenuti fuori da qualsiasi processo di ottimizzazione. Una strategia che ha bisogno di conoscere la risposta prima del test non è una previsione. I vantaggi reali sono noiosi in questo senso. Continuano a funzionare su dati per i quali non sono stati ottimizzati.
I contratti futures scadono, quindi per eseguire un backtest su più anni si unisce il contratto in scadenza a quello successivo in un’unica serie continua. Se lo si fa con noncuranza, si introducono gap fantasma o profitti ad ogni rollover che nessun trader ha mai realizzato. L’adeguamento a ritroso, ovvero lo spostamento dei dati precedenti in modo che la giuntura risulti liscia, corregge il grafico ma può rendere negativi i prezzi più vecchi o distorcere i rendimenti percentuali se si è approssimativi nel metodo. È una trappola silenziosa dei dati: la strategia sembra aver guadagnato denaro che in realtà era solo un artefatto del modo in cui la serie è stata incollata insieme. Analizziamo 13 anni di futures CME e gestiamo il rollover con attenzione, perché una giuntura mal eseguita può creare un vantaggio dal nulla. Il contratto su cui si esegue il backtest deve corrispondere al contratto che si sarebbe potuto effettivamente negoziare.
L’indice di Sharpe è il dato a cui i trader ricorrono per apparire rigorosi: il rendimento per unità di rischio, espresso in un unico dato chiaro. È anche uno dei dati più facili da manipolare al rialzo nel trading. L’indice di Sharpe misura il rendimento per unità di rischio: si prende il rendimento medio di una strategia, si sottrae il tasso privo di rischio e si divide per la volatilità di tali rendimenti. Una strategia che guadagna il 20% all’anno con forti oscillazioni può ottenere un punteggio peggiore rispetto a una che guadagna il 12% in modo regolare. Questo indicatore esiste proprio per quantificare tale volatilità.
I test multipli sono il motivo per cui un buon backtest è il risultato meno sorprendente dell’audit. Se si testano abbastanza strategie, alcune sembreranno redditizie per puro caso; la domanda non è mai se ne hai trovata una, ma se la soglia che hai superato era abbastanza alta da essere rilevante. Se si testa una sola strategia, un tasso di successo di poco superiore al lancio di una moneta sembra un vantaggio. Testate mille strategie e, per puro caso, diverse supereranno quella stessa soglia con ampio margine. Nessuna di esse ha individuato nulla di concreto. Qualcuno doveva pur vincere alla lotteria. I test multipli (chiamati anche “data-snooping”) si verificano quando quel numero di tentativi viene escluso dal calcolo della significatività. La consueta soglia di superamento/fallimento per un backtest, una statistica t vicina a 2, è stata concepita per testare un’idea alla volta. Se si sottopongono mille idee a quella stessa soglia, i falsi positivi superano i segnali reali prima ancora che qualcuno abbia iniziato a esaminarli.
Un indicatore che si aggiorna a posteriori mostra una cronologia diversa da quella visualizzata in tempo reale. Il segnale su cui hai operato di solito si è già spostato nel momento in cui lo guardi a posteriori. Un indicatore che si aggiorna a posteriori mostra una cosa sul grafico oggi e qualcos’altro sulla stessa barra domani, senza che nel frattempo sia stato modificato alcun codice. La freccia che martedì alla chiusura segnalava un minimo perfetto può spostarsi o scomparire già giovedì, perché il calcolo alla base non era mai stato completato quando è apparsa per la prima volta. Ciò che hai visto in tempo reale e ciò che la cronologia mostra ora sono due registrazioni diverse della stessa candela.
Il fattore di profitto è il profitto lordo diviso per la perdita lorda, ed è uno dei dati di backtest più facili da gonfiare senza modificare una sola regola di trading. Il fattore di profitto è il profitto lordo diviso per la perdita lorda. Somma tutte le operazioni vincenti, somma tutte quelle in perdita, dividi il primo totale per il secondo. Cross 1.0 e la strategia hanno generato più profitti che perdite, almeno sulla carta. È un unico dato, facile da calcolare, facile da inserire in una pagina di vendita.
Questi sono i motivi per cui le strategie finiscono nella “No List”: l’audit completo, ogni strategia citata, con il relativo verdetto e il motivo esatto per cui è stata approvata o scartata.
Prima di andare: prendi FoxAlgo Data Studio gratis — dati di mercato reali a livello tick, aggregati automaticamente a qualsiasi timeframe, pronti per l'export verso NinjaTrader, MT4/MT5 e CSV.