Il potere dei numeri

Quando si parla di un approccio “quantitativo” per analizzare un fenomeno, si fa riferimento alla capacità di fissare dei riferimenti misurabili e confrontabili tra di loro. Uno dei fondamenti del metodo scientifico è quello della verificabilità e riproducibilità dei risultati. Una volta date le variabili di funzionamento di un esperimento e note le condizioni al contorno, deve essere possibile per chiunque riprodurre i risultati pubblicati. Questo a garanzia delle fonti e di un protocollo condiviso che coinvolge l’intero insieme degli attori interessati.

Affermazioni come “quando accade l’evento A allora si verifica l’evento B”, perdono completamente valenza a favore di affermazioni più circostanziate e verificabili, che devono scendere a patto con i numeri. Il nostro alfabeto di sperimentazione e validazione universale.

Il trading, come l’investing, non fa eccezione. Quando si discute una tecnica operativa su tavoli importanti, ormai è scontata la richiesta di un backtest (o di un forward test) con tanto di notifica dei criteri di validazione. Questo perché i mercati finanziari sono mutevoli e spesso modelli statici soffrono di fenomeni ciclici (regolari o irregolari) di adattamento e asincronia con il mercato di applicazione.

I numeri non mentono.

Sono in grado di dirci se un sistema si stia allontanando dal suo regime di funzionamento o se invece sia ancora robusto e in salute. Uno dei motivi per cui oggi sempre più professionisti scelgono di abbandonare il mondo delle suite software a favore del coding open source (ad esempio con Python) è proprio la necessità di essere padroni dei numeri che si presentano. Al netto delle voci considerate “mandatorie” all’interno di un performance report di una strategia, esiste la possibilità di personalizzare nel modo più opportuno tutta una serie di indicatori metrici e protocolli di validazione. A quale versione del Kestner Ratio stiamo facendo riferimento? La formula del Calmar Ratio più adatta per far emergere la qualità della nostra strategia di investing, è quella classica o quella annualizzata? Come posso tenere conto della sovrapposizione della distribuzione dei trade in In Sample ed in Out of Sample? Questi vogliono essere solo alcuni spunti per far comprendere come chi sia in grado di dominare tali elementi ed essere autonomo nella loro progettazione, possa garantirsi un vantaggio competitivo non indifferente.

Seguendo questa logica, all’interno dell’acceleratore didattico Python Academy, la scorsa settimana abbiamo rilasciato una nuova versione, completamente personalizzabile, del motore di backtest Python e del relativo modulo di Performance Report (versione denominata “Wintermute”). Dopo anni sui mercati, insieme al nostro team di ricerca e sviluppo, abbiamo sedimentato alcune evidenze che abbiamo tradotto in diverse metriche, lasciando spazio alla possibilità, con poche righe di codice, di intervenire a favore di una ulteriore personalizzazione. Mentre parliamo, decine di corsisti stanno già producendo nuove varianti di tali motore, come è accaduto con al precedente versione (“Skywalker”). E’ proprio questo il grande potenziale di una community open source.

Desidero condividere con tutti voi alcune tavole che possano rendere l’idea del lavoro fatto, cercando anche di veicolare alcune informazioni utili.

Nell’esempio di seguito abbiamo caricato lo storico del Gold Future Continuous a 60 minuti Exchange time (fonte dati Tradestation) e abbiamo applicato una strategia grezza di level breakout (solo long ad unico contratto), che si è dimostrata negli anni una buona matrice per generare decine di trading system della stessa famiglia (parliamo in questo caso di tecniche quantitative e non genetiche). Dopo aver terminato la fase di validazione con GSA (potete leggere questo articolo per dettagli) abbiamo stampato il nuovo performance report (abbiamo utilizzato le librerie open source Python: Matplotlib, Seaborn, Plotly & Cufflinks).

Prima parte Performance Report “Wintermute”.

I primi 7 indicatori danno una sorta di visione di insieme della strategia. Il CAGR e l’Annual Return ci raccontano della capacità del trading system di produrre utile su base annuale, permettendoci un confronto con strategie di investimento alternative.
Il Calmar Ratio, nella sua versione classica, indica il rapporto tra il Net Profit ed il Max Draw Down. Tuttavia qui abbiamo preferito utilizzare una declinazione “annualizzata”, più sensibile alla “sofferenza” del sistema, periodo dopo periodo. Tanto più è elevato il rapporto tra Max Draw Down ed Avg Draw Down, tanto più è opportuno passare dalla versione classica a quella annualizzata.
Una delle differenze più importanti tra Sortino e Sharpe, sta nel fatto di considerare o meno la varianza delle sole operazioni in perdita.
L’Omega Ratio si riduce al Profit Factor per soglia di positività uguale a zero.
Infine il Kestner Ratio (leggere “Quantitative Trading Strategies” di Lars Kestner per dettagli) ci racconta di quanto sia regolare la curva di progressione dei profitti (“equity line”).

