In questo articolo vi presenterò alcuni dei concetti di base che accompagnano un sistema di trading quantitativo end-to-end. Si spera che questo post serva a due tipi di pubblico. Il primo sarà quello degli individui che cercano di ottenere un lavoro in un fondo come trader quantitativo. Il secondo sarà quello degli individui che desiderano provare a mettere in piedi la propria attività di trading algoritmico “al dettaglio”.
Il trading quantitativo è un’area estremamente sofisticata della finanza quantistica. Può richiedere una notevole quantità di tempo per acquisire le conoscenze necessarie per superare un colloquio o costruire le proprie strategie di trading. Non solo, ma richiede una vasta esperienza di programmazione, come minimo in un linguaggio come MATLAB, R o Python. Tuttavia, man mano che la frequenza di trading della strategia aumenta, gli aspetti tecnologici diventano molto più rilevanti. Quindi avere familiarità con C/C++ sarà di fondamentale importanza.
Un sistema di trading quantitativo consiste di quattro componenti principali:
- Identificazione della strategia – Trovare una strategia, sfruttare un vantaggio e decidere la frequenza di trading
- Backtesting della strategia – Ottenere dati, analizzare le prestazioni della strategia e rimuovere le distorsioni
- Sistema di esecuzione – Collegarsi a un broker, automatizzare il trading e minimizzare i costi di transazione
- Gestione del rischio – allocazione ottimale del capitale, “dimensione della scommessa”/criterio di Kelly e psicologia del trading
Iniziamo dando uno sguardo a come identificare una strategia di trading.
Identificazione della strategia
Tutti i processi di trading quantitativo iniziano con un periodo iniziale di ricerca. Questo processo di ricerca comprende la ricerca di una strategia, vedere se la strategia si adatta ad un portafoglio di altre strategie che si possono eseguire, ottenere tutti i dati necessari per testare la strategia e cercare di ottimizzare la strategia per ottenere rendimenti più elevati e/o un rischio inferiore. Dovrai tenere conto del tuo fabbisogno di capitale se esegui la strategia come trader “al dettaglio” e di come i costi di transazione influenzeranno la strategia.
Contrariamente alla credenza popolare, è abbastanza semplice trovare strategie redditizie attraverso varie fonti pubbliche. Gli accademici pubblicano regolarmente risultati teorici di trading (anche se per lo più al lordo dei costi di transazione). I blog di finanza quantitativa discutono le strategie in dettaglio. Le riviste specializzate delineano alcune delle strategie impiegate dai fondi.
Ci si potrebbe chiedere perché gli individui e le aziende sono ansiosi di discutere le loro strategie redditizie, specialmente quando sanno che altri “affollano il commercio” e possono impedire che la strategia funzioni a lungo termine. La ragione risiede nel fatto che spesso non discutono i parametri esatti e i metodi di ottimizzazione che hanno effettuato. Queste ottimizzazioni sono la chiave per trasformare una strategia relativamente mediocre in una altamente redditizia. Infatti, uno dei modi migliori per creare le proprie strategie uniche è quello di trovare metodi simili e poi eseguire la propria procedura di ottimizzazione.
Ecco una piccola lista di posti dove iniziare a cercare idee di strategie:
- Social Science Research Network – www.ssrn.com
- arXiv Quantitative Finance – arxiv.org/archive/q-fin
- Seeking Alpha – www.seekingalpha.com
- Elite Trader – www.elitetrader.com
- Nuclear Phynance – www.nuclearphynance.com
- Quantivity – quantivity.wordpress.com
Molte delle strategie che esaminerai rientrano nelle categorie di mean-reversion e trend-following/momentum. Una strategia di mean-reverting è una strategia che tenta di sfruttare il fatto che esiste una media di lungo termine su una “serie di prezzi” (come lo spread tra due asset correlati) e che le deviazioni di breve termine da questa media alla fine ritorneranno. Una strategia di momentum cerca di sfruttare sia la psicologia dell’investitore che la struttura dei grandi fondi “facendo un giro” su una tendenza di mercato, che può raccogliere slancio in una direzione, e seguire la tendenza fino a quando non si inverte.
Un altro aspetto estremamente importante del trading quantitativo è la frequenza della strategia di trading. Il trading a bassa frequenza (LFT) si riferisce generalmente a qualsiasi strategia che tiene i beni più a lungo di un giorno di trading. Corrispondentemente, il trading ad alta frequenza (HFT) si riferisce generalmente a una strategia che detiene asset intraday. Il trading ad altissima frequenza (UHFT) si riferisce a strategie che detengono asset nell’ordine di secondi e millisecondi. Come operatore al dettaglio HFT e UHFT sono certamente possibili, ma solo con una conoscenza dettagliata dello “stack tecnologico” del trading e delle dinamiche del libro ordini. Non discuteremo questi aspetti in modo approfondito in questo articolo introduttivo.
Una volta che una strategia, o un insieme di strategie, è stata identificata, deve essere testata per la redditività sui dati storici. Questo è il dominio del backtesting.
Strategia Backtesting
L’obiettivo del backtesting è quello di fornire la prova che la strategia identificata attraverso il processo di cui sopra è redditizia quando applicata a dati storici e fuori campione. Questo stabilisce l’aspettativa di come la strategia si comporterà nel “mondo reale”. Tuttavia, il backtesting NON è una garanzia di successo, per varie ragioni. È forse l’area più sottile del trading quantitativo, poiché comporta numerosi bias, che devono essere attentamente considerati ed eliminati il più possibile. Discuteremo i tipi comuni di bias, tra cui look-ahead bias, survivorship bias e optimisation bias (noto anche come bias di “data-snooping”). Altre aree di importanza nel backtesting includono la disponibilità e la pulizia dei dati storici, la considerazione di costi di transazione realistici e la scelta di una piattaforma di backtesting robusta. Discuteremo ulteriormente i costi di transazione nella sezione Sistemi di esecuzione più avanti.
Una volta che una strategia è stata identificata, è necessario ottenere i dati storici attraverso i quali effettuare il test e, forse, il perfezionamento. Esiste un numero significativo di fornitori di dati per tutte le classi di attività. I loro costi generalmente scalano con la qualità, la profondità e la tempestività dei dati. Il punto di partenza tradizionale per i trader quantistici principianti (almeno a livello retail) è quello di utilizzare il set di dati gratuito di Yahoo Finance. Non mi soffermerò troppo sui provider qui, piuttosto vorrei concentrarmi sulle questioni generali quando si ha a che fare con i set di dati storici.
Le principali preoccupazioni con i dati storici includono accuratezza/pulizia, bias di sopravvivenza e aggiustamento per azioni societarie come dividendi e frazionamenti azionari:
- L’accuratezza riguarda la qualità generale dei dati – se contengono errori. Gli errori a volte possono essere facili da identificare, come con un filtro spike, che individua “picchi” errati nei dati delle serie temporali e li corregge. Altre volte possono essere molto difficili da individuare. Spesso è necessario avere due o più fornitori e poi controllare tutti i loro dati uno contro l’altro.
- La distorsione di sopravvivenza è spesso una “caratteristica” dei set di dati gratuiti o economici. Un set di dati con survivorship bias significa che non contiene attività che non sono più in commercio. Nel caso delle azioni questo significa azioni delistate/fallimentari. Questo bias significa che qualsiasi strategia di trading azionario testata su un tale set di dati avrà probabilmente prestazioni migliori che nel “mondo reale”, poiché i “vincitori” storici sono già stati preselezionati.
- Le azioni societarie includono attività “logistiche” svolte dalla società che di solito causano un cambiamento di funzione a gradini nel prezzo grezzo, che non dovrebbero essere incluse nel calcolo dei rendimenti del prezzo. Gli aggiustamenti per i dividendi e i frazionamenti azionari sono i colpevoli più comuni. In ognuna di queste azioni è necessario effettuare un processo noto come rettifica posteriore. Bisogna fare molta attenzione a non confondere un frazionamento azionario con un vero aggiustamento dei rendimenti. Molti trader sono stati sorpresi da un’azione societaria!
Per effettuare una procedura di backtest è necessario utilizzare una piattaforma software. Si può scegliere tra un software di backtest dedicato, come Tradestation, una piattaforma numerica come Excel o MATLAB o un’implementazione completamente personalizzata in un linguaggio di programmazione come Python o C++. Non mi soffermerò troppo su Tradestation (o simili), Excel o MATLAB, in quanto credo nella creazione di uno stack tecnologico completo in-house (per ragioni descritte di seguito). Uno dei vantaggi di fare così è che il software di backtest e il sistema di esecuzione possono essere strettamente integrati, anche con strategie statistiche estremamente avanzate. Per le strategie HFT, in particolare, è essenziale utilizzare un’implementazione personalizzata.
Quando si esegue il backtesting di un sistema si deve essere in grado di quantificare la sua performance. Le metriche “standard del settore” per le strategie quantitative sono il massimo drawdown e il rapporto di Sharpe. Il massimo drawdown caratterizza la più grande caduta da picco a picco nella curva dell’equity del conto in un particolare periodo di tempo (di solito annuale). Questo è spesso citato come percentuale. Le strategie LFT tenderanno ad avere un drawdown maggiore rispetto alle strategie HFT, a causa di una serie di fattori statistici. Un backtest storico mostrerà il massimo drawdown passato, che è una buona guida per la futura performance di drawdown della strategia. La seconda misura è il rapporto di Sharpe, che è euristicamente definito come la media dei rendimenti in eccesso diviso per la deviazione standard di tali rendimenti in eccesso. Qui, l’eccesso di rendimento si riferisce al rendimento della strategia al di sopra di un benchmark predeterminato, come l’S&P500 o un Treasury Bill a 3 mesi. Si noti che il rendimento annualizzato non è una misura solitamente utilizzata, in quanto non tiene conto della volatilità della strategia (a differenza del rapporto di Sharpe).
Una volta che una strategia è stata testata e ritenuta priva di distorsioni (per quanto possibile!), con un buon Sharpe e drawdown ridotti al minimo, è il momento di costruire un sistema di esecuzione.
Sistemi di esecuzione
Un sistema di esecuzione è il mezzo attraverso il quale la lista di trade generati dalla strategia vengono inviati ed eseguiti dal broker. Nonostante il fatto che la generazione di trade può essere semi o anche completamente automatizzata, il meccanismo di esecuzione può essere manuale, semi-manuale (cioè “one click”) o completamente automatizzato. Per le strategie LFT, le tecniche manuali e semi-manuali sono comuni. Per le strategie HFT è necessario creare un meccanismo di esecuzione completamente automatizzato, che sarà spesso strettamente accoppiato con il generatore di trade (a causa dell’interdipendenza della strategia e della tecnologia).
Le considerazioni chiave quando si crea un sistema di esecuzione sono l’interfaccia con il brokeraggio, la minimizzazione dei costi di transazione (comprese le commissioni, lo slippage e lo spread) e la divergenza delle prestazioni del sistema dal vivo dalle prestazioni di backtesting.
Ci sono molti modi per interfacciarsi con un brokeraggio. Vanno dal chiamare il vostro broker al telefono fino a un’Application Programming Interface (API) completamente automatizzata ad alte prestazioni. L’ideale sarebbe automatizzare il più possibile l’esecuzione dei vostri scambi. Questo ti libera per concentrarti su ulteriori ricerche, oltre a permetterti di eseguire strategie multiple o anche strategie a più alta frequenza (infatti, l’HFT è essenzialmente impossibile senza l’esecuzione automatica). I comuni software di backtesting delineati sopra, come MATLAB, Excel e Tradestation sono buoni per strategie più semplici e a bassa frequenza. Tuttavia sarà necessario costruire un sistema di esecuzione in-house scritto in un linguaggio ad alte prestazioni come il C++ per fare vera HFT. Come aneddoto, nel fondo in cui lavoravo, avevamo un “trading loop” di 10 minuti in cui scaricavamo nuovi dati di mercato ogni 10 minuti e poi eseguivamo operazioni basate su quelle informazioni nello stesso arco di tempo. Questo utilizzava uno script Python ottimizzato. Per qualsiasi cosa che si avvicini ai dati al minuto o alla seconda frequenza, credo che C/C++ sarebbe più ideale.
In un fondo più grande spesso non è compito del trader quantistico ottimizzare l’esecuzione. Tuttavia, nei negozi più piccoli o nelle aziende HFT, i trader SONO gli esecutori e quindi un set di competenze molto più ampio è spesso auspicabile. Tenetelo a mente se volete essere impiegati da un fondo. Le tue capacità di programmazione saranno altrettanto importanti, se non di più, dei tuoi talenti di statistica ed econometria!
Un’altra questione importante che rientra nell’ambito dell’esecuzione è quella della minimizzazione dei costi di transazione. Ci sono generalmente tre componenti dei costi di transazione: Commissioni (o tasse), che sono le spese addebitate dall’intermediario, dalla borsa e dalla SEC (o da un simile ente governativo di regolamentazione); slippage, che è la differenza tra il prezzo a cui volevate che il vostro ordine fosse eseguito e quello a cui è stato effettivamente eseguito; spread, che è la differenza tra il prezzo denaro/lettera del titolo scambiato. Si noti che lo spread NON è costante e dipende dalla liquidità corrente (cioè la disponibilità di ordini di acquisto/vendita) nel mercato.
I costi di transazione possono fare la differenza tra una strategia estremamente redditizia con un buon Sharpe ratio e una strategia estremamente non redditizia con un terribile Sharpe ratio. Può essere una sfida prevedere correttamente i costi di transazione da un backtest. A seconda della frequenza della strategia, avrete bisogno di accedere ai dati storici di scambio, che includeranno i dati tick per i prezzi bid/ask. Interi team di analisti sono dedicati all’ottimizzazione dell’esecuzione nei fondi più grandi, per queste ragioni. Si consideri lo scenario in cui un fondo ha bisogno di scaricare una quantità sostanziale di scambi (le ragioni per farlo sono molte e varie!). “Scaricando” così tante azioni sul mercato, si deprimerà rapidamente il prezzo e potrebbe non ottenere un’esecuzione ottimale. Per questo esistono algoritmi che “alimentano a goccia” gli ordini sul mercato, anche se poi il fondo corre il rischio di slippage. Inoltre, altre strategie “predano” queste necessità e possono sfruttare le inefficienze. Questo è il dominio dell’arbitraggio della struttura del fondo.
L’ultimo grande problema per i sistemi di esecuzione riguarda la divergenza della performance della strategia dalla performance testata. Questo può accadere per una serie di ragioni. Abbiamo già discusso a fondo del look-ahead bias e del bias di ottimizzazione, quando si considerano i backtest. Tuttavia, alcune strategie non rendono facile testare questi bias prima del loro utilizzo. Questo accade soprattutto nell’HFT. Ci possono essere dei bug nel sistema di esecuzione così come nella strategia di trading stessa che non si mostrano in un backtest ma si mostrano nel trading dal vivo. Il mercato potrebbe essere stato soggetto a un cambio di regime successivo all’implementazione della vostra strategia. Nuovi ambienti normativi, cambiamenti nel sentimento degli investitori e fenomeni macroeconomici possono portare a divergenze nel comportamento del mercato e quindi nella redditività della tua strategia.
Gestione del rischio
Il pezzo finale del puzzle del trading quantitativo è il processo di gestione del rischio. Il “rischio” include tutti i precedenti pregiudizi che abbiamo discusso. Include il rischio tecnologico, come i server co-locati presso la borsa che improvvisamente sviluppano un malfunzionamento del disco rigido. Include il rischio di brokeraggio, come il fallimento del broker (non così assurdo come sembra, visto il recente spavento di MF Global!). In breve, copre quasi tutto ciò che potrebbe interferire con l’implementazione del trading, di cui ci sono molte fonti. Interi libri sono dedicati alla gestione del rischio per le strategie quantitative, quindi non cercherò di delucidare tutte le possibili fonti di rischio qui.
La gestione del rischio comprende anche ciò che è noto come allocazione ottimale del capitale, che è un ramo della teoria del portafoglio. Questo è il modo in cui il capitale viene allocato ad un insieme di strategie diverse e alle operazioni all’interno di queste strategie. È un’area complessa e si basa su una matematica non banale. Lo standard industriale che mette in relazione l’allocazione ottimale del capitale e la leva finanziaria delle strategie si chiama criterio di Kelly. Poiché questo è un articolo introduttivo, non mi soffermerò sul suo calcolo. Il criterio di Kelly fa alcune assunzioni sulla natura statistica dei rendimenti, che spesso non sono vere nei mercati finanziari, quindi i trader sono spesso conservatori quando si tratta della sua implementazione.
Un’altra componente chiave della gestione del rischio è nel trattare il proprio profilo psicologico. Ci sono molti pregiudizi cognitivi che possono insinuarsi nel trading. Anche se questo è certamente meno problematico con il trading algoritmico se la strategia viene lasciata in pace! Un pregiudizio comune è quello dell’avversione alle perdite, dove una posizione perdente non viene chiusa a causa del dolore di dover realizzare una perdita. Allo stesso modo, i profitti possono essere presi troppo presto perché la paura di perdere un profitto già ottenuto può essere troppo grande. Un altro pregiudizio comune è noto come recency bias. Questo si manifesta quando i trader danno troppa importanza agli eventi recenti e non al lungo termine. Poi, naturalmente, c’è la classica coppia di pregiudizi emotivi – paura e avidità. Questi possono spesso portare a un under-leveraging o a un over-leveraging, che può causare un blow-up (cioè l’equity del conto verso lo zero o peggio!) o una riduzione dei profitti.
Sommario
Come si può vedere, il trading quantitativo è un’area estremamente complessa, anche se molto interessante, della finanza quantitativa. Ho letteralmente grattato la superficie dell’argomento in questo articolo e sta già diventando piuttosto lungo! Interi libri e articoli sono stati scritti su argomenti a cui ho dedicato solo una o due frasi. Per questo motivo, prima di fare domanda per lavori di trading di fondi quantitativi, è necessario effettuare una quantità significativa di studi di base. Come minimo avrete bisogno di un ampio background in statistica ed econometria, con molta esperienza nell’implementazione, attraverso un linguaggio di programmazione come MATLAB, Python o R. Per le strategie più sofisticate all’estremità della frequenza più alta, il vostro set di abilità probabilmente includerà la modifica del kernel Linux, C/C++, programmazione assembly e ottimizzazione della latenza di rete.
Se siete interessati a provare a creare le vostre strategie di trading algoritmico, il mio primo suggerimento sarebbe quello di diventare bravi nella programmazione. La mia preferenza è quella di costruire da soli il più possibile il data grabber, il backtester della strategia e il sistema di esecuzione. Se il tuo capitale è in gioco, non dormiresti meglio la notte sapendo che hai testato completamente il tuo sistema e sei consapevole delle sue insidie e problemi particolari? L’esternalizzazione di questo a un fornitore, mentre potenzialmente si risparmia tempo nel breve termine, potrebbe essere estremamente costoso nel lungo termine.