Analisi di persistenza della strategia Breakout su Apple

di , pubblicato il
Nel precedente articolo abbiamo illustrato il processo di creazione di una strategia, dal suo motore grezzo agli

Nel precedente articolo abbiamo illustrato il processo di creazione di una strategia, dal suo motore grezzo agli “abbellimenti” (filtri di volatilità e position sizing).

Ora si vuole evidenziare se quel motore grezzo sia in grado di produrre una performance persistente usando il potente tool strategy lab di QTLab, verificando se le migliori/peggiori combinazioni Is sample (IS, su cui abbiamo effettuato l’ottimizzazione per addestrare il sistema) rimangono anche le migliori combinazioni Out of Sample (OOS,  porzione di dati su cui dobbiamo verificare come si comporta il sistema).

Il periodo analizzato va dall’1/1/2000 ai giorni nostri, ed è stato preso a riferimento il 75% del campione per addestrare il sistema, un periodo che copre tutte le fasi di mercato e che va dall’1/1/2000 al 16/02/2015; il periodo OOS va dal 17/02/2015 al 02/03/2020.

I parametri di input fatti fluttuare sono i seguenti, per un totale di oltre 18.000 combinazioni: deviazione standard della banda di bollinger (da 0,9 a 2 a step di 0,1), numero periodi della deviazione standard (da 2 a 15 a step di 1), numero periodi della media mobile (da 10 a 31 a step di 1) ed il numero di periodi per l’uscita dalla posizione e per il calcolo dell’average true range (da 4 a 8)

Già ad un primo impatto visivo, prendendo un sottoinsieme di Equity line (la parte a sfondo verde rappresenta il periodo Out Of Sample), il risultato sembra promettente:

Figura 1: Sotto insieme di Equity line

Analisi di persistenza

Effettuando un analisi di persistenza il Metric Persistence Index (che va da -100% a +100%) mostra un livello del 38,43%, con il valore di 3 deviazioni standard al 2,27%. Il valore dell’indice è rispettabile considerando che si tratta di un motore grezzo, ed assume un elevata significatività dal momento che rapportato a 3 deviazioni standard è più grande di 16,93 volte.

La persistence matrix inoltre presenta una nuvola di punti molto concentrata intorno alla diagonale principale che rappresenta il fitting ideale: idealmente, se tutti i punti (ognuno di essi rappresenta una specifica combinazione di parametri) fossero concentrati sulla diagonale principale significherebbe che ogni combinazione IS produrrebbe lo stesso risultato OOS. Quello che vogliamo vedere è quindi un fascio di punti concentrato sulla diagonale principale.

Per dare una spiegazione si consideri che sulla matrice di persistenza sono rappresentati i risultati dai peggiori ai migliori. Quelli ottenuti dal campione IS sono organizzati sull’asse delle ascisse e quelli ottenuti dal campione OOS sull’asse delle ordinate: prendendo a riferimento la parte in basso a destra della matrice, se i punti fossero concentrati in quella porzione di matrice significherebbe che il miglior 10% di combinazioni In Sample produce i peggiori risultati IS; la parte verde in alto a destra riguarda invece le migliori combinazioni IS che producono anche i migliori risultati OOS, e viceversa per la parte verde in basso a sinistra (le peggiori combinazioni IS producono coerentemente anche i peggiori risultati OOS).

Il fatto che il livello di persistenza di questo sistema grezzo sia soddisfacente è confermato anche dalle distribuzioni di probabilità in basso.

Figura 2: Analisi di persistenza

Per appurare che tale risultato non sia dovuto al caso viene effettuato un ricampionamento fino ad un massimo di 5 campioni, facendo variare il periodo IS da un minimo del 50% ad un massimo dell’80%, permettendo di scambiare i periodi IS/OOS (ad esempio invertendo l’ordine, considerando prima l’OOS e poi l’IS e viceversa) ed effettuando 30 possibili permutazioni. Il risultato è promettente dato che il valore dell’indice ricalcolato scende solamente al 36,5%.

Figura 3: Permutazioni e ricampionamenti

Analisi di stabilità dei parametri

Per effettuare una scrematura delle possibili combinazioni si effettua un analisi di stabilità dei parametri, selezionando a due a due i parametri  da confronto e scegliendo una metrica per analizzare i risultati: il verde scuro rappresenta i migliori risultati mentre il rosso scuro rappresenta i peggiori risultati; così se si vedono aree di colore omogenee si possono individuare aree più o meno stabili.

Figura 4: Stabilità dei parametri IS per Net Profit

Figura 5: Stabilità dei parametri OOS per Net Profit