A seguire troviamo un insieme di indicatori più classici, la cui lettura di insieme garantisce una comprensione più generale delle caratteristiche del sistema di compravendita.
Innanzitutto il Profit Factor, calcolato come rapporto tra Gross Profit (la somma dei profitti) e Gross Loss (la somma delle perdite). Un valore unitario descrive la linea di galleggiamento, al lordo di costi fissi e commissioni, che in questo caso non sono considerati. Può essere letto anche come “quanti dollari guadagniamo per ogni dollaro che perdiamo”.
Arriviamo quindi al binomio Percent Winning Trades (“percentuale dei trade vincenti”) e Reward Risk Ratio (“rapporto tra rendimento e rischio”): si tratta di due grandezze inversamente proporzionali che descrivono rispettivamente il confort psicologico e la sostenibilità della strategia. I sistemi trend following, come ad esempio quelli level o volatility breakout, sono caratterizzati in genere da una percentuale dei trade vincenti inferiore al 50% (spesso anche sotto il 30%) ed un rapporto rendimento su rischio superiore ad 1 (spesso anche maggiore di 2). Al contrario i sistemi mean reverting presentano una percentuale dei trade vincenti superiore al 50% (sovente anche oltre il 60%) ed un rapporto rendimento su rischio inferiore ad 1 (spesso intorno allo 0.5).
Le metriche di Delay Between Peaks sono invece legate al fattore tempo. Particolarmente importante il calcolo dell’ Average Delay Between Peaks (“valor medio dei ritardi tra picchi dell’equity line”) che ci racconta quante barre (nel caso specifico 313 ore) sia necessario attendere in media prima di vedere un nuovo picco di equity line.
Mediamente il sistema rimane sul mercato 21 ore (Avg Time in Trade), quindi quasi una sessione completa, che sul Gold Future è di 23 ore.
Infine gli indicatori di deviazione standard, calcolati sulla cumulata delle operazioni chiuse o sull’open equity (la curva ad operazioni aperte) ci danno un flash su quanto erratica sia la progressione dei guadagni.

Seconda parte Performance Report “Wintermute”.

Particolare cura deve essere dedicata alla notifica e alla lettura delle metriche di draw down. Stiamo parlando dei parametri vitali e di sofferenza della strategia e sarà proprio la sensibilità a tali elementi a determinare la nostra sopravvivenza sul mercato.

Il Max Draw Down ci racconta della maggiore discesa monetaria registrata dall’ultimo massimo di equity line. Un vecchio mantra di Wall Street recita “il peggior draw down è quello prossimo a venire” e non si discosta molto dalla realtà. Questo è il motivo per cui suggeriamo di dare risalto ad un altro indicatore: l’Avg Draw Down, ossia la ricorrezione media. Tale metrica è più in linea con la sofferenza che mediamente dovremo sopportare sul mercato, tradando tale strategia (purtroppo non si trova quasi mai all’interno dei performance report delle principali piattaforme di trading).
Unitamente ai valori nominali di Max Draw Down ed Avg Draw Down è importante visionare anche i livelli percentuali e le aree storiche in cui si siano verificati gli eccessi negativi.
Infine può risultare importante avere una lettura immediata dei livelli percentili calcolati sulla curva di draw down (ricordiamo che tali valori possono rivelarsi fondamentali per la selezione di stop loss di rovina o per interpretare una Montecarlo Analysis).

Terminata la lettura delle metriche numeriche, passiamo all’interpretazione delle curve risultanti. Iniziamo dal tracciare la curva dei profitti (in verde scuro) evidenziando in verde chiaro ogni volta che tale curva sia in grado di registrare un nuovo massimo locale.
Per associare, con maggiore semplicità, l’andamento dell’equity line alle fasi dello strumento di applicazione, grafichiamo, in beige, l’andamento del Gold Future Continuous. La strategia monodirezionale (solo long) si è rivelata capace di generare profitto sia durante le fasi discendenti che durante quelle ascendenti dell’Oro.

Performance Report “Wintermute”: Equity Line della strategia sovrapposta al sottostante.

Siamo a questo punto pronti a visionare le tavole sul draw down, in primis in termini monetari e successivamente in termini percentuali. Si osservi come la proporzione dei picchi, tra i due grafici, possa cambiare e questo rappresenta uno dei temi più critici quando si debbano giudicare le performance di una strategia.

Performance Report “Wintermute”: Draw Down Monetario.

In generale le performance percentuali di una strategia dipendono dalla ricaduta percentuale del draw down nominale sul capitale iniziale: se tale capitale è troppo piccolo rispetto ai primi picchi di draw down monetario, allora osserveremo picchi anomali di draw down percentuale nella prima parte del grafico (a sinistra), viceversa se il capitale di partenza fosse sproporzionato rispetto ai picchi di draw down monetario, allora l’incidenza del draw down percentuale sarebbe erroneamente trascurabile. In generale consigliamo di tenere conto sempre in primis del draw down nominale (per caratterizzare i diversi picchi) e poi di scalare la cosa su un opportuno capitale di partenza (commisurato alle strategie utilizzate) per dare un riscontro percentuale. Tale riscontro è mandatorio se siete ad esempio un Fund Manager.

