Qual è lo scopo dell’ottimizzazione di un Trading System?

Nel nostro percorso di illustrazione delle varie fasi da attraversare per imparare ad automatizzare i sistemi di trading siamo arrivati a parlare dello stadio di ottimizzazione, l’argomento di oggi. Se non hai ancora dato una scorsa agli articoli precedenti, ti consigliamo di farlo prima di proseguire nella lettura: per comprendere appieno le attività di cui andremo a parlare, la cosa migliore è avere ben chiaro quali azioni sono state messe in atto prima.

Nell’ottica di arrivare autonomamente all’autotrading, infatti, non possiamo pensare di procedere con l’ottimizzazione di un Trading System senza aver prima affrontato l’idea alla base della nostra strategia e la sua traduzione in un linguaggio comprensibile al nostro sistema attraverso la programmazione. Fino a questo punto, volendo, potremmo anche sfruttare alcune soluzioni facilitate. Se ad esempio l’idea non fosse nostra, ma l’avessimo scelta ispirandoci ad altre fonti, non sarebbe un grosso problema per la nostra formazione in automatizzazione di trading system.

Allo stesso modo, se avessimo la fortuna di trovare un codice informatico che rispecchi le nostre intenzioni o trovassimo qualcuno disposto a scriverlo per noi, potremmo comunque proseguire. Certo, poter comprendere il linguaggio del sistema e garantirsi così la possibilità di intervenire anche solo con piccoli aggiustamenti è un grande vantaggio per chi intende diventare un trader automatico consapevole e indipendente.

Tuttavia, il vero momento di mettersi in gioco ed investire un’attenzione importante nella preparazione arriva con la valutazione o backtest. È qui che si testa il sistema su dati del passato e, dopo averne analizzato criticamente i risultati, impariamo a conoscere il comportamento del nostro Trading System. Ed è solo a questo punto che abbiamo dati sufficienti per poterci avventurare nelle operazioni di ottimizzazione.

In cosa consiste l’ottimizzazione

È chiaro già dal termine che ottimizzare qualcosa significa apportare delle migliorie. Nel nostro caso specifico, giungiamo dall’osservazione di come si comporta il nostro Trading System. Riprendendo la metafora che abbiamo usato nell’articolo dedicato al backtest, concluso il colloquio di lavoro e assunto il nostro candidato, dobbiamo ora cercare il modo di far rendere al meglio le sue competenze nella pratica della nostra azienda. In che modo possiamo farlo?

L’ottimizzazione di un sistema si esegue attraverso la variazione di alcuni input per osservare quali differenze si ripercuotono in conseguenza sui risultati. Gli input sono tutti quei parametri modificabili che un trader può inserire all’interno del suo modello di analisi. Alcuni di essi sono in grado di alterare il comportamento del nostro sistema: pensiamo ad esempio alla lunghezza di una media mobile. Se il nostro sistema compra ogni volta che il prezzo di chiusura supera una media a 10 periodi, portare quella media a 15 significherà rettificare le regole di condotta che il nostro sistema andrà a mettere in pratica. 10 e 15 sono dunque input utili da considerare per l’ottimizzazione.

Format Signal: INPUT

Screenshot finestra input di MultiCharts. Percorso per raggiungerla: click con il tasto destro sullo sfondo del grafico > Format Signal

Le piattaforme di trading disponibili sul mercato permettono di eseguire questa operazione in maniera molto agevole. Come abbiamo già sottolineato in più occasioni, noi abbiamo scelto di utilizzare MultiCharts: nell’apposita maschera per la gestione degli input possiamo impostare ogni parametro come valore di partenza, il valore finale, il valore di incremento e il coefficiente di accelerazione. Il software lancerà l’ottimizzatore, che restituirà un certo numero di simulazioni. È possibile eseguire test modificando contemporaneamente più input.

Inputs optimization

Finestra di ottimizzazione degli input con selezione passi e punti di partenza e arrivo delle combinazioni da lanciare. L’ottimizzazione può essere esaustiva o genetica a seconda della complessità.

Perché si effettua: risposta provvisoria

La risposta che risulta logica in un’ottica interna al processo di ottimizzazione e che molti trader alle prime armi prendono come punto di riferimento per valutare la bontà dei propri sistemi è la seguente: il processo di ottimizzazione di un Trading System ha l’obiettivo di individuare la migliore combinazione di input. L’espressione “migliore combinazione” indica qui l’attribuzione di valori con i quali la strategia restituisce i risultati “più positivi”.

