Guida al Backtesting ed all’ottimizzazione dei Trading System

Read this article in your language IT | EN | DE | ES

Una volta realizzato il nostro Expert Advisor in Trading Studio, non vedremo l'ora di sperimentarne la validità. Il modo più veloce e preciso per validare le nostre ipotesi è eseguire una simulazione di come avrebbe operato eseguendolo su una serie storica. Questo tipo di operazione viene chiamata Backtest.

Il backtest riveste una importanza assolutamente fondamentale per almeno due ordini di ragioni:

  • Verificare la corrispondenza fra codice e modello di trading. Facendo il backtest potremmo accorgerci che il nostro TS venda al posto di comprare, oppure che gli ordini non avvengano nella maniera ipotizzata. Infatti potremmo avere scritto codice perfettamente funzionante a livello formale ma inutilizzabile a livello operativo.
  • Verificare l'efficacia del modello, ossia la sua capacità di produrre performance.

Il backtest avviene in concreto all'interno di un simulatore chiamato Collaudatore. Si può aprire la finestra del collaudatore dalla relativa voce del menu "Visualizza" oppure attraverso la scorciatoia da tastiera [Ctrl+R].

Una volta verificato la corrispondenza tra modello e l'operatività risultante dal trading system, potremmo avere la spiacevole sorpresa che il nostro modello di partenza non è in grado di generare utili oppure non fornisce i risultati attesi. A questo punto sono tre le strade che possiamo imboccare:

  • Abbandoniamo il progetto;
  • Lasciamo tutto come è sperando che le condizioni di mercato future risultino più favorevoli o meglio più confacenti al nostro modello;
  • Analizziamo con attenzione i risultati del backtest per capire come e perché si sono verificate delle perdite o risultati diversi da quelli attesi.

 

  1. Il "Centro Storia" e i dati di test

    Ovviamente la prima cosa da fare per effettuare la simulazione è disporre di una base dati adeguata da sottoporre a test. Per verificare di quali strumenti abbiamo i dati e su quale timeframe di riferimento dobbiamo utilizzare lo strumento "Centro Storia" avviandolo dalla relativa voce del menu "Strumenti" o tramite la scorciatoia da tastiera [F2].

    Come si può notare dalla figura sopra, per quanto concerne il cambio EURUSD disponiamo unicamente delle quotazioni relative al timeframe orario. Premendo sul pulsante "Download", avendo prima selezionato uno strumento, possiamo scaricare i dati storici ad esso relativi.

    Una finestra contenente un disclaimer ci avviserà che i dati verranno scaricati direttamente dai server di Metaquotes, quindi dobbiamo aspettarci che possano differire da quelli del broker.

    Possiamo eventualmente aggiungere o persino modificare i valori delle singole barre qualora avessimo necessità particolari.

    Figura 144 Aggiunta o modifica si una singola barra

    L'operazione probabilmente più utile tuttavia consiste nel potere importare eventualmente una base dati da un file esterno. I file importabili sono semplici file di testo come i tradizionali file csv o una loro variante chiamata prn.

    Figura 145 Struttura di un file prn importato in un foglio Excel dopo la conversione

    Come si può notare dalla figura il file contiene tutte le informazioni necessarie alla ricostruzione di un grafico quali la data, l'ora, i prezzi di apertura, chiusura, massimo e minimo ed il volume scambiato.

  2. Limiti della simulazione

    Prima di addentrarci oltre nella trattazione delle simulazione di una strategia è bene ricordare che questa non potrà mai corrispondere esattamente con i risultati che avverrebbero nella realtà.

    Esistono almeno tre ordini di ragioni per cui questo avviene:

    1. La latenza: all'interno della simulazione i prezzi sono sempre disponibili immediatamente mentre nella realtà l'inserimento o la chiusura di un ordine sono sottoposti sia ai tempi delle rete che all'elaborazione del server, comportando un ritardo che inevitabilmente porta ad una modifica del prezzo.
    2. Precisione della base dati: il database che abbiamo a disposizione non può considerare ogni singolo tick (quotazione) portando a delle piccole inesattezze
    3. Lo spread: in fase di simulazione i prezzi sono sempre considerati relativi ad Ask; a questi il simulatore applica uno spread fisso per definire il corrispettivo Bid. E' evidente come in caso di spread variabili o nei momenti più concitati del mercato dove questo deve necessariamente allargarsi, questo limite può portare anche a gravi gap tra realtà e simulazione

    Al di là di quanto appena esposto, il collaudatore rimane un validissimo strumento per testare la profittabilità di una strategia, soprattutto per quei sistemi basati sull'analisi tecnica in cui, nella maggioranza dei casi, pochi pips di differenza non inficiano i risultati in maniera sostanziale.

  3. Esecuzione del test

    Per quanto riguarda l'esecuzione vera e propria, l'operazione dovrebbe risultare abbastanza intuitiva. I parametri minimi da impostare sono i seguenti:

  • Consigliere esperto: Il trading system da sottoporre a test;
  • Simbolo: Lo strumento da utilizzare;
  • Periodo: Il timeframe da utilizzare;
  • Lo spread: Qui si può impostare manualmente uno spread od utilizzare quello specifico di un asset;
  • La data di utilizzo: Sono qui definiti il momento in cui far iniziare la simulazione ed il momento in cui debba essere terminata
  • Visualizza: Contrassegnando questa casella la simulazione viene visualizzata in tempo reale su un nuovo grafico, come se i prezzi si stessero formando in tempo reale. Possiamo controllare la velocità della simulazione tramite l'apposito controllo o spostarci direttamente al termine della stessa premendo il pulsante "Saltare a"

