Text Size
Tuesday, December 01, 2020
Area

Gandalf Store

Coding

Formazione

Consulenza

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:

In questo caso notiamo una accuratezza di circa il 77% (10 su 13 anni) con una media decisamente meno appetibile del 2% (va detto con un numero di giorni inferiore). Ma l’elemento che ci fa scartare tale soluzione è la distribuzione dei guadagni sull’istogramma.


Infatti, esiste il forte dubbio che la dinamica del contributo stagionale stia mutando: dal 2014, infatti, tale contributo si è rimanifestato soltanto una volta (nel 2017).

Analizziamo infine una stagionalità negativa: quella dal 26 febbraio al 3 aprile, corrispondente alla prima fase del lungo downtrend primaverile.

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 This email address is being protected from spambots. You need JavaScript enabled to view it.). 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

Privacy & Cookies Policy

Questo sito utilizza i Cookies per migliorare la navigazione. Utilizzando questo sito e continuando nella navigazione si intende accettata la Privacy Policy e la Cookies Policy. Puoi bloccare in ogni momento questa raccolta di informazioni seguendo le istruzioni contenute in queste pagine.

 


 

Topics

Intelligenza Artificiale

L' Intelligenza Artificiale e le più moderne tecnologie di Ingegneria Genetica al servizio del Trading...

Read more...

Consulenza

Gandalf Project è sia un Laboratorio di Finanza Quantitativa che una Società di Consulenza...

Read more...

Python

La scelta di Python come codice elementare per la modellizzazione di ambienti complessi...

Read more...