EbenezerScrooge
Nuovo Utente
- Registrato
- 6/7/14
- Messaggi
- 645
- Punti reazioni
- 23
Ho di recente consegnato un nuovo modello previsionale, stavolta per i prezzi, non per la volatilità. Vale la pena condividere i risultati anche di questo.
L'idea del modello come al solito è prendere un concetto solido e sfruttarlo al meglio, in questo caso l'idea è la più vecchia del mondo, seguire i trend.
Il problema è che quando si cerca di formalizzare questa cosa e di farne il motore di un trading system si incontrano molte difficoltà. Intanto non è facilissimo stabilire in modo assoluto cos'è un trend. Stabilire dove inizia e dove finisce non è ovvio. Il concetto intuitivo di una retta che tutti abbiamo visto nei manuali di analisi tecnica non si avvicina nemmeno a descrivere la cosa. Infatti la risposta è che non c'è una risposta univoca. Uno dei metodi classici con cui si affronta la cosa è stabilire delle soglie di volatilità oltre le quali un trend si considera interrotto (è il principio del celebre indicatore Supertrend.) Quindi ad esempio se decidiamo che un trend rialzista si considera concluso quando si verifica un ribasso locale del 60% otterremo che SP500 è in un unico continuo trend che prosegue dagli anni '50 ad oggi. Se invece decidiamo che la soglia è del 3% otterremo una lunga sequenza di trend più brevi. La bontà di questa definizione dipende dallo scopo che vogliamo perseguire.
Ad esempio ci sono degli studi che mostrano quali sono i parametri ottimi per il Supertrend e anche se in effetti di solito usare le soglie di volatilità come trailing stop nelle strategie trend following può portare a qualcosa di buono i parametri ottimi variano continuamente nel tempo e a seconda del sottostante.
Quello di cui nessuno si accorge è che il motivo per cui le strategie trend following falliscono è perché la cosa più difficile non è capire cosa comprare, qualsiasi indicatore è in grado di distinguere tra tori e orsi; la cosa davvero difficile che fa la differenza tra il successo e il fallimento è stabilire i livelli di ingresso e gli stop. Le strategie trend following dipendono praticamente solo da questo. Un segnale di ingresso long in un trend rialzista può far perdere soldi.
In sostanza si tratta di capire qual è il punto migliore di un trend in cui entrare, ed è un problema abbastanza intuitivo. Da un lato entrare precocemente in un trend appena nato può massimizzare il profitto ma aumenta sensibilmente il rischio di falsi segnali. Al contrario entrare in un trend già consolidato e di lungo corso aumenta la probabilità che quello continui ma riduce il possibile profitto perché il trend sarà più prossimo alla fine. Infatti le strategie basate sul supertrend che forniscono segnali di ingresso non appena si rompe al rialzo la barriera di volatilità forniscono un mare di falsi segnali e se anche hanno profitti hanno quasi sempre delle percentuali di vittoria inferiori al 50%. In pratica il supertrend dice di entrare in ogni movimento al rialzo, ma solo di rado questo significherà aver beccato un lungo trend appena nato. Diciamo che il supertrend così facendo "spara nel mucchio" e qualcosa becca ma il più delle volte non becca nulla.
Quindi come si fa? C'è un punto "statisticamente ottimo" di ingresso?
Io per rispondere ho preso gli 80 titoli con gli spread più bassi di sp500 (la commessa è per azioni USA) e su questi titoli ho creato un ampio database con dentro tutti i trend avvenuti dal 2007 ad oggi. Per delimitare questi trend ho usato il supertrend appunto. Solo che in questo caso la scelta dei suoi parametri non è così importante perché non userò questo indicatore per produrre segnali operativi. Mi serve solo per delimitare i trend e averne una collezione abbastanza ampia da poter fare considerazioni statistiche. Nello specifico con 10 anni di contrattazione e 80 titoli ho messo insieme un db con più di 100000 elementi.
A questo punto per ognuno di questi elementi ho creato delle metriche più o meno rilevanti per caratterizzare il trend in questione. Alcune di queste sono le più ovvie:
1. durata del trend in corso al tempo attuale
2. gain del trend in corso al tempo attuale
3. andamento storico (ad esempio, il ritorno dell'ultimo anno)
altre sono meno ovvie.
A questo punto ogni singolo trend nel mio db è caratterizzato da un vettore di numeri che sarebbero le metriche che ho appena detto e che danno una descrizione più o meno esaustiva del trend e del contesto in cui è avvenuto. A questo punto ho addestrato degli ensemble di reti neurali ad associare a queste metriche la durata residua del trend sia in termini di tempo che di gain. In sostanza le mie reti neurali prendono in input le caratteristiche del trend in corso e sulla base di quello che è avvenuto negli ultimi 10 anni forniscono in output una previsione di quanto ancora durerà quel trend. In questo modo sono in grado contemporaneamente di dirmi su base statistica quali sono i trend più promettenti, quali i livelli di ingresso migliori e quali i livelli di stop migliori.
Ho backtestato la strategia in un periodo che va da dicembre 2015 a maggio 2017. La scelta dell'inizio del test non è casuale, essendo una strategia only long volevo inserire anche una situazione di mercato avversa (la crisi dei mercati orientali di gennaio 2016.)
Per il test ho scelto una strategia di money management molto elementare e molto prudente. La size dell'investimento è fissa ed è il 2% del capitale iniziale.
Di seguito la equity line della strategia e le statistiche. Uso come benchmark un classico buy & hold su sp500 e una strategia con stesso money management, sempre only long ma coi segnali prodotti in modo classico dall'indicatore Supertrend. Da notare che dà buoni risultati anche la classica strategia basata sul Supertrend, solo che guardando le sue statistiche si vede che praticamente è una strategia che perde più che vincere, solo che quando vince vince molto perchè entra nei trend all'inizio quindi di media risulta profittevole.
Neural Networks
Periodo = 21 Dicembre 2015 - 31 Maggio 2017
Size = fissa, 2% del capitale iniziale (2000)
Titoli complessivi analizzati = 80
Titoli effettivamente negoziati = 25
Capitale iniziale = 100000
Capitale finale = 181145
N. trade = 424
Net Profit = 81145
Gain = 81%
Average gain = 9.6%
Winning percentage = 70%
Max drawdown = -4.6%
Durata media operazioni = 46 giorni
Supertrend
Periodo = 21 Dicembre 2015 - 31 Maggio 2017
Size = fissa, 2% del capitale iniziale (2000)
Capitale iniziale = 100000
Capitale finale = 133363
N. trade = 395
Net Profit = 33363
Gain = 33%
Average gain = 4.22%
Winning percentage = 47.5%
Max drawdown = -2.6%
Durata media operazioni = 39 giorni
SP500 B&H
Periodo = 21 Dicembre 2015 - 31 Maggio 2017
Size = 100%
Titoli complessivi analizzati = 1
Titoli effettivamente negoziati = 1
Capitale iniziale = 100000
Capitale finale = 120256
N. trade = 1
Net Profit = 20256
Gain = 20%
Average gain = 20%
Winning percentage = 100%
Max drawdown = -12%
Durata media operazioni = 363 giorni
Un altro grafico molto interessante è quello della variazione dell'average trade; ha sull'asse delle x gli stop limit predetti dalle reti neurali e sull'asse y l'average gain che si è poi effettivamente verificato associato a quei livelli di uscita. Le uscite previste sovrastimano decisamente l'effettivo gain, ma questo è dato dal fatto che l'algoritmo non esce dalle posizioni solo al raggiungimento del target gain ma anche al raggiungimento della scadenza temporale per cui la rete neurale ha individuato l'apice del trend. Quindi si esce dalla posizione:
1. In profitto se si raggiunge il target
2. In perdita se si tocca lo stop loss (simmetrico rispetto al target)
3. Alla scadenza temporale per cui la rete prevede l'apice del trend. Questa uscita può essere sia in perdita che in gain.
La cosa davvero interessante è che è un grafico che (al netto di ovvie irregolarità) cresce sempre. Questo significa che possiamo "alzare la manopolina" del gain previsto dalle reti quanto vogliamo e selezionare trade sempre più sicuri fino a percentuali di vittoria superiori al 90%. In sostanza questo grafico dice che selezionando i trend per i quali il modello ha previsto un margine di continuazione più ampio effettivamente andiamo sempre a guadagnare di più. Ovviamente così faremo molte meno operazioni ma è un ottimo elemento che testimonia la bontà del modello. Per il backtest ho scelto di mantenere il numero di trade accontentandomi di un average trade e una winning percentage discreti, ma avrei potuto scremare ancora di più fino ad avere il 100% di vittorie e un average gain del 15-20% solo che così facendo avrei effettuato molte meno operazioni.
L'idea del modello come al solito è prendere un concetto solido e sfruttarlo al meglio, in questo caso l'idea è la più vecchia del mondo, seguire i trend.
Il problema è che quando si cerca di formalizzare questa cosa e di farne il motore di un trading system si incontrano molte difficoltà. Intanto non è facilissimo stabilire in modo assoluto cos'è un trend. Stabilire dove inizia e dove finisce non è ovvio. Il concetto intuitivo di una retta che tutti abbiamo visto nei manuali di analisi tecnica non si avvicina nemmeno a descrivere la cosa. Infatti la risposta è che non c'è una risposta univoca. Uno dei metodi classici con cui si affronta la cosa è stabilire delle soglie di volatilità oltre le quali un trend si considera interrotto (è il principio del celebre indicatore Supertrend.) Quindi ad esempio se decidiamo che un trend rialzista si considera concluso quando si verifica un ribasso locale del 60% otterremo che SP500 è in un unico continuo trend che prosegue dagli anni '50 ad oggi. Se invece decidiamo che la soglia è del 3% otterremo una lunga sequenza di trend più brevi. La bontà di questa definizione dipende dallo scopo che vogliamo perseguire.
Ad esempio ci sono degli studi che mostrano quali sono i parametri ottimi per il Supertrend e anche se in effetti di solito usare le soglie di volatilità come trailing stop nelle strategie trend following può portare a qualcosa di buono i parametri ottimi variano continuamente nel tempo e a seconda del sottostante.
Quello di cui nessuno si accorge è che il motivo per cui le strategie trend following falliscono è perché la cosa più difficile non è capire cosa comprare, qualsiasi indicatore è in grado di distinguere tra tori e orsi; la cosa davvero difficile che fa la differenza tra il successo e il fallimento è stabilire i livelli di ingresso e gli stop. Le strategie trend following dipendono praticamente solo da questo. Un segnale di ingresso long in un trend rialzista può far perdere soldi.
In sostanza si tratta di capire qual è il punto migliore di un trend in cui entrare, ed è un problema abbastanza intuitivo. Da un lato entrare precocemente in un trend appena nato può massimizzare il profitto ma aumenta sensibilmente il rischio di falsi segnali. Al contrario entrare in un trend già consolidato e di lungo corso aumenta la probabilità che quello continui ma riduce il possibile profitto perché il trend sarà più prossimo alla fine. Infatti le strategie basate sul supertrend che forniscono segnali di ingresso non appena si rompe al rialzo la barriera di volatilità forniscono un mare di falsi segnali e se anche hanno profitti hanno quasi sempre delle percentuali di vittoria inferiori al 50%. In pratica il supertrend dice di entrare in ogni movimento al rialzo, ma solo di rado questo significherà aver beccato un lungo trend appena nato. Diciamo che il supertrend così facendo "spara nel mucchio" e qualcosa becca ma il più delle volte non becca nulla.
Quindi come si fa? C'è un punto "statisticamente ottimo" di ingresso?
Io per rispondere ho preso gli 80 titoli con gli spread più bassi di sp500 (la commessa è per azioni USA) e su questi titoli ho creato un ampio database con dentro tutti i trend avvenuti dal 2007 ad oggi. Per delimitare questi trend ho usato il supertrend appunto. Solo che in questo caso la scelta dei suoi parametri non è così importante perché non userò questo indicatore per produrre segnali operativi. Mi serve solo per delimitare i trend e averne una collezione abbastanza ampia da poter fare considerazioni statistiche. Nello specifico con 10 anni di contrattazione e 80 titoli ho messo insieme un db con più di 100000 elementi.
A questo punto per ognuno di questi elementi ho creato delle metriche più o meno rilevanti per caratterizzare il trend in questione. Alcune di queste sono le più ovvie:
1. durata del trend in corso al tempo attuale
2. gain del trend in corso al tempo attuale
3. andamento storico (ad esempio, il ritorno dell'ultimo anno)
altre sono meno ovvie.
A questo punto ogni singolo trend nel mio db è caratterizzato da un vettore di numeri che sarebbero le metriche che ho appena detto e che danno una descrizione più o meno esaustiva del trend e del contesto in cui è avvenuto. A questo punto ho addestrato degli ensemble di reti neurali ad associare a queste metriche la durata residua del trend sia in termini di tempo che di gain. In sostanza le mie reti neurali prendono in input le caratteristiche del trend in corso e sulla base di quello che è avvenuto negli ultimi 10 anni forniscono in output una previsione di quanto ancora durerà quel trend. In questo modo sono in grado contemporaneamente di dirmi su base statistica quali sono i trend più promettenti, quali i livelli di ingresso migliori e quali i livelli di stop migliori.
Ho backtestato la strategia in un periodo che va da dicembre 2015 a maggio 2017. La scelta dell'inizio del test non è casuale, essendo una strategia only long volevo inserire anche una situazione di mercato avversa (la crisi dei mercati orientali di gennaio 2016.)
Per il test ho scelto una strategia di money management molto elementare e molto prudente. La size dell'investimento è fissa ed è il 2% del capitale iniziale.
Di seguito la equity line della strategia e le statistiche. Uso come benchmark un classico buy & hold su sp500 e una strategia con stesso money management, sempre only long ma coi segnali prodotti in modo classico dall'indicatore Supertrend. Da notare che dà buoni risultati anche la classica strategia basata sul Supertrend, solo che guardando le sue statistiche si vede che praticamente è una strategia che perde più che vincere, solo che quando vince vince molto perchè entra nei trend all'inizio quindi di media risulta profittevole.
Neural Networks
Periodo = 21 Dicembre 2015 - 31 Maggio 2017
Size = fissa, 2% del capitale iniziale (2000)
Titoli complessivi analizzati = 80
Titoli effettivamente negoziati = 25
Capitale iniziale = 100000
Capitale finale = 181145
N. trade = 424
Net Profit = 81145
Gain = 81%
Average gain = 9.6%
Winning percentage = 70%
Max drawdown = -4.6%
Durata media operazioni = 46 giorni
Supertrend
Periodo = 21 Dicembre 2015 - 31 Maggio 2017
Size = fissa, 2% del capitale iniziale (2000)
Capitale iniziale = 100000
Capitale finale = 133363
N. trade = 395
Net Profit = 33363
Gain = 33%
Average gain = 4.22%
Winning percentage = 47.5%
Max drawdown = -2.6%
Durata media operazioni = 39 giorni
SP500 B&H
Periodo = 21 Dicembre 2015 - 31 Maggio 2017
Size = 100%
Titoli complessivi analizzati = 1
Titoli effettivamente negoziati = 1
Capitale iniziale = 100000
Capitale finale = 120256
N. trade = 1
Net Profit = 20256
Gain = 20%
Average gain = 20%
Winning percentage = 100%
Max drawdown = -12%
Durata media operazioni = 363 giorni
Un altro grafico molto interessante è quello della variazione dell'average trade; ha sull'asse delle x gli stop limit predetti dalle reti neurali e sull'asse y l'average gain che si è poi effettivamente verificato associato a quei livelli di uscita. Le uscite previste sovrastimano decisamente l'effettivo gain, ma questo è dato dal fatto che l'algoritmo non esce dalle posizioni solo al raggiungimento del target gain ma anche al raggiungimento della scadenza temporale per cui la rete neurale ha individuato l'apice del trend. Quindi si esce dalla posizione:
1. In profitto se si raggiunge il target
2. In perdita se si tocca lo stop loss (simmetrico rispetto al target)
3. Alla scadenza temporale per cui la rete prevede l'apice del trend. Questa uscita può essere sia in perdita che in gain.
La cosa davvero interessante è che è un grafico che (al netto di ovvie irregolarità) cresce sempre. Questo significa che possiamo "alzare la manopolina" del gain previsto dalle reti quanto vogliamo e selezionare trade sempre più sicuri fino a percentuali di vittoria superiori al 90%. In sostanza questo grafico dice che selezionando i trend per i quali il modello ha previsto un margine di continuazione più ampio effettivamente andiamo sempre a guadagnare di più. Ovviamente così faremo molte meno operazioni ma è un ottimo elemento che testimonia la bontà del modello. Per il backtest ho scelto di mantenere il numero di trade accontentandomi di un average trade e una winning percentage discreti, ma avrei potuto scremare ancora di più fino ad avere il 100% di vittorie e un average gain del 15-20% solo che così facendo avrei effettuato molte meno operazioni.
Ultima modifica: