Risultati misurati, non dichiarazioni di marketing. I benchmark dettagliati saranno pubblicati insieme al rilascio v1.0.
Confronto diretto sulle operazioni di backtest principali.
| Metrica | Python | StratForge | Miglioramento |
|---|---|---|---|
| Singolo Indicatore (per barra) | TBD | TBD | TBD |
| Step Strategia | TBD | TBD | TBD |
| Backtest Completo (1M barre) | TBD | TBD | TBD |
| Throughput | TBD | TBD | TBD |
| Consumo Memoria | TBD | TBD | TBD |
Come StratForge accumula ottimizzazioni lungo la pipeline di backtest.
Le barre sono memorizzate in buffer colonnari cache-friendly. I calcoli degli indicatori scorrono su memoria contigua invece di inseguire puntatori.
Ogni indicatore mantiene lo stato interno e si aggiorna in O(1) per barra. Nessun ricalcolo della finestra scorrevole.
La logica di ingresso/uscita della strategia viene riscritta come aritmetica branchless dove possibile per evitare stalli della pipeline sul codice condizionale dei prezzi.
I parametri degli indicatori noti a tempo di compilazione diventano consteval. I template specializzati eliminano il dispatch a runtime.
Esecuzione di un passaggio di backtest sull'hot path.
| Operazione | Backtester Python | StratForge |
|---|---|---|
| Allocazioni Heap | Molte (oggetti Python per barra) | 0 |
| Storage Barre | Copie pandas DataFrame | Viste std::span su buffer colonnare |
| Stato Indicatore | Allocazione array per chiamata | Stato rolling pre-allocato |
| Consumo Memoria | Dinamico, gestito dal GC | Statico, pre-allocato |
| Determinismo | Deriva floating-point tra le esecuzioni | Riproducibile bit-exact |
Decisioni progettuali che si accumulano per un backtesting deterministico a bassa latenza.
| Tecnica | Backtester Python | StratForge |
|---|---|---|
| Layout Memoria | Orientato per righe (DataFrame) | Colonnare (cache-friendly) |
| Aggiornamenti Indicatore | Ricalcolo finestra ad ogni chiamata | Incrementale O(1) per barra |
| Dispatch del Ciclo | Ciclo Python interpretato | Ciclo template C++ inline |
| Determinismo Numerico | Dipendente dalla versione NumPy / pandas | Bit-exact tra le esecuzioni |
| Composizione Strategia | Gerarchia di classi + dispatch dinamico | Concepts + polimorfismo statico |
| Gestione Errori | Eccezioni | std::expected (nessun throw) |
Librerie e framework leader del settore studiati durante la progettazione di StratForge.
| Libreria | Cosa Abbiamo Imparato | Cosa Abbiamo Costruito | Risultato |
|---|---|---|---|
| TA-Lib | Definizioni canoniche degli indicatori e gestione dei casi limite | Libreria indicatori header-only in C++23 | 138 indicatori |
| vectorbt | API backtest vettorizzata e sweep di parametri | Espansione parametri template a tempo di compilazione | TBD |
| backtrader | Ciclo di vita della strategia e hook degli eventi | Interfaccia strategia basata su concepts | Ciclo di vita type-safe |
| QuantLib | Architettura modulare di pricing e analytics | Moduli analytics pluggable | TBD |
| Eigen | Expression template per matematica a zero overhead | Composizione lazy degli indicatori | Nessun buffer temporaneo |
| Arrow | Standard layout memoria colonnare | Storage barre colonnare nativo | Cache-line friendly |
| Folly | Primitive lock-free e small_vector | Registri operazioni pre-allocati | TBD |
| Highway | Astrazione SIMD portabile | Loop interni indicatori compatibili SIMD | TBD |
| fmt | Stringhe di formato a tempo di compilazione | Formattazione report a costo zero | TBD |
| Boost.PMR | Buffer monotonico per allocazione arena | Pool std::pmr::monotonic_buffer_resource | Zero allocazioni heap |
| Catch2 | Test unitari indicatori in stile BDD | Suite di regressione bit-exact | CI riproducibile |
Tre comandi per clonare e iniziare il backtesting.
git clone https://github.com/StratCraftsAI/StratForge.git
cd StratForge
./start.sh build