In un precedente precedente articolo abbiamo descritto come come creare un Securities Master Database.
Questo articolo introduce un argomento che spesso non è molto considerato dalla maggior parte dei libri sul trading, cioè quello di elaborare i dati del mercato finanziario prima del loro utilizzo nel backtesting di strategia.
Si introducono inizialmente i diversi tipi di dati a cui i trader algoritmici sono interessati. Si prenderà quindi in considerazione la frequenza dei dati, dai dati trimestrali (come i report SEC) fino ai tick e l’order-book sulla scala del millisecondo. Le fonti di tali dati (sia gratuiti che commerciali) saranno quindi delineati insieme al codice per ottenere i dati. Infine, si descrive la pulizia e la preparazione dei dati per l’utilizzo nelle strategie.
Classificazione dei Mercati e degli Strumenti
Come trader algoritmici siamo spesso interessati ai dati su una vasta gamma di mercati finanziari. I dati possono spaziare dalle serie temporali dei prezzi di uno strumento, a dati testuali non strutturati (come feed di notizie) fino alle informazioni sugli utili societari. In questo articolo ci concentriamo prevalentemente sui dati delle serie temporali finanziarie.
Mercati
Le azioni statunitensi e internazionali, le valute estere, le materie prime e il reddito passivi sono le principali fonti di dati di mercato che sono di interesse per un trader algoritmico. Nel mercato azionario è ancora estremamente comune acquistare direttamente l’attività sottostante, mentre negli ultimi tre mercati gli strumenti derivati altamente liquidi (come futures, opzioni o strumenti più esotici) sono più comunemente utilizzati per il trading.
Questa ampia categorizzazione rende essenzialmente relativamente semplice trattare i mercati azionari, sebbene con problemi relativi alla gestione dei dati delle azioni societarie (vedi sotto). Quindi gran parte del panorama di trading algoritmico retail è basato sulle azioni, come le azioni societarie dirette o gli Exchange Traded Funds (ETF). Anche i mercati delle valute estere (“forex”) sono molto apprezzati dal momento che i broker permetteranno il margin trading su movimenti percentuali in punti (PIP).
Un pip è un’unità del quarto decimale in un tasso di cambio. Per le valute denominate in dollari statunitensi questo è equivalente a 1/100 di centesimo.
Le materie prime e i mercati dei titoli a reddito fisso sono più difficili da scambiare direttamente con il sottostante. Un trader algoritmico retail non è spesso interessato a consegnare barili di petrolio a un deposito di petrolio! Invece, i contratti futures sull’attività sottostante sono utilizzati a fini speculativi. Ancora una volta, è permetto il margin trading consentendo ampia leva su tali contratti.
Strumenti
Mercato | Strumenti |
Azioni / Indici | Stock, ETFs, Futures, Options |
Foreign Exchange (FOREX) | Margin/Spot, ETFs, Futures, Options |
Commodities | Futures, Options |
Obbligazioni | Futures, Options |
Al fine di semplificare l’implementazioni, in questo articolo ci concetriamo sul mercato azionario e ETF
Dati Fondamentali
Sebbene i trader algoritmici eseguano principalmente analisi sulle serie temporali dei prezzi finanziari, anche i dati fondamentali (con diverse frequenze) sono spesso aggiunti all’analisi. Le cosiddette strategie di Quantitative Value (QV) fanno molto affidamento sull’acquisizione e sull’analisi dei dati fondamentali, come ad esempio le informazioni macroeconomiche, i dati storici degli utili societari, gli indici di inflazione, i rapporti sui salari, i tassi di interesse e depositi SEC. Tali dati sono spesso disponibili anche in formato temporale, sebbene su frequenze molto grandi, come mesi, trimestri o anni.
Questo articolo non approfondisce l’elaborazione dei dati fondamentali per le strategie QV o strategie su timeframe molto elevati, mentre mi voglio concentrare su strategie daily o più frequenti (intraday) derivate principalmente dall’azione dei prezzi (price action).
Dati non Strutturati
I dati non strutturati sono costituiti da documenti come news, post di blog, articoli o relazioni. L’analisi di tali dati può essere complicata poiché si basa sulle tecniche di Natural Language Processing (NLP). Uno di questi è l’analisi dei dati non strutturati nel tentativo di determinare il livello di sentiment. Questo può essere utile per guidare una strategia di trading. Ad esempio, classificando i testi come “bullish”, “bearish” o “neutral”, potrebbe essere generato un insieme di segnali di trading. Il termine per questo processo è la Sentiment Analysis.
Python fornisce una libreria estremamente completa per l’analisi di dati di testo, conosciuta come Natural Language Toolkit (NLTK).
Dati Testuali
Esistono numerose fonti di dati testuali che possono essere utili per generare una strategia di trading. Le popolari fonti di news finanziarie come Bloomberg e il Financial Times, così come blog di commenti finanziari come Seeking Alpha e ZeroHedge, forniscono importanti fonti di testo da analizzare. Inoltre, i feed di notizie proprietari forniti dai fornitori di dati sono anch’esse buone fonti di dati.
Per ottenere dati su una scala più ampia, è necessario utilizzare strumenti di “web scraping”, progettati per automatizzare il download di massa di siti Web. In questo caso è necessario prestare la massima attenzione perché gli strumenti automatici di web scraping possono violano i Termini di servizio di questi siti. Assicurati di controllare prima di iniziare a scaricare questo tipo di dati. Uno strumento particolarmente utile per il web scraping, che rende il processo efficiente e strutturato, è la libreria ScraPy di Python.
Dati dai Social Media
Frequenza dei Dati
La frequenza dei dati è un fattore fondamentale quando si progetta un sistema di trading algoritmico. Influisce su ogni decisione progettuale riguardante l’archiviazione dei dati, il backtesting di una strategia e l’esecuzione di un algoritmo. È probabile che le strategie ad alta frequenza portino a un’analisi statisticamente più solida, semplicemente a causa del maggior numero di punti di dati (e quindi di trade) che verranno utilizzati. Le strategie HFT richiedono spesso un investimento significativo in termini di tempo e capitale per lo sviluppo del software necessario per eseguirle. Le strategie a bassa frequenza sono più facili da sviluppare e implementare, poiché richiedono meno automazione. Tuttavia, spesso generano molti meno trade rispetto ad una strategia ad alta frequenza che porta a un’analisi statisticamente meno solida.
Dati Mensili e Settimanali
Dati Giornalieri
La maggior parte dei trader algoritmici retail fa uso di serie giornaliere di dati finanziari (“end of day” / EOD), in particolare per le azioni e il forex. Tali dati sono liberamente disponibili (vedi sotto), ma spesso sono di qualità discutibile e soggetti a determinati bias. I dati di fine giornata sono spesso archiviati in RDBMS, poiché la natura della mappatura ticker / simboli si applica perfettamente al modello relazionale.
I dati EOD non comportano requisiti di archiviazione particolarmente ampi. Ci sono 252 giorni di trading in un anno per il mercato degli Stati Uniti e quindi in un decennio ci saranno 2.520 record per ogni titolo azionario. Anche con un mercato di 10.000 simboli si avrà 25.200.000 record, che possono essere facilmente gestiti all’interno di un database relazionale.
Dati Intraday
Le strategie infragiornaliere utilizzano spesso le barre OHLCV di ogni ora, quindici, cinque, un minuto o addirittura secondi. I provider di feed intraday come QuantQuote e DTN IQFeed forniscono spesso dati al minuto o al secondo in base ai loro dati di tick. I dati a tali frequenze possono presentare molte barre “mancanti” semplicemente perché non sono state effettuate transazioni in quel periodo di tempo. La libreria Pandas può essere utilizzata per ottimizzare questi dati, a discapito della precisione dei dati. Inoltre, Pandas può essere utilizzati per creare dati su scale temporali meno granulari, quando necessario.
Per un periodo di dieci anni, i dati al minuto genereranno quasi un milione di barre per ogni titolo. Analogamente per i dati al secondo il numero di punti dati nello stesso periodo ammonterà a quasi sessanta milioni per ogni titolo. Pertanto, per immagazzinare un migliaio di tali titoli si otterranno 60 miliardi di barre di dati. Si tratta di una grande quantità di dati da conservare in un RDBMS e di conseguenza sono necessari approcci più sofisticati.
Dati di Tick e dell'Order-Book
Quando un trade viene eseguito all’interno di un exchange, o in un’altra sede, viene generato un tick. I feed di tick sono costituiti da tutte le transazioni di un exchange. Ogni tick retail è memorizzato all’interno del feed con un timestamp accurato al millisecondo. I dati di tick spesso includono anche il miglior prezzo di domanda/offerta (bid/ask). L’archiviazione dei dati tick è ben oltre lo scopo di un trader retail, ma inutile dire che i volumi di tali dati sono notevoli. I comuni meccanismi di archiviazione comprendono HDF5, kdb e semplicemente flat-file / CSV.
Più ordini limite in un exchange portano al concetto dell’order book. Questo è essenzialmente l’elenco di tutti gli ordini limite di acquisto e di vendita a determinati volumi per ogni partecipante al mercato. Porta alla definizione dello spread bid-ask (o semplicemente dello “spread”), che è la più piccola differenza tra i prezzi bid e ask per gli ordini “top of book”. La creazione di una rappresentazione storica, o un simulatore di mercato, di un order book è solitamente necessario per realizzare strategie di trading a frequenze ultra alte (UHFT).
Fonti di Dati
Esistono numerose fonti e venditori di dati finanziari. Variano sostanzialmente in ampiezza, tempestività, qualità e prezzo.
In generale, i dati sui mercati finanziari forniti su una frequenza giornaliera (con un leggero ritardo), o più ampie sono disponibili gratuitamente, anche se non sono di buona qualità e presentano bias di sopravvivenza. Per ottenere i dati intraday è di solito necessario acquistare un feed di dati commerciale. I fornitori di tali feed variano enormemente nella loro capacità di servizio al cliente, nella qualità complessiva dei feed e nell’ampiezza degli strumenti.
Fonti gratuite
I dati gratuiti di fine giornata, che consistono in prezzi Open-High-Low-Close-Volume (OHLCV) degli strumenti, sono disponibili per un’ampia gamma di titoli azionari e futures statunitensi e internazionali tramite i servizi come Yahoo Finance, Google Finance e Quandl.
Yahoo Finance
Yahoo Finance è la risorsa “base” quando si costituisce un database dei dati EOD dei titoli azionari statunitensi. L’ampiezza dei dati è estremamente completa, e contiene migliaia di azioni scambiate. Inoltre, le scissioni di azioni e i dividendi vengono gestiti utilizzando il metodo di back-adjustment, il cui risultato è contenuto nella colonna “Adj Close” nell’output CSV dell’API (che discuteremo di seguito). Pertanto, questi dati permettono ai trader algoritmici di iniziare rapidamente e a costo zero. Personalmente ho avuto molta esperienza nella pulizia dei dati di Yahoo. Devo dire che i dati possono essere abbastanza errati. Innanzitutto, è soggetto a un problema noto come backfilling. Questo problema si verifica quando i dati storici passati vengono corretti in una data futura, causando dei backtesting di scarsa qualità che cambiano man mano che il proprio database viene aggiornato. Per gestire questo problema, un record di registrazione viene generalmente aggiunto al securities master (in una apposita tabella) ogni volta che viene modificato un dato storico. In secondo luogo, il feed di Yahoo aggrega solo i prezzi di poche fonti per formare i punti OHLCV. Ciò significa che i valori possono essere ingannevoli, poiché altre fonti potrebbero aver eseguito prezzi diversi rispetto ai valori. In terzo luogo, ho notato che quando si ottengono i dati finanziari in massa, gli errori si insinuano nell’API. Ad esempio, più chiamate all’API con identici parametri data / ticker occasionalmente portano a set di risultati diversi. Questo è chiaramente un problema sostanziale e deve essere attentamente controllato. In sintesi, preparatevi a eseguire una vasta pulizia dei dati sui dati di Yahoo Finance, se scegliete di utilizzarlo per popolare un grande master di titoli e avete bisogno di dati altamente accurati.
Quandl
Quandl è un servizio che si propone come “il modo più semplice per trovare e utilizzare i dati finanziari”. Credo che siano sulla buona strada per raggiungere questo obiettivo! Il servizio fornisce una serie di dati giornalieri per i titoli azionari statunitensi e internazionali, i tassi di interesse, le materie prime / futures, le valute estere e altri dati economici. Inoltre, il database viene continuamente ampliato e il progetto viene attivamente mantenuto.
Tutti i dati sono accessibili tramite una moderna API HTTP (CSV, JSON, XML o HTML), con plugin per una vasta gamma di linguaggi di programmazione tra cui R, Python, Matlab, Excel, Stata, Maple, C#, EViews, Java , C/C++, .NET, Clojure e Julia. Senza un account sono consentite 50 chiamate all’API al giorno, ma questo può essere aumentato a 500 se si registra un account. In effetti, le chiamate possono essere aggiornate a 5.000 all’ora, se lo si desidera, contattando il team.
Non ho avuto molta esperienza con Quandl “su larga scala” e quindi non posso commentare il livello di errori presenti all’interno del set di dati, ma la mia sensazione è che è probabile che tutti gli errori vengano costantemente segnalati e corretti. Pertanto, vale la pena considerarlo come fonte di dati primaria per un master di titoli di fine giornata.
Fonti a pagamento
Per effettuare trading algoritmico intraday è solitamente necessario acquistare un feed commerciale. I prezzi possono variare dai $30 al mese fino a circa $500 al mese per il “livello retail”. I feed di qualità istituzionali saranno spesso nel range di quattro zeri al mese e come tali non sono considerati in questo articolo.
EODData.
Ho utilizzato EODData solo con dati giornalieri e prevalentemente per il mercato forex. Nonostante il loro nome, forniscono un certo grado di dati intraday. Il costo è $25 al mese per il loro pacchetto “platino”. La risorsa è molto utile per trovare un elenco completo dei simboli scambiati sulle borse globali, ma ricorda che questo è soggetto al bias di sopravvivenza poiché ritengo che la lista rappresenti le attuali entità quotate. Sfortunatamente ho scoperto che il feed di divisione azionaria era in qualche modo inaccurato (almeno se confrontato con le informazioni di Morningstar). Ciò ha portato a notevoli problemi di picco (vedi sotto) nei dati, che hanno aumentato l’attrito nel processo di pulizia dei dati.
DTN IQFeed
DTN IQFeed è uno dei feed di dati più popolari per i trader algoritmici retail di fascia alta. Dicono di avere oltre 80.000 clienti. Forniscono dati tick-by-tick in tempo reale non filtrati dall’exchange e una grande quantità di dati storici. Il prezzo inizia a $50 al mese, ma in realtà sarà compreso tra $150 e $200 al mese una volta selezionati determinati servizi. Io uso DTN IQFeed per tutte le mie strategie intraday sul mercato azionario e dei futures.
In termini di dati storici, IQFeed fornisce i dati per le azioni, futures e opzioni:
- 180 giorni di calendario di tick (ogni trade)
- 7+ anni di dati storici da 1 minuto
- Oltre 15 anni di dati storici giornalieri
Il principale svantaggio è che il software DTN IQFeed (il mini-server, non gli strumenti per la creazione di grafici) funzionerà solo su Windows. Questo potrebbe non essere un problema se tutto il tuo trading algoritmico viene eseguito in questo sistema operativo, ma personalmente sviluppo tutte le mie strategie in Ubuntu Linux. Tuttavia, anche se non l’ho testato attivamente, ho sentito che è possibile eseguire DTN IQFeed con l’emulatore WINE.
QuantQuote
QuantQuote fornisce a prezzi ragionevoli dati storici al minuto, al secondo e a livello di tick per il mercato azionario statunitense, a partire dal 1998. Inoltre, forniscono a livello istituzionale il feed dei tick in tempo reale, sebbene questo sia di minore interesse per i trader algoritmici retail. Uno dei principali vantaggi di QuantQuote è che i loro dati sono forniti senza bias di sopravvivenza, grazie al loro software di abbinamento simbolico TickMap e all’inclusione di tutti i titoli entro un determinato indice nel tempo. Ad esempio, per acquistare l’intera cronologia dello S&P500 risalente al 1998 in barre al minuto, comprensivo dei simboli delistati, il costo al momento della scrittura di questo articolo era di $895.
QuantQuote è attualmente il principale fornitore di dati per il servizio di backtesting basato sul web QuantConnect. QuantQuote fa di tutto per garantire la minimizzazione degli errori, quindi se stai cercando titoli azionari statunitensi ad alta risoluzione, dovresti considerare di usare il loro servizio.