Performance Report “Wintermute”: Draw Down Percentuale.

Per apprezzare il gap tra capitale controllato e capitale immobilizzato per contratto (stiamo parlando dell’effetto leva e della marginazione), visualizziamo anche tale relazione: in verde scuro il controvalore controllato per contratto ed in verde chiaro il capitale immobilizzato.

Performance Report “Wintermute”: capitale controllato e capitale immobilizzato.

Diventa a questo punto piuttosto semplice con Python fare delle aggregazioni statistiche, come ad esempio quella del profitto lordo annuale.

Performance Report “Wintermute”: profitto lordo annuale della strategia.

In questo caso specifico emerge come, proiettando costi fissi e slippage nel caso di un singolo contratto sul Gold Future, il 2007, il 2015 ed il triennio 2017-2018 e 2019 avrebbero portato ad una perdita. Non a caso il periodo a cavallo del 2018 ha visto il Gold perdere in parte la sua natura di breakout.

Ripetendo tale aggregazione sul valor medio per mese, possiamo osservare una prima parte dell’anno (da gennaio a maggio) piuttosto positiva, una pausa in giugno, un’estate nuovamente in salute, prima di scontare tre mesi negativi di preparazione ad una nuova area positiva, coincidente con dicembre.

Performance Report “Wintermute”: valor medio di profitto/perdita su base mensile.

Tramite le librerie Pandas e Seaborn è molto semplice ottenere una “heatmap” anno su anno e mese su mese, spacchettando i guadagni e le perdite ottenute sull’intero periodo (le performance riportano anche marzo 2022, tenendo conto che solo due terzi del mese siano stati completati).

Performance Report “Wintermute”: heatmap anno su anno e mese su mese
spacchettando i guadagni e le perdite ottenute sull’intero periodo.

l Maximum Adverse Excursion, noto anche come MAE (che trovate anche in alcune piattaforme come Multicharts, ad esempio), indica come siano terminati i trade (verdi positivi e rossi negativi, interpretando il valore sull’asse verticale cambiato di segno in base al colore e all’orientamento del triangolino) e che draw down monetario abbiano subito durante la loro vita (potete leggere questo dato sull’asse orizzontale, cambiato di segno).
Questa indicazione può essere molto utile per fare delle prime ipotesi su uno stop loss di rovina per singolo trade (l’informazione va mutuata con le curve di draw down).

Performance Report “Wintermute”: Maximum Adverse Excursion.

Di seguito possiamo invece vedere la tavola complementare del MAE, ossia quella relativa al Maximum Favorable Excursion (noto anche come MFE). In questo caso si evidenzia il massimo picco positivo registrato durante la vita di ciascun trade al posto della massima ricorrezione.

Performance Report “Wintermute”: Maximum Favorable Excursion.

Conoscere lo sviluppo temporale delle operazioni che caratterizzano la strategia può aiutarci a comprendere se sia il caso di controllarne la durata per migliorare il position management. Di seguito possiamo osservare la declinazione grafica di ciò che abbiamo visto numericamente nella prima parte del Performance Report. In più abbiamo separato i trade che terminano con un guadagno (in verde) da quelli che portano ad una perdita (in rosso).

Performance Report “Wintermute”: Time in Trade.

Una volta studiato l’intero Performance Report, sta all’operatore mettere insieme le tessere del mosaico, ma ciò avverrà sulla base di numeri certi e condivisi. Sarà semplice, in questo modo, confrontare una strategia reversal con una di breakout sul medesimo strumento, due strategie di breakout su due asset differenti, oppure allestire un intero portafoglio di strategie, osservando come certe metriche possano essere mitigare nella visione di insieme.

Quella che abbiamo presentato è una piccola parte della cassetta degli attrezzi di lavoro che abbiamo progettato e consegnato a tutti i nostri corsisti, ma non saremmo coerenti se non aggiungessimo che proprio grazie a tutti coloro che hanno interagito con noi, grazie a Python ed in generale al mondo open source, sono nate decine di differenti versioni di questo performance report. Non solo: questa libertà consente ogni giorno di variare il motore di backtest, il motore live di collegamento con i diversi broker e molto altro ancora. Ogni aspetto legato al progetto dell’attività di trading o di investing è potenziata e questo, a mio avviso, non ha prezzo.

Propio per come si declina il paradigma open source, potete fare tutto da soli, senza spendere del denaro, visionando le centinaia di risorse gratuite sul web. Se invece desiderate sfruttare un potente acceleratore didattico (la scelta va fatta a nostro avviso in base al tempo e alle risorse a disposizione) potete visionare la nostra proposta per approcciarsi a Python e leggere i dettagli del nostro percorso di punta: la Python Academy (per domande, o per fissare uno slot diretto con noi, potete scrivere una email ad info@gandalfproject.com).

Have a good trade!

Giovanni Trombetta

Head of R&D Gandalf Project

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.