Contesto
Ogni sistema di trading algoritmico avanzato, come FIRE, necessita di un motore di backtesting potente, veloce e flessibile per testare le strategie su dati storici. La scelta di questa tecnologia è una decisione architetturale critica. La libreria vectorbt è un candidato di primo piano grazie alle sue performance (basate su numpy e numba) e alla sua API concisa.
Questo Proof of Concept è stato creato per rispondere a una domanda fondamentale: “vectorbt è la scelta giusta per il motore della Sinapsi FIRE?“. Il test doveva validare l’intero flusso di lavoro: dall’acquisizione di dati da un exchange reale fino alla generazione di un report di performance.
Decisione
È stato sviluppato uno script prototipo (test_engine_prototype.py) che implementa un intero ciclo di backtest per una strategia di incrocio di EMA, utilizzando vectorbt come motore principale.
Le decisioni tecniche e le capacità validate sono:
- Acquisizione Dati via
ccxt: Si è deciso di sfruttare l’integrazione nativa divectorbtconccxttramite la classevbt.CCXTData.download. Questo ha permesso di scaricare dati reali da Binance in modo semplice e diretto. - Generazione di Segnali Vettorizzata: La generazione dei segnali di trading è stata implementata utilizzando le funzioni vettorizzate di
vectorbt(es.vbt.MA.run,.vbt.crossed_above), dimostrando l’enorme efficienza e concisione della libreria rispetto a un approccio con ciclifor. - Simulazione del Portafoglio: È stato utilizzato l’oggetto
vbt.Portfolio.from_signalsper eseguire il backtest, includendo parametri realistici come il capitale iniziale e le commissioni di transazione. - Reportistica Integrata: La validazione si è conclusa con la generazione di un report statistico completo tramite il metodo
.stats(), confermando chevectorbtfornisce nativamente tutte le metriche di performance necessarie per valutare una strategia.
Conseguenze
Positive
- Validazione della Tecnologia Riuscita: Il POC ha dimostrato in modo inequivocabile che
vectorbtè una soluzione estremamente potente e adatta come motore di backtesting per FIRE. - Concisenza e Leggibilità: L’intero flusso di lavoro, che richiederebbe centinaia di righe di codice se scritto da zero, è stato implementato in meno di 50 righe, a testimonianza della potenza dell’API di
vectorbt. - Performance Elevate: Essendo basato su operazioni vettorizzate, l’intero processo (calcolo degli indicatori e backtest) è estremamente veloce.
- Pattern Architetturale Definito: Lo script stabilisce un chiaro e solido pattern (Dati → Segnali → Portafoglio → Statistiche) che può essere usato come blueprint per la progettazione del motore di backtesting finale di FIRE.
Negative / Limitazioni
- Dipendenze Opzionali: Il POC ha evidenziato che
vectorbtsi basa su dipendenze opzionali comeccxt, che devono essere gestite e documentate correttamente. - Curva di Apprendimento: Sebbene l’API sia concisa, padroneggiare il “modo di pensare” vettorizzato di
vectorbte le sue convenzioni (es. la forma dei dati) richiede uno studio iniziale. - Focus su Dati OHLC:
vectorbtè ottimizzato per dati OHLC a frequenza fissa. Gestire dati più complessi (es. dati tick-by-tick, order book) richiederebbe un’integrazione più avanzata e forse customizzata.
Q&A
1. In pratica serve a collegarsi con Binance per scaricare i dati?
Sì, ma in modo indiretto e molto più potente. Lo script non contiene codice specifico per Binance. Invece, utilizza una “catena di comando” di librerie specializzate:
- Il Tuo Script (
test_engine_prototype.py): Dà l’ordine di alto livello: “Voglio i dati di BTC/USDT da un exchange di criptovalute”. vectorbt: Riceve l’ordine.vectorbtè un motore di backtesting, non uno specialista di connessioni. Per eseguire l’ordine, si rivolge a un esperto.ccxt: È lo specialista universale delle connessioni a exchange di criptovalute. Riceve la richiesta davectorbte sa esattamente come parlare il “linguaggio” di Binance (e di molti altri) per scaricare i dati richiesti.
In sintesi: Lo scopo dello script non è scaricare i dati. Quello è solo il primo passo. Lo scopo è testare una strategia di trading. Per farlo, ha bisogno di dati, e usa vectorbt e ccxt come un sistema efficiente per ottenerli.
2. Quali sono le possibilità?
Questa è la domanda più importante. Le possibilità sono immense e si dividono in due categorie: quelle offerte da ccxt (per i dati) e quelle offerte da vectorbt (per le strategie).
A) Possibilità di Acquisizione Dati (grazie a ccxt)
ccxt è come un traduttore universale per exchange di criptovalute. Le sue possibilità sono enormi:
- Connettersi a Oltre 100 Exchange: Non solo Binance, ma anche Kraken, Coinbase, KuCoin, Bybit, e quasi tutti gli exchange che puoi immaginare. Puoi cambiare una singola parola nel tuo codice per scaricare i dati da un altro exchange.
- Scaricare Diversi Tipi di Dati:
- Dati Storici OHLCV: Come nello script, per qualsiasi timeframe (1 minuto, 5 minuti, 1 ora, 4 ore, 1 giorno).
- Ticker in Tempo Reale: Il prezzo attuale, il bid/ask, il volume delle 24 ore.
- Order Book: La lista completa degli ordini di acquisto e vendita.
- Interagire con il Tuo Account:
ccxtnon serve solo a leggere dati. Se fornisci le tue chiavi API, puoi usarlo per:- Piazzare ordini di trading (market, limit, etc.).
- Controllare il saldo del tuo portafoglio.
- Ottenere la lista dei tuoi ordini aperti e dello storico dei trade.
B) Possibilità di Backtesting e Strategia (grazie a vectorbt)
vectorbt è un motore di Formula 1 per il backtesting. È progettato per essere incredibilmente veloce.
-
Testare Qualsiasi Indicatore Tecnico: Lo script usa l’incrocio di EMA, ma puoi usare centinaia di altri indicatori:
- RSI (Relative Strength Index)
- MACD (Moving Average Convergence Divergence)
- Bande di Bollinger
- Ichimoku Cloud
- E integra librerie come
pandas-taper avere accesso a centinaia di indicatori pronti all’uso.
-
Ottimizzazione dei Parametri (La Vera Magia): Questa è la caratteristica più potente. Invece di testare solo un incrocio di EMA (12 e 26), puoi dire a
vectorbt:“Testa tutte le combinazioni possibili di EMA veloce da 10 a 20 e di EMA lenta da 25 a 40”.
vectorbteseguirà centinaia di backtest contemporaneamente, quasi alla stessa velocità di uno solo, e ti dirà quale combinazione di parametri avrebbe generato i profitti migliori in passato. -
Strategie Complesse: Puoi combinare più condizioni. Ad esempio:
“Compra solo se l’EMA veloce incrocia la lenta E l’RSI è sotto 30”.
-
Gestione del Rischio: Puoi simulare strategie di gestione del rischio molto realistiche:
- Stop Loss: Uscire da una posizione se il prezzo scende del 2%.
- Take Profit: Uscire da una posizione se il prezzo sale del 5%.
- Trailing Stop: Uno stop loss che si muove verso l’alto man mano che il prezzo sale.
-
Backtest di Portafoglio: Puoi testare una strategia non solo su un asset (BTC/USDT), ma su decine di asset contemporaneamente per vedere come si sarebbe comportato un intero portafoglio.
-
Analisi e Visualizzazione Avanzata:
vectorbtpuò generare grafici interattivi che mostrano non solo il profitto, ma anche i singoli trade sul grafico dei prezzi, le curve di drawdown, e decine di altre visualizzazioni per analizzare in profondità la performance della tua strategia.
In conclusione: Lo script che hai visto è solo la punta dell’iceberg. È un prototipo che valida una tecnologia in grado di costruire un sistema di trading algoritmico di livello professionale, capace di testare migliaia di varianti di strategie in pochi secondi.