trading-algoritmico-DataInvestor-parte3

DataInvestor – Il nuovo framework per simulare strategie di investimento

Sommario

SCRIVIMI SU TELEGRAM

Per informazioni, suggerimenti, collaborazioni...

Se è la prima volta che atterri su DataTrading, BENVENUTO!

Lascia che mi presenti. Sono Gianluca, ingegnere, trekker e appassionato di coding, finanza e trading. Leggi la mia storia.

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

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

TUTORIAL

DataInvestor è un motore di backtesting per strategie di trading sistematiche scritte in Python.

Siamo lieti di annunciare la pubblicazione di DataInvestor, il motore per simulare e testare strategie di investimento con portafoglio di azioni ed ETF. Il framework è open source ed disponibile gratuitamente nel seguente repository Github

github.com/DataTrading-info/DataInvestor

A differenza di molti altri framework di backtesting open source basati su Python, DataInvestor implementa meccanismi di trading quantitativo in stile istituzionale, con un’enfasi sulla costruzione del portafoglio e sulla gestione del rischio.

Attualmente è ottimizzato per strategie di trading sistematiche basate su long/short cash equity (e ETF) che prevedono un ribilanciamento giornaliero o meno frequente. È stato testato su molte strategie di asset allocation tattica ribilanciate mensilmente.

Perché usare DataInvestor?

DataInvestor è composto da un insieme ben collaudato di moduli intercambiabili di trading sistematico, necessari per la simulazione e il backtesting di strategie long/short cash equity.

In questo modo possiamo concentrarti sullo sviluppo della strategia e non sullo sviluppo dell’infrastruttura . Di seguito riportiamo un elenco delle principali funzionalità attualmente implementate nel framework:

Modelli Alpha

Una raccolta di modelli di previsione per uno o più asset che possono essere estesi per produrre modelli più complessi. Come esempi di base sono stati implementati modelli di “momentum” basati sul rendimento del periodo di detenzione (HPR) e modelli di “trend” a media mobile semplice. È semplice estendere questi modelli Alpha di base per creare modelli personalizzati.

Motore di simulazione

La generazione del segnale, la costruzione e l’esecuzione del portafoglio sono svincolate dall’iterazione temporale del motore di simulazione per consentire il controllo indipendente dei flussi di cassa, la gestione del rischio, il ribilanciamento e il trading. Ciò consente di ribilanciare i portafogli a una frequenza indipendente sia dalla generazione del segnale che dalla frequenza utilizzata per gestire la performance/il rischio.

Costruzione del portafoglio

L’ottimizzazione dei pesi nel portafoglio e il dimensionamento degli ordini sono inclusi “out-of-the-box”. Il framework implementa una raccolta di ottimizzatori di base che includono pesi uguali (1/N) e pesi proporzionali statici impostati dell’utente.

Broker simulato con la contabilità di portafoglio

Il motore del broker simulato, predefinito in DataInvestor, prevede il monitoraggio e la gestione delle posizioni degli asset, potendo gestire anche più portafogli separati. Lo scopo è quello di fornire un framework per flussi di cassa periodici e una tantum, come i depositi e i prelievi, consentendo una simulazione realistica dei guadagni e del capitale su orizzonti di investimento a lungo termine. Gli specifici broker sono associati a modelli di commissioni in modo da implementare una realistica simulazione delle commissioni/commissioni delle operazioni eseguite.

Gestione dati

I dati relativi allo storico ai prezzi/volumi sono attualmente gestiti tramite file CSV flat.

Statistiche sulle prestazioni

DataInvestor include un’ampia raccolta di statistiche sulle prestazioni e sui rischi per consentire un’approfondita analisi post-simulazione. Per default, si genera e visualizza un “tearsheet” per determinare “a colpo d’occhio” le prestazioni a conclusione di un backtest. Le statistiche possono anche essere esportate tramite JSON per essere utilizzate da altre applicazioni.

Prototipazione rapida

DataInvestor ha un’ampia suite di moduli end-to-end configurati con impostazioni più comuni. Questo riduce al minimo la necessità di personalizzare il software nel caso si vuole eseguire un semplice e un rapido test del prototipo di una logica base dei segnali di una strategia. Allo stesso modo è facile sovrascrivere i valori predefiniti per creare una logica personalizzata nel caso si desideri eseguire un complessa meccanismo di ottimizzazione del portafoglio con più modelli alpha e di rischio.

DataInvestor è anche il sistema di backtesting utilizzato in molti dei tutorial di strategie descritte su DataTrading.info. Un semplice esempio del suo utilizzo è implementato nell’articolo su un tradizionale portafoglio 60/40 .

Come funziona DataInvestor?

Il design di DataInvestor si ispira al framework descritto all’interno del libro Inside The Black Box di Rishi K. Narang [1] .

L’utente fornisce a DataInvestor una frequenza di pianificazione tra due date, ad esempio “chiusura del mercato ogni giorno lavorativo”. Il motore di backtesting scorre questi timestamp fino a quando non viene attivato un timestamp di ribilanciamento .

In seguito a un evento di ribilanciamento , un’istanza del modello alpha genera una serie di previsioni pesate di asset basate sull’universo di asset impostato. L’universo degli asset può essere statico o dinamico nel tempo. I pesi delle previsioni degli asset sono quindi inserite in un modello di costruzione del portafoglio, utilizzando un ottimizzatore di portafoglio, che potenzialmente modifica questi pesi in base alla scelta di un particolare meccanismo di costruzione del portafoglio e di gestione del rischio.

I pesi prodotti da questo meccanismo vengono quindi inviati a un dimensionatore di ordini, il cui compito è convertire i pesi adimensionali in tangibili dimensioni di ordini target, definite in unità di stock. Ciò fornisce il portafoglio target desiderato che la strategia prevede di detenere.

Il portafoglio target è quindi confrontato con l’attuale portafoglio presso il broker simulato. Eventuali differenze tra il portafoglio target e quello attuale generano operazioni di ribilanciamento che spingono il portafoglio attuale verso il portafoglio desiderato. Questo processo viene quindi eseguito in modo iterativo per ogni periodo di ribilanciamento  previsto.

Separazione degli stati

Fondamentalmente, l’esecuzione della simulazione nel suo insieme è indipendente dalla pianificazione del ribilanciamento per la costruzione del portafoglio.

In questo modo è possibile, ad esempio, determinare la performance giornaliera o intraday anche per una strategia che si ribilancia solo una volta al mese. Allo stesso modo, questa funzionalità può calcolare le prestazioni ad alta frequenza intraday e aggiornare l’esposizione per una strategia che opera solo una volta al giorno.

Questo meccanismo consente inoltre di applicare i flussi di cassa e gli eventi societari (dividendi e split) nel momento storico in cui si sono effettivamente verificati.

Il motore del broker ha il compito di monitorare e tracciare la liquidità, le posizioni patrimoniali e lo stato del portafoglio in ogni momento durante il processo di simulazione. In questo modo il framework permette una netta separazione tra logica di generazione del portafoglio target e flussi di cassa e contabilità del portafoglio.

DataInvestor contiene di default le implementazioni più comuni e conservative per tutte le logiche descritte sopra. In questo modo possiamo eseguire rapidi e utili backtest con una minima personalizzazione, oltre a specificare i modelli alpha e la gestione del rischio. Inoltre è possibile implementare una logica personalizzata per qualsiasi modulo del sistema in modo rapido e semplice.

Prossimi passi

Ora che il codice di base di DataInvestor è stato rilasciato, il passaggio successivo consiste nell’installare DataInvestor ed eseguire un semplice backtest.

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 [email protected].


Grazie ancora!

Torna su