Già a primo impatto valori intorno ad 1 (da 0,9 a 1,4) per la deviazione standard, e a 10 (da 5 a 15) per il periodo di calcolo sembrano promettenti. Per il numero di barre di uscita e per il calcolo dell’average true range si individua una bella area stabile fra 6 e 8, mentre per il periodo della media mobile si individua un area inversamente ma molto stabile stabile incrociando i valori dei periodi della deviazione standard e della media mobile.

Figura 6: Stabilità dei parametri IS per average trade

Figura 7: Stabilità dei parametri OOS per average trade

Anche considerando l’average trade si possono trovare delle belle aree stabili da 6 a 8 per il numero N di barre dall’entrata in posizione e per il calcolo dell’average true range. Per i peridi della deviazione standard possono essere presi in considerazione valori che vanno da 6 a 15 mentre per il periodo della media mobile possono essere presi in considerazione tutti i valori. Per l’incrocio perSD e SD la stabilità è minore, considerando però il fatto che su valori bassi di deviazione standard e del periodo di calcolo la strategia produce più trades che fanno diminuire l’average trade.

Nel confronto fra le metriche Net Profit e Average Trade l’input N rimane molto stabile da 6 a 8, così come rimane più o meno stabile e promettente il risultato delle combinazioni fra il numero di periodi della deviazione standard (perSD) e della media mobile (perM), per valori rispettivamente superiori a 6 e a 20

Scelta dei parametri ed analisi dei risultati

Scremando le possibili combinazioni di parametri e guardando ai risultati complessivi anche in termini di regolarità dell’equity line, sebbene non producano i risultati migliori, vengono scelti i seguenti valori: 1 per la deviazione standard; 5 per il periodo di calcolo della deviazione standard; 20 per il periodo di calcolo della media mobile; 6 per il numero di periodi dall’entrata in posizione e per il calcolo dell’average true range.

Si ri converge in pratica ai valori selezionati nel precedente articolo

Scrivendo una strategia che:

  • compri alla rottura della banda superiore di bollinger a 5 periodi ed una deviazione standard
  • utilizzi un primo setup di chiusura quando il prezzo di chiusura è minore od uguale alla media mobile a 20 periodi, vendendo in apertura della prossima barra;
  • utilizzi un secondo setup di chiusura quando il prezzo di chiusura è maggiore al prezzo di entrata e si è in posizione da almeno 6 barre, vendendo in funzione di un trailing stop che considera il minimo più elevato (si tratta di un trailing stop più leggero del classico massimo più elevato, e che fa rimanere più in posizione e cavalcare il trend)
  • applica uno stop loss monetario a 500 dollari.

Questo è un esempio dei trade prodotti dai due tipi di uscite, considerando che le bande di bolliger hanno banda superiore azzurra e banda inferiore rossa (con media disegnata in giallo), mentre la media mobile a 20 periodi è disegnata in verde.

Figura 8: Esempio di trade basato sulla media mobile (Il prezzo di chiusura ha bucato la banda superiore e ha comprato in apertura della prossima barra; dato poi che si trovava anche al di sotto della media mobile a 20 periodi è uscito in apertura della prossima barra

Figura 9: Esempio di trade basato sul trailing stop morbido (Il prezzo di chiusura ha bucato la banda superiore e ha comprato in apertura della prossima barra; dato poi che il prezzo di chiusura era maggiore del prezzo di entrata e si era in posizione da un periodo uguale o superiore a 6 giorni ha venduto in funzione del trailing stop che considerava il minimo più elevato rispetto all’entrata)

I trade basati sulla media mobile vengono soppiantati da quelli basati su un tipo di uscita su livelli grafici e producono risultati meno promettenti, ma comunque ci aiutano ad aumentare il numero di trade per dare un certo livello di significatività statistica al sistema in questione.

Questo è il risultato IS:

Figura 10: Risultato IS motore grezzo

Questo è invece il risultato OOS:

Figura 10: Risultato OOS motore grezzo

Aggiungendo:

  • un filtro di compressione della volatilità che mi fa operare solo se l’average true range di due barre è inferiore al corrispondente average true range calcolato su due barre ma riferito alla barra precedente
  • una logica di position sizing di tipo percent volatility che impiega un numero di azioni in funzione dell’average true range, per contenere in 500 dollari il rischio massimo

Il risultato IS è il seguente:

Figura 11: Risultato IS versione completa

Questo è invece il risultato OOS:

Figura 12: Risultato OOS versione completa

Consapevoli del fatto di introdurre fitting sarebbe interessante effettuare un analisi di persistenza con gli “abbellimenti aggiunti”, che potrebbe essere oggetto della prossima analisi.

 

 

 

 

 

 

Argomenti: ,