Il backtest è un modo per verificare l'efficacia di una strategia nel passato. Questo strumento funziona davvero?
Quando inizi nel mondo del trading, una delle prime cose che impari è il concetto di backtesting. Cioè, prima di utilizzare una strategia è consigliabile, se non indispensabile, verificare i risultati di alcune regole nei periodi precedenti. Chiamiamo queste regole un sistema di trading o semplicemente un sistema. Il concetto stesso, o almeno l'idea, è molto buono. Anche se ora ci sembra ovvio, non lo è sempre stato. Inoltre, ancora oggi, ci sono trader o investitori che preferiscono, per errore o omissione, affidare i propri capitali al futuro del destino.
Ovviamente ognuno specula con il proprio capitale come meglio crede. Certo, con i mezzi ad almeno un click di distanza per provare almeno a verificare, e con relativa facilità, i ritorni che una strategia ha avuto in passato, mi sembra quantomeno assurdo non farlo.
Nota: omettiamo quelle parti di un'analisi che non sono quantificabili. Qualcosa che accade in tutti i tipi di analisi. C'è sempre qualcosa che ci manca.
I resi passati non garantiscono i rendimenti futuri
Alcuni di coloro che sono riluttanti a quantificare le proprie strategie, potrebbero affermare - e molto bene argomentato - che i rendimenti passati non garantiscono rendimenti futuri. Ma, tenendo presente che hanno ragione, arrivo sempre alla seguente conclusione: se non puoi assicurare che ciò che ha funzionato continuerà a funzionare, ciò che ti fa pensare che ciò che non ha funzionato funzionerà ora. Potrebbe funzionare? Sì, ma sembra più un atto di fede che altro.
La speranza è l'ultima cosa da perdere perché, ovviamente, prima di perderla, quello che sicuramente perderai è il tuo capitale.
Anche il backtest non funziona
Con la nostra mente sull'idea che un backtest è meglio che affidarsi all'astrologia, dobbiamo continuare a perfezionare per non commettere gli stessi errori che molti trader hanno fatto, fanno e, purtroppo, continueranno a fare.
A questo punto bisogna mettere olio su tela per affermare che un backtest è meglio che affidarsi alla casualità della destinazione, ma è tutt'altro che sufficiente.
Perché non è abbastanza?
Basta un backtest per verificare se, avendo utilizzato in passato un determinato sistema di trading, avremmo generato determinati risultati. Ma lo strumento finisce qui. La parola stessa lo dice, "Back" (passato) e "test" (Proof). Estrapolando, senza approfondire, alcuni risultati sono ancora - seppur in misura minore - un altro atto di fede. Dal momento che per caso potrebbe continuare a funzionare, e hanno trovato un sistema che funziona senza sapere perché o che funziona e non si sa fino a quando. Questo modo di procedere di alcuni analisti quantitativi contrasta con la loro incessante critica all'analisi tecnica. Cioè, criticano qualcosa che loro stessi, inconsciamente, applicano quotidianamente.
Cosa c'è da analizzare?
Supponendo che un sistema abbia parametri fissi, è necessario verificarne la validità in diversi ambienti di mercato. Anche in ambienti che non esistono. Verifica come un sistema avrebbe funzionato in ambienti ad alta e bassa volatilità, prima e dopo i cambiamenti strutturali, in mercati rialzisti, ribassisti e laterali. E così potremmo andare avanti quasi all'infinito.
Se il sistema ha parametri variabili, cosa che di solito accade nella maggior parte dei casi, faremo lo stesso processo, ma tenendo presente che il sistema è modificabile e quindi ottimizzabile. E il fatto stesso di essere ottimizzabile lo rende suscettibile di essere eccessivamente ottimizzato. Questo punto è di vitale importanza per cercare di ottenere rendimenti stabili in futuro.
Il solito passo dopo aver trovato una strategia che ha funzionato bene in passato è cercare di ottimizzare il modello. Grosso errore. Per prima cosa dovresti metterlo in tensione, o quello che io chiamo stressare il sistema. Mettilo al lavoro nel peggior ambiente possibile conosciuto per tali sistemi. Quindi, ad esempio, se abbiamo un sistema di trend, sarà necessario metterlo in funzione in periodi laterali prolungati per vedere come si comporta quando non esiste uno scenario favorevole per generare rendimenti dal sistema. La ragione di quanto sopra è che non sappiamo cosa accadrà in futuro, quindi metterci nel peggiore scenario possibile ci porta il più lontano possibile dall'inevitabile (e desiderabile) casualità.
Cosa fare oltre a stressarlo?
I concetti che cambiano tutto sono forward test e test out of sample. Ma, se non conosciamo il futuro, come faremo a testare qualcosa su qualcosa che non conosciamo? Abbiamo due opzioni, che vedremo a breve. D'altra parte, abbiamo il concetto di fuori campione. La scelta di questo campione - che consiglio siano parecchi (non uno solo) e con distribuzioni di probabilità che presentino caratteristiche disparate - è fondamentale per realizzare un sistema che funzioni. L'idea è che il backtest e l'ottimizzazione vengano eseguiti in periodi diversi. Pertanto, i campioni gratuiti rimarranno. Anche se questo dipende dal gusto dell'analista. Si può fare in un altro modo ma possiamo cadere in errori statistici che non sono l'obiettivo di questo articolo.
- Il primo modo per eseguire il processo è quello che chiameremo tradizionale: realizziamo un sistema, lo ottimizziamo e dopo aver esaminato alcune metriche lo mettiamo in funzione con denaro fittizio o con pochi soldi veri. Se tutto va bene, lo mettiamo in pratica.
- Il secondo modo di eseguire il processo è quello che chiameremo 'nuovo', anche se in realtà ha poco di nuovo: realizziamo un sistema, lo ottimizziamo, controlliamo la stabilità dei parametri nel tempo, effettuiamo test di esempio, test in avanti artificiali e lo mettiamo al lavoro con un vero test in avanti. Se tutto va bene, lo mettiamo in pratica.
Il secondo modo di procedere, rispetto al primo, si basa su due concetti: stabilità dei parametri nel tempo e forward test artificiali. I test in avanti artificiali non sono un tipo di test fuori campione che tentano di simulare un vero test in avanti. Pensiamo a quanto segue:
Abbiamo fatto un processo per un sistema per l'anno scorso. Metterlo in funzione da questo mese (luglio) alla fine dell'anno (dicembre) è praticamente lo stesso che andare avanti per tutti i 6 mesi e simulare il test in avanti da gennaio a luglio. Non è lo stesso, perché le condizioni reali ci offrono sempre situazioni difficili da inventare, ma avanziamo ulteriormente e otteniamo risultati migliori. E dopo quelle "invenzioni" perché in realtà sono invenzioni, abbiamo eseguito il test in avanti in tempo reale. Questo è ciò che intendo per test in avanti artificiali. Ad alcuni potrebbe non piacere in questo modo, ma pensare diversamente è mentalmente prevenuto. Se avessi scoperto questa strategia 6 mesi prima, avresti fatto lo stesso.
Abbiamo invece la stabilità dei parametri di sistema nel tempo. Per me, questa è la metrica più importante e ci dice se il sistema è eccessivamente ottimizzato. Se i parametri rimangono stabili nel tempo dopo le ottimizzazioni ogni X periodi, significa che è meno probabile che i parametri siano stati sovra-ottimizzati rispetto ad altri che variano di più. Se a questo aggiungiamo che per ciascuna delle ottimizzazioni effettuiamo un forward test artificiale e anche i risultati sono stabili, siamo di fronte a un sistema con la probabilità di essere davvero redditizio.
Tutto questo può diventare molto più complicato. Anche se sembra complesso, non lo è. È pesante, ma è più semplice del meccanismo di una brocca. Come sempre ognuno ha il suo modo di fare le cose, questo non è l'unico modo, ma quello che volevo mettere in chiaro è che un backtest senza compagni di viaggio è inutile e inutile. Almeno, ovviamente, nel mondo del trading.