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 di vectorbt con ccxt tramite la classe vbt.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 cicli for.
  • Simulazione del Portafoglio: È stato utilizzato l’oggetto vbt.Portfolio.from_signals per 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 che vectorbt fornisce 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 vectorbt si basa su dipendenze opzionali come ccxt, che devono essere gestite e documentate correttamente.
  • Curva di Apprendimento: Sebbene l’API sia concisa, padroneggiare il “modo di pensare” vettorizzato di vectorbt e 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:

  1. Il Tuo Script (test_engine_prototype.py): Dà l’ordine di alto livello: “Voglio i dati di BTC/USDT da un exchange di criptovalute”.
  2. vectorbt: Riceve l’ordine. vectorbt è un motore di backtesting, non uno specialista di connessioni. Per eseguire l’ordine, si rivolge a un esperto.
  3. ccxt: È lo specialista universale delle connessioni a exchange di criptovalute. Riceve la richiesta da vectorbt e 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: ccxt non 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-ta per 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”.

    vectorbt eseguirà 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: vectorbt può 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.