Studio sugli stoploss

In giro si trovano diversi tesi sulla gestione degli stoploss, chi li vuole stretti, chi li vuole larghi, chi li vuole dinamici, chi non li vuole. Ho fatto alcune prove per farmi un’idea concreta dell’effetto degli stop loss sulle diverse strategia. Prima una nota importante, ogni strategia può essere affinata con l’uso corretto degli stoploss, lo stoploss è parte integrante della strategia. Fatta questa premessa iniziale ecco come ho deciso di procedere. Utilizzo una strategia basata su candlestick, che ha un rendimento nella media senza stoploss, di seguito i dettagli della strategia e del suo comportamento. Il perimetro sono le azioni del FTSE odierne, su periodo di 10 anni. Lo studio viene fatto con le seguenti tipologie di stoploss:

  • Senza stop loss
  • Stop loss % rispetto alla chiusura precedente, applicato al prezzo minimo
  • Stop loss % rispetto alla chiusura precedente, applicato al prezzo di chiusura
  • Stop loss calcolato su ATR, applicato al prezzo minimo
  • Trailing stop applicato al minimo

I parametri di stop loss vengono ottimizzati, ossia viene fatta una simulazione con diversi valori di stop loss e vengono scelti i parametri in cui la strategia offre i migliori risultati.

Il benchmark è la strategia BuyAndHold sui medesimi titoli e vengono applicate le seguenti condizioni di contorno:

  • Importo a trade: 10.000
  • Cash: 200.000
  • Tobin Tax 0,1%
  • Commissioni: 6,75 a eseguito
  • Nessuna marginazione,
  • Nessuna possibilità di investire allo scoperto
  • Solo posizioni log

Senza stop loss

Come anticipato la strategia è di tipo candlestick, entro a una certa configurazione di pattern, esco a una certa configurazione di pattern, e offre prestazioni generalmente migliori rispetto a un buy-and-hold, qui di seguito la tabella riepilogativa a confronto con il buy-and-hold e il fact sheet.

Key Performance Metrics

MetricStrategyBenchmark
Risk-Free Rate0.0%0.0%
Time in Market100.0%100.0%
Cumulative Return101.19%193.24%
CAGR%6.56%10.28%
Sharpe0.60.57
Sortino0.850.78
Sortino/√20.60.55
Max Drawdown-23.1%-38.59%
Longest DD Days712742
Volatility (ann.)11.61%20.99%
R^20.760.76
Calmar0.280.27
Skew-0.41-0.78
Kurtosis6.337.87

Factsheet

Stop Loss % applicato su minimo

Questo è lo stop loss standard, ossia quello consentito dai sistemi di trading, se il prezzo scende sotto il valore di soglia, la posizione viene chiusa. Il valore viene calcolato dal prezzo di apertura della posizone. Uno stop al 90% chiude la posizione se il prezzo scende sotto il 90% del prezzo di apertura della posizione. Questo tipo di stop loss è molto sensibile rispetto alle variazioni intraday del prezzo, e in particolare risente degli spike. Tempo fa avevo una posizione NEXI molto buona aperta con uno stop al 90%, o(ssia perdita max 10%). La posizione guadagnava ca 8-9%, verso le 10 un lungo spike ha attraversato lo stop, riassorbendosi interamente nel giro di 20 minuti. A fine giornata guadagnava un altro 0,23%. Probabilmente qualche istituzionale ha fatto un’operazione di caccia agli stop (hunter stop) perché nei 10 giorni successivi Nexi sembrava un missile diretto sulla luna. Per trovare il valore ottimale di stop loss ho fatto una simulazione con le soglie: stoploss=0.95,0.9,0.85,0.8,0.75,0.7, si potrebbe fare un ulteriore tuning, ma mi sembra un dispendio di energie in questa fase. La soglie di stop loss che offre le migliori prestazioni è 0.85, ossia il 15% si perdita prima di chiudere la posizione.

Key Performance Metrics

MetricStrategyBenchmark
Risk-Free Rate0.0%0.0%
Time in Market100.0%100.0%
Cumulative Return98.56%193.24%
CAGR%6.44%10.28%
Sharpe0.780.57
Sortino1.140.78
Sortino/√20.810.55
Max Drawdown-12.8%-38.59%
Longest DD Days515742
Volatility (ann.)8.39%20.99%
R^20.640.64
Calmar0.50.27
Skew-0.05-0.78
Kurtosis4.817.87

Stop Loss % applicato sul prezzo di chiusura