Se optate per la visualizzazione all'interno del grafico potrete notare come siano rappresentate anche le operazioni di acquisto e vendita ed il prezzo a cui vengono chiuse:

  • Freccia blu: indica una operazione di acquisto;
  • Freccia rossa: indica una operazione di vendita;
  • Freccia arancione rivolta a sinistra: indica la chiusura di un ordine;
  • Linea tratteggiata: collega l'apertura di un ordine alla sua chiusura relativa

Figura 147 Simulazione di un trading system all'interno di un grafico, notare come vengano visualizzate anche le singole operazioni

Spostandoci nella scheda "Risultati" viene visualizzata una tabella contenente i dettagli di tutte le operazioni effettuate, mentre quella "Grafico" riporta un grafico lineare che mostra l'andamento del bilancio al termine di ogni singola operazione.

Un'altra opzione molto interessante concerne la possibilità di esportare il report nel formato html premendo il pulsante "Salva come rapporto" dal menu contestuale della scheda "Risultati", analogamente a quanto abbiamo visto in precedenza con l'esportazione dello storico operazioni.

Tale rapporto mostra informazione molto interessanti quali il drawdown relativo del conto, la percentuale di operazioni in profitto od in perdita, le operazioni totali ed il fattore di profitto.

Per drawdown intendiamo la massima perdita in termini percentuali tra il bilancio e l'equity che viene registrata nel corso della simulazione; per dirla in altri termini, è la massima perdita in percentuale sul saldo che si è verificata quando le operazioni non erano ancora state chiuse.

Per profit factor (fattore di profitto) si intende il rapporto tra il totale delle operazioni in profitto ed il totale delle operazioni in perdita, ossia tra profitto lorda e perdita lorda. Un profit factor maggiore di 1 indica quindi un sistema profittevole, mentre valori inferiori a 1 indicano sistemi non profittevoli in termini di proiezione.

E' inutile dire che minore è il drawdown più un sistema può considerarsi sicuro; come potete immaginare nessuno sarebbe disposto a rischiare fino al 50% del capitale per un rendimento atteso, ad esempio, del 10%.

Per cui sia il profit factor che anche il drawdown sono due valori fondamentali che vanno sempre considerati unitamente.

 

Parametri dei trading system ed ottimizzazione degli stessi

I trading system che realizziamo in Trading Studio dovrebbero disporre di propri parametri di input, ossia di valori che modificano in maniera sostanziale il comportamento del sistema stesso.

Tali parametri compaiono sempre nel momento in cui colleghiamo il sistema al grafico, ma possono essere utilizzati anche in fase di collaudo.

La procedura tramite la quale ricerchiamo i parametri di un sistema al fine di massimizzare il profit factor di un sistema ed a minimizzarne il drawdown, all'interno del periodo preso in esame, è chiamata Ottimizzazione.

Prendiamo ad esempio il trading system di esempio fornito con la piattaforma chiamato "Moving Average" premendo il pulsante "Proprietà esperte" all'interno del collaudatore e spostandoci sulla scheda "Valori di input".

Come potete notare il sistema dispone di più parametri; alcuni influiscono sul rischio (Lots, MaximumRisk e DecreaseFactor) mentre altri incidono sulla strategia stessa andando a modificare i parametri degli indicatori tecnici su cui questa è fondata (MovingPeriod, MovingShift).

Il collaudatore ci consente di effettuare automaticamente dei test in cascata senza la necessità di procedere singolarmente. A tal fine vanno prima contrassegnati i parametri che vogliamo siamo modificati e successivamente definiti dei valori di inizializzazione, passo ed arresto.

Vediamo meglio con un esempio concreto come indicato nella figura 14-13. Contrassegnando il parametro MovingPeriod con una avvio pari a 12, un passo (valore di incremento) pari a 1 ed un valore di arresto pari a 18 verranno eseguiti esattamente 7 simulazioni (da 12 a 18 incluso).

Quando sottoponiamo ad ottimizzazione più di un parametro dobbiamo considerare che il numero dei test crescerà sulla base della permutazione della matrice risultante. Vediamo con un altro esempio.

Se facciamo riferimento alla figura 14-14 risultano 7 test per il parametro MovingPeriod e 3 per quanto riguarda il parametro MovingShift. Tuttavia i test totali non saranno 10 (7+3) ma bensì 21 (7*3).

A questo punto proviamo ad impostare, ad esempio, l'ottimizzazione come in figura seguente.

Contrassegniamo poi la casella "Ottimizzazione" nella finestra principale del collaudatore.

Al termine dell'ottimizzazione noteremo che le schede del collaudatore ora differiscono in maniera sostanziale rispetto ad un singolo test; in particolare spostandoci sulla scheda "Risultati dell'ottimizzazione" possiamo verificare con quali parametri il sistema assuma la configurazione migliore.

Dal nostro test risulta che impostando la media mobile a 14 periodi ed un fattore di rischio a 0,02 abbiamo un fattore di profitto pari a 1,20% ed un drawdown di solo 2,07%.