Nel titolo di questo paragrafo abbiamo annunciato che si tratta di una risposta provvisoria: avrai già intuito perciò che c’è qualcosa che non va, in essa. Chiariamo subito che non si tratta di un’affermazione del tutto falsa. Piuttosto, potremmo definirla come un’indicazione parziale e potenzialmente fuorviante, se mal interpretata. L’errore verso il quale ci può condurre è quello di valutare il nostro sistema proprio sulla base dell’ottimizzazione.

Ricordiamoci che siamo ancora in una fase nella quale il nostro sistema sta lavorando su informazioni fornite da una banca dati, sul passato. Questo deve costringerci a considerare tutte le incognite normalmente legate alle simulazioni condotte con queste modalità. Ancor di più, dobbiamo prendere coscienza del fatto che cercare la migliore combinazione di input attraverso la semplice ottimizzazione ci sottopone al rischio, anche indiretto, di sovraottimizzazione, ossia di Overfitting.

Il pericolo di Overfitting

La sovraottimizzazione di un sistema di trading si verifica quando manipoliamo i parametri modificabili in modo da ottenere risultati che mostrano profitti molto elevati. Perché questo dovrebbe essere un problema? Facciamo un esempio pratico e verifichiamolo. Nel grafico inserito qui di seguito abbiamo riportato la rappresentazione tridimensionale di due parametri messi a confronto, NSI e XSI.

3D Optimization Chart Overfitted

Rappresentazione 3D di due input ottimizzati e messi a confronto. Nell’immagine viene mostrata una combinazione che spicca tra le altre come la combinazione sovraottimizzata del trading system.

Questi due input sono stati ottimizzati da 55 a 115 e da 55 a 95, e il report di ottimizzazione elaborato da MultiCharts evidenzia che fra i risultati sono ben visibili di alcuni picchi, di colore magenta. Esaminiamo in particolare quello più alto: con la combinazione di input che abbiamo selezionato, il Net Profit risulta sensibilmente massimizzato, con un valore di 32000 contro una media degli altri attorno al 18000. Se l’obiettivo ultimo della nostra ottimizzazione fosse trovare la combinazione di input che dà i risultati migliori fra tutte quelle registrate e testate, allora avremmo concluso con un successo.

Se però, a questo punto, andassimo ad eseguire un backtest, vedremmo un andamento tipico dell’Overfitting, ossia un’Equity Line crescente in un intervallo di tempo specifico, ma un crollo dei profitti appena andiamo a testare lo stesso sistema e gli stessi parametri su una differente finestra temporale. Le performance che abbiamo notato in un primo momento non erano frutto di una strategia vincente, ma solo della sovraottimizzazione. Ciò sottolinea ancora una volta quanto sia importante eseguire ed interpretare i backtest, ma ci conferma anche che fare previsioni sulla profittabilità di una strategia è un’operazione delicata.

Perché si effettua: risposta definitiva

Modificare i parametri del Trading System fino ad ottenere il Net Profit più alto e costruire su questo delle aspettative sui guadagni reali è dunque un errore. L’Overfitting annulla l’affidabilità futura del sistema. Il processo di ottimizzazione, perciò, non deve avere come scopo primario quello che abbiamo descritto all’inizio: il suo compito è verificare la stabilità del sistema. Questo significa individuare quale insieme di impostazioni ci permettono di generare performance di tendenza costante anche in contesti differenti.

I risultati devono mostrare piccole variazioni in corrispondenza di piccole modifiche nei parametri, meglio ancora se lo fanno anche in seguito ad impostazioni significativamente differenti degli input. Tutti i parametri del Trading System dovrebbero essere messi in relazione sul lungo periodo per verificare la stabilità. Ad analisi come queste dedichiamo diverse sessioni pratiche durante il corso per Diventare Quant con MultiCharts.

Conclusione

È bene stare alla larga dai sistemi instabili. Purtroppo, identificarli non è immediato perché ogni input deve essere messo in relazione con gli altri coinvolti: più input ci sono e più si complica la questione. Non è però impossibile e ci dà rilevanti vantaggi. Quando riusciamo a riconoscere un’area di stabilità abbiamo un solido punto di partenza per lavorare sul perfezionamento della combinazione da utilizzare.

Concentrandoci all’interno di quest’area, le probabilità che il mio sistema restituisca risultati comparabili – anche in presenza di oscillazioni del mercato – aumentano. Una volta trovata la combinazione di input che supera i backtest dobbiamo procedere con la validazione del sistema, che vedremo nel prossimo articolo. Nel frattempo, ti ricordiamo di segnare in agenda l’importante Convegno Italiano dei Trading System, che si terrà sabato 15 Settembre 2018 a Bologna.