Nel precedente articolo abbiamo presentato la roadmap per lo sviluppo del nuovo framework DataInvestor, un motore open-source per la simulazione di trading sistematico.
In questo articolo descriviamo i progressi nello sviluppo del codice successivi alla pubblicazione di quell’articolo e di cosa è necessario completare prima del rilascio della versione iniziale.
Progressi fino ad oggi
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.
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.
Lo sviluppo procederà rapidamente dopo questo, molto probabilmente 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.
Come puoi essere coinvolto?
DataInvestor è e sarà sempre un progetto open source, disponibile, liberamente e guidato dalla comunità.
Se desideri essere coinvolto nello sviluppo di DataInvestor e contribuire a plasmare il futuro del progetto, contatta .
Grazie ancora!