Aggiornamenti sullo stato degli sviluppi di DataInvestor

Nel precedente articolo abbiamo presentato la roadmap per lo sviluppo del nuovo framework DataInvestor, un motore open-source per il trading quantitativo e sistematico multi-strategia e multi-portafoglio. In questo articolo descriviamo gli aggiornamenti sullo stato degli sviluppi del codice successivi alla pubblicazione di quell’articolo e di cosa è necessario completare prima del rilascio della versione iniziale.

Aggiornamenti sullo stato degli sviluppi

La versione di sviluppo interna di DataInvestor è ora sufficientemente matura per eseguire semplici backtest su molteplici ticker azionari. Questo significa che le gerarchie delle classi base Broker, Exchange, e PortfolioConstructionModel sono implementate e testate, e funzionano all’interno di un motore semplificato di simulazione di eventi giornalieri.

L’entità SimulatedExchange gestisce i prezzi degli asset nel tempo utilizzando le istanze di PriceVolumeDataSource. Quest’ultimo usa attualmente i file CSV tramite panda come meccanismo di archiviazione, sebbene l’interfaccia sia stata progettata per consentire  RDBMS e altri database di serie temporali in futuro.

SimulatedBroker gestisce le posizioni long e short per tutta la durata del backtest . Fornisce inoltre più sottoconti e flussi di cassa in entrata/uscita da questi conti, nonché il broker stesso.

Le gerarchie delle classi AlphaModel e PortfolioConstructionModel sono entrambe implementate e testate con pesi uguali per tutti gli asset in un portafoglio iniziale. Sebbene il ribilanciamento sia ora supportato, attraverso l’uso di portafogli desiderati/effettivi, non esiste ancora alcun meccanismo per specificare la frequenza del ribilanciamento.

Tutte queste classi sono racchiuse in un’istanza Backtest, che usa un SimulationEngine come un evento “orologio” che determina quando aggiornare la logica di trading e le componenti di mercato associate, come il broker e la borsa.

In sostanza ciò consente semplici backtest buy-and-hold sui dati azionari giornalieri, seppur con notevole flessibilità e modularità nella composizione del sistema.

Prossimi sviluppi

La principale caratteristica da implementare è un meccanismo per la segnalazione delle prestazioni. All’interno di DataInvestor il reporting delle prestazioni è composto da due aspetti: il calcolo delle prestazioni e la visualizzazione delle prestazioni.

Il calcolo delle prestazioni è un fattore critico e non può essere ereditato direttamente dal precedente framework DataTrader dato la nuova funzionalità di gestione dei flussi di cassa complica le modalità di calcolo delle prestazioni. Questo può essere compreso semplicemente osservando che quando un portafoglio riceve un’iniezione di liquidità, la curva azionaria corrispondente ammette un aumento discontinuo della performance, sebbene fittizio.

Per tenerne conto è necessario introdurre il concetto di “azioni” in un “fondo”, che naturalmente consente il deposito e il prelievo di capitale, senza intaccare i calcoli di performance delle strategie sottostanti utilizzate. Descriviamo in dettaglio questa funzionalità in un articolo successivo.

La visualizzazione delle prestazioni attualmente implementata in DataInvestor è un output di Matplotlib al termine di un backtest. Questo è certamente sufficiente per il backtesting orientato alla strategia, ma è meno appropriato per l’analisi a livello di portafoglio e il monitoraggio del rischio.

Dashboard Web

Per questo motivo la nuova visualizzazione del portfolio utilizzerà probabilmente un’applicazione Web basata su Python che utilizza una libreria come Django o Flask .

Questo fornisce tre vantaggi. In primo luogo, la reportistica del rischio e della performance può essere organizzata in modo gerarchico. Una dashboard sarà la principale interfaccia di accesso, che consentirà di approfondire analisi più dettagliate per vari aspetti della strategia di portafoglio.

In secondo luogo, un processo server web separato dedicato permette la creazione di report continui durante lo svolgimento del paper trading o del trading live. L’applicazione Web sarà in grado di contattare l’app di trading e raccogliere i risultati delle prestazioni in tempo reale.

In terzo luogo, essendo ospitato su un server remoto, sarà possibile visualizzare queste analisi di portafoglio da qualsiasi posizione, anziché limitarsi semplicemente ad una workstation desktop locale.

Prossimo rilascio: cosa aspettarsi

La prima versione alpha del framework DataInvestor consiste nel classico esempio di backtest di crossover della media mobile (come già presente in DataTrader) insieme a un motore di reporting elementare basato sul web.

Dopo questi aggiornamenti sullo stato degli sviluppi si procederà rapidamente con la gerarchia delle Broker per simulare gli account di Interactive Brokers ed avere costi di transazione realistici.

L’attenzione sarà quindi rivolta all’ottimizzazione del sistema per consentire backtest su larga scala, su diversi universi  di asset. Come descritto nel precedente articolo, nei prossimi mesi avremo aggiornamenti più frequenti sui progressi di questo sviluppo.

Si prevede che la fine di dicembre 2020 o l’inizio del 2021 vedrà il rilascio della prima versione principale. DataInvestor è un sistema di trading quantitativo multi-strategia open source, disponibile gratuitamente e guidato dalla community.

Il codice completo presentato in questo articolo, basato sul framework di trading quantitativo event-driven DataInvestor, è disponibile nel seguente repository GitHub: https://github.com/tradingquant-it/DataInvestor.

Benvenuto su TradingQuant!

Sono Gianluca, ingegnere software e data scientist. Sono appassionato di coding, finanza e trading. Leggi la mia storia.

Ho creato TradingQuant per aiutare le altre persone ad utilizzare nuovi approcci e nuovi strumenti, ed applicarli correttamente al mondo del trading.

TradingQuant vuole essere un punto di ritrovo per scambiare esperienze, opinioni ed idee.

SCRIVIMI SU TELEGRAM

Per informazioni, suggerimenti, collaborazioni...

Torna in alto