Vai al contenuto

Un approccio rigoroso per lo studio della stagionalità

Uno degli elementi più ricorrenti utilizzati (spesso ahimè a sproposito) per lo sviluppo di strategie sistematiche è il “bias”. Stiamo parlando della tendenza periodica di uno strumento finanziario a registrare dei trend definiti al rialzo o al ribasso. Il bias più elementare che siamo abituati a riconoscere è quello sul mercato azionario, sdoganato nel vecchio adagio di Wall Street “sell in may and go away” (traducibile come vendi a maggio, beneficiando dei massimi stagionali, avendo acquistato in ottobre).

Ricorrendo a qualche riferimento meno tecnico, ci vengono in soccorso i proverbi popolari legati alle condizioni meteorologiche: da “una rondine non fa primavera” a “aprile non ti scoprire”. Si tratta di tutti messaggi legati alla periodicità stagionale e all’esperienza che riporta dei comportamenti più probabili di altri. Ma per avere un senso fisico, tali indicazioni devono essere legate ad una statistica che ne avalli la riproducibilità. In questo senso le stagionalità su una azione hanno in genere un impatto ed una valenza inferiore ad una, ad esempio, su una commodity agricola, dove i tempi di semina e raccolto sono dettati dai naturali cicli della terra. In sostanza la stagionalità, come la correlazione, può essere influenzata da fenomeni casuali. L’elemento che va garantito è la “causalità”, ossia la relazione di causa effetto tra un’indicazione periodica e ciò che è in grado di generarla.

Ma come intercettare e validare una stagionalità?

Esistono molti servizi a pagamento (software o semplici reportistiche periodiche, il più celebre e serio è il servizio di Moore Research https://www.mrci.com/web/index.php in campo da diversi decenni).

Va detto però che questo tipo di servizi è adatto a chi non intenda sporcarsi le mani e sia disposto ad accontentarsi di un prodotto chiavi in mano. Se siete dei Data Scientist o più semplicemente degli appassionati di statistica, di trading o di investing, suggerisco un’altra strada, completamente gratuita e in grado di farvi comprendere in modo approfondito la meccanica delle stagionalità. Calcolare autonomamente la stagionalità, infatti, rende maggiormente consapevoli di cosa si stia cercando e di come risolvere alcune piccole insidie difficilmente comprensibili altrimenti. 
Utilizziamo Python, un vero linguaggio di programmazione che ci consenta di valutare tutti gli aspetti in gioco. Vediamo insieme un esempio e partiamo da uno strumento legato storicamente in maniera inversa ai corsi azionari nell’immaginario collettivo (il famoso bene rifugio): il Gold Future.

Prendiamo lo storico del future continuous (aggregando tutti i contratti e scalando lo storico della differenza tra il prezzo di un contratto e l’altro) dal 1 gennaio 2007, al 1 gennaio 2020. Per ciascun giorno dell’anno calcoliamo la media della variazione percentuale (molte sono le varianti sul tema, utilizzando ad esempio il 50esimo percentile della distribuzione) e produciamo l’equity line annuale spalmata su un anno bisestile (per tenere conto anche della presenza del 29 febbraio). Quella che si ottiene è la tendenza media annuale dello strumento.

Il grafico è stato ottenuto con la libreria Plotly che consente di sviluppare curve interattive ad alta qualità da integrare (volendo) anche all’interno di un sito web. Due le curve evidenziate: in blue la stagionalità multiday ed in rosso il contributo intraday tra apertura e chiusura giornaliera.

In entrambi i casi si nota una spiccata tendenza rialzista nei primi mesi dell’anno, un andamento lateral-ribassista da fine febbraio ad inizio estate, una stagionalità estiva rialzista, un autunno lateral-ribassista ed un rally coincidente alle ferie natalizie.

Possiamo facilmente aggregare tali informazioni su base mensile (con Python è sufficiente una riga di codice) e costruire un istogramma dei tre contributi: daily, intraday e gap a cavallo di sessione.

Ma avrebbe senso utilizzare queste informazioni per costruire una strategia di compravendita?

La risposta deve essere negativa per due motivi: un bias stagionale al più dovrebbe contribuire soltanto come filtro (per evitare pericolosi spostamenti della dinamica nel prossimo futuro) e, trattandosi di valori medi, tale contributo istantaneo potrebbe essere generato da pochi e grandi contributi (la cosa farebbe perdere di validità statistica dell’informazione). Se la prima problematica è una indicazione di progetto generale, esiste il modo di escludere anche la seconda. Per farlo isoliamo un periodo temporale definito (ad esempio quello rialzista dal 1 gennaio al 26 febbraio) e calcoliamo il contributo percentuale anno su anno.

Parlare di base statistica dati soli 13 campioni (il numero di anni esaminati) non ha molto senso, tuttavia si tratta dell’intero campione di osservazione e su questo possiamo produrre i nostri risultati. La dinamica si è manifestata in modo positivo 11 anni su 13 e la peggiore performance si è verificata nel 2013 con un -4.61%. La media registrata dei guadagni lordi è di quasi il 5% all’anno.

Un istogramma ci fornisce una lettura più intuitiva di ciò che abbiamo analizzato da un punto di vista metrico.

In questo caso i numeri tendono a confermare la bontà dell’indicazione data dalla stagionalità (per aumentare la significatività statistica si può ad esempio ripetere l’analisi sulla serie del mercato pre-2007).

Vediamo un altro esempio: la stagionalità positiva dal 15 agosto all’8 di settembre.

Di seguito la medesima analisi metrica svolta in precedenza:

Anche in questo caso le metriche sono incoraggianti: circa il 77% di accuratezza (10 anni su 13 negativi) per una media dell’1.6% di profitto.

Riprendiamo il primo esempio e proviamo a creare una strategia che acquisti un contratto Gold Future all’inizio del periodo di bias rialzista (il primo giorno utile dopo il 1 gennaio) e venda al termine del medesimo periodo (26 febbraio).

Se è vero che la progressione sembra interessante, in generale (come detto) è più opportuno utilizzare tale informazione solo come filtro operativo. Ad esempio, per costruire una strategia di breakout sulla rottura rialzista degli ultimi 5 massimi. Il nostro obiettivo, come trader sistematici, è quello di costruire un trading system che segua la dinamica del prezzo e non scommetta al buio sulla “temperatura di periodo”, che deve fungere soltanto da segnale di conferma.

La curva ottenuta è ovviamente meno lineare, ma la sua probabilità di continuare a salire nel prossimo futuro è sicuramente più elevata della precedente.

In questo articolo non abbiamo parlato del tema del “detrending” della curva di stagionalità, ossia della possibilità di costruire le curve di bias epurando la serie originale della componente di trend (tendenza). Sarà oggetto di uno dei prossimi articoli che presenteremo.

Tutti le elaborazioni, i codici e i grafici presentati, sono spiegati e forniti con modalità open source all’interno del percorso Python Academy (qui trovate tutti i dettagli e in caso di dubbi potete scriverci ad info@gandalfproject.com). Una trattazione più sintetica potete trovarla nel testo “Strategie di trading con Python” edito da Hoepli. Ricordiamo che Python offre la possibilità di fare tutto da soli senza spendere denaro, tuttavia un buon corso di formazione è un acceleratore prezioso per rendersi indipendenti più rapidamente. Non esiste un cammino uguale per tutti, ad ognuno la propria scelta.

Have a good trade!

Giovanni Trombetta

Head of R&D Gandalf Project

AVVERTENZE: I contenuti di questo articolo (e degli altri contenuti in questo sito) e le opinioni espresse non devono in nessun caso essere considerati come un invito all’investimento.
Le analisi non costituiscono mai una sollecitazione all’acquisto o alla vendita di qualsivoglia strumento finanziario. Queste note hanno per oggetto analisi finanziarie e ricerca in materia di investimento. Qualora vengano espresse delle raccomandazioni, queste hanno carattere generale, sono rivolte ad un pubblico indistinto e mancano dell’elemento della personalizzazione.
Sebbene frutto di approfondite analisi, le informazioni contenute in questo e negli altri articoli possono contenere errori. Gli autori non possono in nessun caso essere ritenuti responsabili per eventuali scelte effettuate dai lettori sulla base di tali informazioni erronee. Chi decide di porre in essere una qualsiasi operazione finanziaria sulla base delle informazioni contenute nel sito lo fa assumendone la totale responsabilità.

DISCLAIMER: The contents of these notes and the opinions expressed should in no case be considered as an invitation to invest. The analyzes never constitute a solicitation to buy or sell any financial instrument.
These notes relate to financial analysis and investment research. If recommendations are made, these are of a general nature, are aimed at an indistinct audience and lack the element of personalization.
Although the result of in-depth analysis, the information contained in these notes may contain errors. The authors cannot under any circumstances be held responsible for any choices made by readers on the basis of such erroneous information. Anyone who decides to carry out any financial transaction on the basis of the information contained in the site does so assuming full responsibility.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.