Abbiamo trascorso gli ultimi mesi ad aggiornare il framework di backtesting open-source DataInvestor. In particolare, abbiamo implementato nuove funzionalità e migliorato le performance di quelle già presenti.
File di Configurazione
Tra le nuove funzionalità, per prima cosa abbiamo eliminato la necessità di specificare una variabile di ambiente DATAINVESTOR_CSV_DATA_DIR
per indicare dove DataInvestor deve recuperare i file CSV con i dati OHLCV da analizzare. In alcune situazioni, l’impostazione della variabile d’ambiente rendeva l’installazione più complicata.
Impostare le envvars è una pratica comune sui sistemi Unix, ma risulta meno frequente e più complessa per chi utilizza Windows. Per semplificare l’uso del framework, abbiamo modificato la logica di inizializzazione e configurazione. Nella nuova versione inseriamo un file di configurazione config.yaml
nella stessa directory dello script Python di backtesting, dove specifichiamo la directory dei file CSV e quella di output. Se il file è assente, il framework applica le configurazioni di default.
Abbiamo quindi aggiornato le istruzioni di avvio del framework nel README di GitHub. L’esempio di portafoglio 60/40 tra azioni/obbligazioni ora è più semplice da eseguire su Windows, grazie anche all’installazione di Anaconda 3.7.
Oltre a queste modifiche, abbiamo aggiunto ulteriori unit test per alcuni moduli. Attualmente abbiamo raggiunto una copertura di test del 62%. Puntiamo a migliorare progressivamente il testing per ogni funzione.
Abbiamo anche riorganizzato il codice per chiarire meglio la compatibilità e la stabilità del framework. In particolare, ora DataInvestor supporta e viene testato per le versioni 3.6, 3.7, 3.8 e 3.9 di Python.
Posizioni Long/Short
Tra le nuove funzionalità, la modifica più rilevante ci ha portati a rivedere profondamente le classi Position, PositionHandler, Portfolio, Transaction e SimulatedBroker per permettere la gestione delle posizioni short, ossia la vendita allo scoperto di asset.
Le versioni precedenti di DataInvestor gestivano solo portafogli long-only. Ora possiamo simulare portafogli long-short con leva, utilizzando un modello semplificato di margine. In particolare, DataInvestor ci consente di simulare strategie di pairs trading con ritorno alla media, come la strategia basata sul filtro di Kalman, che abbiamo descritto in precedenza su questo sito con il nostro framework DataTrader.
Conclusioni
Abbiamo inoltre corretto alcuni bug così da permettere ai nuovi utenti di iniziare più rapidamente a lavorare con il framework. Nei prossimi aggiornamenti vogliamo continuare a sviluppare una documentazione più dettagliata, aumentare la copertura dei test, correggere i bug eventualmente presenti e implementare simulazioni di portafogli sempre più realistiche.
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.”