L’approccio è analogo a quelle precedente, solo che viene guardato solo il prezzo di chiusura. Una soglia al 90% chiude la posizione se il prezzo di chiusura scende sotto la soglia. Rispetto a uno stop di prezzo, lo stop di chiusura è meno sensibile alle variazioni intraday e ai cacciatori di stop. D’altro canto se il titolo inizia a scendere, la posizione viene chiusa con maggior ritardo e il rischio di una maggior perdita al mattino seguente. rumore a metà giornata di un eventi di cui viene data comunicazione ufficiale a borse chiuse può portare a un rapido crollo del valore. Anche qui il valore ottenuto come miglior stoploss è 85% del prezzo di entrata. Qui di seguito la tabella riepilogativa e il link al fact sheet.

Key Performance Metrics

MetricStrategyBenchmark
Risk-Free Rate0.0%0.0%
Time in Market100.0%100.0%
Cumulative Return99.09%193.24%
CAGR%6.46%10.28%
Sharpe0.750.57
Sortino1.090.78
Sortino/√20.770.55
Max Drawdown-15.23%-38.59%
Longest DD Days515742
Volatility (ann.)8.83%20.99%
R^20.670.67
Calmar0.420.27
Skew-0.08-0.78
Kurtosis3.787.87
Stop loss su chiusura

Trailing stop

Il trailing stop è uno stop dinamico che mantiene la medesima distanza (% o tick) rispetto all’ultimo massimo registrato dall’apertura della posizione. Questo non è un vero e proprio stop e può essere parte integrante di una condizione d’uscita dalla posizione in una strategia. L’indicatore supertrend utilizza un approccio di questo tipo, crea un canale in cui il trainling stop è calcolato dinamicamente sulla base dell’ATR. Si possono creare diverse varianti del trailing stop e meriterebbe una trattazione dedicata . Ho utilizzato solo la forma più classica, la posizione viene chiusa quando la distanza di prezzo rispetto al massimo registrato super la % indicata.

Key Performance Metrics

MetricStrategyBenchmark
Risk-Free Rate0.0%0.0%
Time in Market100.0%100.0%
Cumulative Return101.58%193.24%
CAGR%6.58%10.28%
Sharpe0.620.57
Sortino0.880.78
Sortino/√20.620.55
Max Drawdown-22.74%-38.59%
Longest DD Days700742
Volatility (ann.)11.25%20.99%
R^20.760.76
Calmar0.290.27
Skew-0.36-0.78
Kurtosis6.027.87
Trailing stop

Stop loss su ATR

Una delle principali critiche degli stop loss basati sulla % è che non tengono in considerazione l’ampiezza delle fluttuazioni giornaliere subita da un titolo. il rischio è quindi di uscire prematuramente da una buona posizione che potrebbe rendere, perché il titolo è particolarmente volatile. Lo stop loss viene quindi calcolato non più con una % fissa, ma con un moltiplicatore m dell’ATR(t) , con t il periodo di osservazione. Per ottimizzare la strategia vengono clacolati entrambi i coefficienti t e m ottimali. Dall’ottimizzazione si ottengono i valori di moltiplicatore m=5 e periodo di osservazione t=10. in letterature ho trovato diversi valori, i più comuni sono m=6 e t=10. Con i valori ottimali per la stategia otteniamo la seguente tabellla e factsheet.

Key Performance Metrics

MetricStrategyBenchmark
Risk-Free Rate0.0%0.0%
Time in Market100.0%100.0%
Cumulative Return98.08%193.24%
CAGR%6.41%10.28%
Sharpe0.710.57
Sortino1.020.78
Sortino/√20.720.55
Max Drawdown-14.39%-38.59%
Longest DD Days518742
Volatility (ann.)9.36%20.99%
R^20.630.63
Calmar0.450.27
Skew-0.23-0.78
Kurtosis6.667.87
Stop loss su ATR

Conclusioni

Uno stop loss corretto può dare benefici alla strategia, oltre a questi test ne ho fatto altri utilizzando diversi asset o diverse strategie, non vi è una regola per cui posso dire che uno stop loss sia meglio di un’altro in senso generale. Ciò che vale per la strategia specifica è che lo stop loss porta dei benefici. Se il pattern di candele per l’uscita non si verifica, c’è il rischio di perdere senza limiti. Indicativamente il valore % di stop loss (anche per l’ATR è intorno al 15%, con prove più di dettaglio si trova un minimo relativo tra 12% e 14%. Uno stop più stretto avrebbe strozato la strategia.

Personalmente preferisco uno stop loss % che posso impostare sul sistema, quindi l’ATR e lo stop sulla chiusura sono tendenzialmente da escludere.

Il trailing stop lo riservo più alla strategia che non alla chiusura della posizione. Ad esempio, apro la posizone, chiudo metà della posizone al segnale di chiusura, se il trend è ancora positivo imposto un trailing stop al 5%.

Come ultimo grafico inserisco il confronto tra la strategia senza stoploss e quella con il miglior risultato, stop loss al 85%. (Perdita max 15%)

Algoritmi di trading

Di recente mi sono appassionato, per vari motivi tra cui la voglia di sperimentare nuove tecnologie, agli algoritmi di trading automatico. Qualche tempo fa ho letto un libro di AI (Artificial Intelligence) o all’italiana IA e mi sono chiesto se effettivamente algoritmi di ML (Machine Learning). La mia ambizione è solo quella di divertirmi con un nuovo giocatolo, non certo di competere con bravi scienziati, investitori e trader che si stanno cimentando con la materia. Fatte le prime prove mi sono reso conto che il passo verso algoritmi di AI possono arrivare solo dopo aver preso padronanza con la materia, ossia l’analisi tecnica e il backtesting.

Imparato un po’ di pyhton e le API Backtrader per il testing su dati storici mi sono creato la mia sandbox. Purtroppo in italiano non esiste un termine che esprime il significato per ‘sandbox‘, in tedesco direi Sandkiest, In italiano sarebbe sabbiera o qualcosa del genere. in pratica la scatola di sabbia in cui giocano i bambini nei parco giochi inglesi e tedeschi. In Italia si gioca con la sabbia al mare, non in una scatola come invece fanno i bambini tedeschi e inglesi. A ogni modo mi sono creato l’ambiente con cui giocare così composto:

  • Python con framework Backtrader
  • Storico dei dati giornalieri di alcune azioni FTSE MIB dal 2010 a fine 2020.
  • Algoritmi di trand following da sperimentare

Il paniere di azione è composto da alcune azioni che hanno dati storici fino al 2010 , nello specifico questo è l’elenco di 26 azioni che ho utilizzato per le mie prove:

tickers = [
'ENEL','ENI','EXO','FCA','G','HER','IP','ISP','MB','PRY',
'A2A','AMP','ATL','BAMI','BGN','BMED','BPE','BZU','CPR','DIA',
'SRG','STM','TEN','TIT','UCG','UNI'
]

La scelta di Backtrader è legata semplicemente al fatto che ho trovato una guida rapida e veloce che nel giro di una giornata mi ha consentito di implementare il primo algoritmo. E’ semplice intuitivo e con alcune funzioni di ottimizzazione degli algoritmi. Gestisce la simulazione con diversi aspetti come le commissioni, OCO, stop, limit, gestione del cash e dimensionamento degli ordini,…. Framework ben fatto con due limiti individuati fino ad ora:

  • Elevato utilizzo della memoria nelle ottimizzazione, per ottimizzare 5 parametri sul mio portafoglio di 10 pagina troppo. Sicuramente il fatto che uso un PC con 8GB non aiuta, ma credo che l’algoritmo sia pensato per le prestazioni a discapito della ram. In effetti le CPU (8) sono sempre a tappo quando gira l’ottimizzazione.
  • Il secondo limite è l’utilizzo degli stoploss, take profit e trailing stop. Tipicamente queste sono caratteristiche legate agli ordini stessi, su Backtrader vanno implementate ad hoc con alcuni accorgimenti in modo un po’ macchinoso.

Presa padronanza del sistema ho voluto fare delle prove con diverse strategie di trand following che si trovano abitualmente in giro. Ho saltato i classici incroci di medie e mi sono soffermato su 3 strategie che si appoggiano ad indicatori interessanti e popolari: HMA, MACD e RSI. Ho incrociato i diversi indicatori perché ovunque si legge che un indicatore da il segnale e il secondo la conferma. Ovviamente non mi sono inventato l’acqua calda ho iniziato con le strategie ritenute valide da esperti del settore.

I risultati che ho ottenuto mi hanno aperto gli occhi su alcuni nozioni studiate sulla carta e per le quali l’istinto darebbe indicazioni contrarie.

Di seguito i risultati delle prove fatte, con il seguente contesto di contorno:

  • Solo posizioni long
  • Entrate con importo costante da 10.000€
  • Cash iniziale 260.000€ sufficiente per coprire acquistare tutti i titoli insieme
  • Nessuna leva
  • Senza Stop loss o trailing stop
  • Prese di posizione solo al verificarsi di eventi legati alla strategia
  • Indici di valutazione: permanenza nel mercato, ritorno cumulativo, sharpe, max drowdown e DD più lungo, altri indicatori non sono interessanti almeno per me
  • Vengono applicate commissioni 6,75€ a eseguito e la tobing tax al 0,7%
  • Vengono utilizzati i dati di Yahoo Finance aggiustati sulle operazioni societarie (split, dividendi,…)

RSI

  • Entrata in situazione di iperventuto RSI < 30
  • Uscita dopo 5 giorni o RSI > 50

Il risultato è stato deludente, dal 2010 al 2018 ha raggiunto un ritorno di 15% ca, ma nel 2018 ha subito un calo importate e poi un crollo nel 2020 con il crollo dei mercati di marzo. Dopo 10 anni ha totalizzato ricavi netto tobin tax lordo cap.g. per 2.431€. La permanenza nel mercato è stato da 54%, ossia molto poco tenendo conto che sono 26 i titoli su cui operare.

Time in Market50.0%
Cumulative Return0.94%
CAGR%0.08%
Sharpe0.05
Sortino0.06
Max Drawdown-26.55%
Longest DD Days959
Riepilogo risultati RSI 2010-2020

Qui il link alla scheda del risultato.

MACD

  • Entrata con istogramma positivo
  • Uscita con istogramma negativo

Il risultato è decisamente migliore con un guadagno netto di 231.563€. Nel periodo 2011-2012 non è stato possibile entrare su alcune posizione per assenza di liquidità. L’impossibilità ad entrare in posizione altera il risultato della simulazione perché riduce le perdite ma ritarda anche i guadagni.

Time in Market55.0%
Cumulative Return89.06%
CAGR%5.96%
Sharpe0.53
Sortino0.76
Max Drawdown-31.14%
Longest DD Days1091
Riepilogo risultati MACD 2010-2020

Qui il link alla scheda del risultato.

HMA

  • Entrata: HMA passa da decrescete a crescente
  • Uscita: HMA passa da crescete a descrescente

Il risultato non è entusiasmante, la liquidità è scarsa dal 2011 al 2013, molte operazioni non vengono eseguite assenza di liquidità e al termine del periodo il guadagno netto è di 89.761 € (netto tobin lordo cap.g.).

Time in Market58.0%
Cumulative Return34.52%
CAGR%2.73%
Sharpe0.26
Sortino0.37
Max Drawdown-37.55%
Longest DD Days2037
Riepilogo risultato HMA 2010-2020

Qui il link alla scheda del risultato

Buy and Hold

Il risultato più interessante è dato dalla strategia Buy and hold, ossia compro il 1/1/2010 e vendo il 31/12/2020. Bene, con questa strategia il P&L netto è di 433.342, ossia il capitale di partenza è moltiplicato per 2,66, una media di ca. 10% annuo.

Time in Market100.0%
Cumulative Return166.74%
CAGR%9.33%
Sharpe0.52
Sortino0.71
Max Drawdown-38.63%
Longest DD Days970
Riepilogo risultato buy and Hold 2010-2020

Qui il link alla scheda del risultato

Per riassumere la strategia vincente sembra essere Buy and Hold la migliore.

BAHMACDHMARSI
Time in Market100.0%55.0%58.0%50.0%
Cumulative Return166.74%89.06%34.52%0.94%
CAGR%9.33%5.96%2.73%0.08%
Sharpe0.520.530.260.05
Sortino0.710.760.370.06
Max Drawdown-38.63%-31.14%-37.55%-26.55%
Longest DD Days97010912037959
Tabella comparativa strategie

Guardando il puro profitto la strategia ‘BuyAndHold’ è sicuramente la strategia migliore, ma a lunga distanza. In un decalogo di regole direi che la prima da mettere è di non chiudere una posizione in perdità salvo in caso di necessità di liquidità o per una strategia molto profittevole. Il periodo sott’acqua è molto lungo 970 giorni con una perdita massima del 38,63%.

Considerando l’indice di sharpe la strategia MACD sembra migliore perché in effette è più costante nel tempo. Una simulazione togliendo le commissioni e la tobin tax mostra come la MACD sia tutto sommato migliore per alcuni aspetti rispetto alla BuyAndHold. In particolare il periodo DD massimo è di ‘soli’ giorni 640 giorni, ben 330 in meno rispetto a BuyAndHold. L’indice di sharpe si porta a 0.62 e il rendimento si assesta su 288.923€. Nel corso di 10 anni vengono lasciati ben 50.000 in commissioni e tobin tax sul campo.

Time in Market55.0%
Cumulative Return111.12%
CAGR%7.03%
Sharpe0.62
Sortino0.91
Max Drawdown-30.2%
Longest DD Days640
Strategia MACD 2010-2020 senza commissioni e tobin tax

Ecco il factsheet della strategia MACD senza commissioni

WP to LinkedIn Auto Publish Powered By : XYZScripts.com