Vai al contenuto

L’importanza dell’ingresso in posizione: algoritmo “Moon Walker” su Bitcoin

Oggi desidero affrontare un tema molto dibattuto, sul quale si è scritto e detto molto in passato: quello dell’importanza del setup di ingresso. Che si stia parlando di strategie di trading o di investing, di approccio discrezionale o sistematico, il dubbio rimane più o meno lo stesso.

  • Quanto è importante il momento dell’ingresso in posizione?
  • Fino a che punto entrare in ritardo o in anticipo in un trade può essere costoso?
  • E’ vero che la gestione della posizione è più importante del setup di ingresso?

Proverò a rispondere a questi interrogativi portando un esempio concreto, che possa fungere da base di discussione.

Immaginiamo di prendere la crypto-valuta per eccellenza: BTC-USD su base giornaliera (fonte dati Yahoo Finance, elaborazione in Python mediante libreria “yfinance“).

Le quotazioni di Bitcoin hanno vissuto fasi alterne che ricordano quelle di una Penny Stock USA degli anni ’90 dello scorso secolo:

  • Una prima fase di crescita esponenziale (dal 2015 a fine 2017).
  • Un primo crollo durante il 2018.
  • Una seconda fase espansiva nella prima parte del 2019.
  • Un trading range ampio dalla seconda parte del 2019 all’autunno 2020.
  • Una nuova forte fase espansiva del prezzo culminata con il massimo ad oltre 60000 $ nella prima parte del 2021.
  • Il 2021 è caratterizzato poi da un crollo violento fino a 30000 $ per poi segnare il massimo di tutti i tempi durante l’autunno.
  • Infine una lunga discesa dal top (ad oltre 67000 $) fino alla violazione dei 20000 $ a fine 2022 e l’attuale recupero che ha portato i prezzi poco sotto i 30000 $.

La prima cosa che notiamo è una tendenza rialzista dello strumento che, al contrario di asset come Apple (ticker AAPL) ha vissuto fari ribassiste più violente.

Immaginando di codificare un sistema di trading su Bitcoin, in prima istanza possiamo quindi semplificare il nostro problema, mettendo in campo una politica di acquisto (“long only”), che possa competere con quello che è considerato di default il benchmark per antonomasia: il buy & hold.

Se è vero, come si sente ripetere come un mantra, che il motivo dell’ingresso non sia poi così importante, dovremmo aspettarci che la tendenza (“”bias”) di lungo termine al rialzo dello strumento debba essere dominante. Per dimostrare tale assunto effettuiamo degli ingressi casuali e delle uscite casuali sull’intera serie storica.

Utilizziamo 10000 $ ad operazione, costi fissi nulli e ripetiamo il backtest per tre volte consecutive (ogni volta genereremo una coppia di array booleani, uno per gli ingressi ed uno per le uscite).

Prima strategia casuale, long only, senza costi fissi, su BTC-USD.
Seconda strategia casuale, long only, senza costi fissi, su BTC-USD.
Terza strategia casuale, long only, senza costi fissi, su BTC-USD.

Tutte le strategie presentate presentano una dinamica positiva (guadagnano denaro al termine del periodo di osservazione) e questo è congruente con l’assunto che l’ingresso possa non essere così importante.

Vediamo cosa accade caricando un pò di costi fissi (ipotizziamo di considerare uno 0.25 x 2 round turn, tenendo conto del fatto che il sistema operi con ordini market. Di seguito tre lanci casuali di ingressi ed uscite (questa volta riportiamo anche il grafico del drawdown):

Prima strategia casuale, long only, con costi fissi, su BTC-USD.
Draw Down della prima strategia casuale, long only, con costi fissi, su BTC-USD.
Seconda strategia casuale, long only, con costi fissi, su BTC-USD.
Draw Down della seconda strategia casuale, long only, con costi fissi, su BTC-USD.
Terza strategia casuale, long only, con costi fissi, su BTC-USD.
Draw Down della terza strategia casuale, long only, con costi fissi, su BTC-USD.

E’ innegabile che il profitto si sia ridotto in maniera drastica (nonostante il bias rialzista dello strumento di lungo termine), ma quello che colpisce è l’impatto sul rischio atteso. Probabilmente è su questo secondo aspetto che dovremmo concentrare la nostra attenzione.

L’errore che più di frequente commette chi si avvicini al mondo del trading è quello di concentrarsi sui rendimenti e poco, o per nulla, su ciò che si rischia di perdere. Non tenere conto di questo aspetto può costare molto caro sia in termini monetari che psicologici, esponendo l’operatore a un potenziale knock out.

Fin qui sembra, dunque, che il motivo dell’ingresso sia ininfluente rispetto all’esito della nostra operatività.

Occupandoci di trading genetico da oltre 15 anni, abbiamo studiato queste dinamiche a valle e a monte del “”fitting” (il naturale adattamento sulla serie dei prezzi passata su cui la macchina inizia a ricercare inefficienze statistiche ripetitive). Il concetto di “fitting” (di per sé neutro) non va confuso con quello di “overfitting” (sovra-adattamento ai movimenti passati, a causa del quale la macchina inizia a legare il proprio comportamento al rumore della serie).

Sarebbe troppo facile validare una batteria di pattern genetici basati sull’analisi quantitativa (sufficientemente grezzi da non incorrere nel problema dell’overfitting) per instillare il dubbio che il setup di ingresso non sia poi così poco importante.

Allora proviamo a riprendere un meccanismo operativo più discutibile, di cui abbiamo parlato in questo articolo “Miraggi“. Avevamo applicato le fasi lunari al titolo Apple (un chiaro esempio di asset cn bias rialzista di medio lungo termine, che mostrava un’equità line piuttosto regolare). Ci chiediamo a questo punto se un ingresso apparentemente privo di senso (?) come quello citato possa battere una approccio randomico come quello che abbiamo visto qui sopra.

Impostiamo gli ingressi in corrispondenza alla Luna piena e vendiamo con la Luna nuova. nessun money management e nessun position management. Di seguito il codice python del sistema senza costi fissi applicato a BTC-USD (motore di backtest “Wintermute” fornito open source agli utenti della Python Academy).

Codice Python, motore di backtest “Wintermute” (by Gandalf Project).

Diamo uno sguardo all’equity line del sistema così ottenuto:

Strategia “Moon Walker” su BTC-USD daily (senza costi fissi).

La dinamica positiva è piuttosto evidente: il sistema riesce a cavalcare abbastanza bene i primi run up ed è addirittura in grado di registrare nuovi massimi nell’ultimo periodo (2023) battendo, di fatto il buy & hold. Ma è sufficiente ad assorbire i costi fissi di una tale operatività? Aggiungiamo il medesimo regime commissionale utilizzato in precedenza (che tiene conto anche dello slippage).

Strategia “Moon Walker” su BTC-USD daily (con aggiunta di costi fissi).

La strategia sembra funzionare anche su BTC-USD e la nostra attenzione cade sulle fasi critiche (di downtrend del sottostante). Diamo uno sguardo alla curva di drawdown e verifichiamo se, anche in questo caso, siamo in grado di battere un approccio randomico.

Drawdown dell strategia “Moon Walker” su BTC-USD daily (con aggiunta di costi fissi).

Il draw down si è ridotto (in media) di un 20%. A conferma di quanto detto.

Riportiamo per completezza anche il performance report del sistema (ottenuto sempre con la versione “Wintermute” del motore di backtest scritto in Python).

Abbiamo dunque registrato che un approccio “irrituale” di ingresso in posizione basato sulle fasi lunari sembra portare vantaggio e battere un’operatività basata su ingressi ed uscite casuali, a parità di strumento.

A questo punto lavoriamo sul filtering delle operazioni, applicando un banale filtro di trend, basato su un forecaster a 252 periodi (basato sulla regressione lineare). Di seguito i risultati sia in termini di equity line che di drawdown:

Sistema “Moon Walker” filtrato con filtro di trend.
Drawdown del sistema “Moon Walker” filtrato con filtro di trend.

Se la prima parte di questo articolo è sembrata dare lustro alla tecnica di ingresso, qui stiamo invece apprezzando l’impatto positivo dei filtri quantitativi e potenzialmente del position management: abbiamo aumentato il profitto, regolarizzato l’equity line e ridotto sensibilmente il draw down. Ricordiamo inoltre che non abbiamo applicato alcuna ottimizzazione per giungere a tali risultati che potrebbero, potenzialmente, essere ulteriormente migliorati.

Di seguito un estratto dell’operatività del sistema: si noti come l’effetto positivo del filtro agisca a prescindere dalle fasi di trend, nel breve periodo.

Come ultimo test applichiamo la medesima strategia (senza modificare alcunché) a ETH-USD e LTC-USD.

Sistema “Moon Walker” applicato su ETH-USD daily.
Sistema “Moon Walker” applicato su LTC-USD daily.

In questo articolo abbiamo discusso l’importanza del setup di ingresso nel trading, con un esempio concreto sulla cripto-valuta BTC-USD. Inizialmente, abbiamo dimostrato che le strategie casuali di ingresso e uscita possono portare a un profitto positivo, ma una volta aggiunti i costi fissi, il rischio atteso aumenta drasticamente. Successivamente, abbiamo presentato un sistema di trading basato sulle fasi lunari, che riesce a battere sia le strategie casuali che il buy & hold di BTC-USD. Abbiamo poi introdotto un filtro di trend basato su un forecaster a 252 periodi, che aumenta il profitto, regolarizza l’equity line e riduce il drawdown. Infine, abbiamo applicato il sistema anche ad altre cripto-valute come ETH-USD e LTC-USD, ottenendo comunque dei risultati positivi.

Esiste un qualche legame casuale tra cicli lunari e attività umana sulle cryptovalute? Ci conoscete e sapere quanto siamo scettici su questo tipo di approcci, tuttavia registriamo una certa persistenza dei risultati che andrebbe comunque approfondita.

La cosa importante che ci premeva evidenziare (in modo forse un pò provocatorio, ma speriamo utile) è come in generali sia consigliabile mettere in discussione qualsiasi “verità” non sia stata prima riprodotta e validata.

Quello che abbiamo visto è stato pensato e codificato in Python, in modalità open source, applicato a decine di strumenti finanziari, all’interno del modulo 4 della Python Academy. Il valore di tutto ciò, non è tanto nelle tavole grafiche, che sono a disposizione anche in questo articolo, ma nella capacità di realizzare in piena autonomia questi ed altri studi, con la potenza del codice Python. Se desideriamo apportare delle modifiche, delle aggiunte o semplicemente cambiare la veste grafica dei nostri output, è tutto a portata di mano ed il limite è soltanto la nostra fantasia.

Python, oggi sempre di più, sta rimpiazzando i meta-linguaggi e le piattaforme commerciali, sia in ambito professional che retail ed è requisito imprescindibile anche nei colloqui di lavoro in ambito quantitativo.

Have a good trade!

Giovanni Trombetta

Founder – Head of R&D 
Gandalf Project

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *