Gemessene Ergebnisse, keine Marketing-Behauptungen. Detaillierte Benchmarks werden zusammen mit dem v1.0-Release veröffentlicht.
Direktvergleich über zentrale Backtest-Operationen.
| Metrik | Python | StratForge | Verbesserung |
|---|---|---|---|
| Einzelner Indikator (pro Bar) | TBD | TBD | TBD |
| Strategieschritt | TBD | TBD | TBD |
| Vollständiger Backtest (1 Mio. Bars) | TBD | TBD | TBD |
| Durchsatz | TBD | TBD | TBD |
| Speicherbedarf | TBD | TBD | TBD |
Wie StratForge Optimierungen über die gesamte Backtest-Pipeline kumuliert.
Bars werden in cache-freundlichen spaltenbasierten Puffern gespeichert. Indikatorberechnungen streamen durch zusammenhängenden Speicher, statt Zeigern nachzulaufen.
Jeder Indikator pflegt seinen internen Zustand und aktualisiert sich in O(1) pro Bar. Kein Sliding-Window-Neuberechnen.
Strategie-Ein-/Ausstiegslogik wird, wo möglich, als verzweigungsfreie Arithmetik umgeschrieben, um Pipeline-Stalls bei preisbedingtem Code zu vermeiden.
Zur Compile-Time bekannte Indikatorparameter werden zu consteval. Spezialisierte Templates eliminieren Runtime-Dispatch.
Ausführung eines Backtest-Durchlaufs auf dem Hot Path.
| Operation | Python-Backtester | StratForge |
|---|---|---|
| Heap-Allokationen | Viele (pro Bar Python-Objekte) | 0 |
| Bar-Speicherung | pandas-DataFrame-Kopien | std::span-Views in spaltenbasierten Puffer |
| Indikatorzustand | Pro-Aufruf-Array-Allokation | Vorallokierter Rolling-State |
| Speicherbedarf | Dynamisch, GC-gesteuert | Statisch, vorallokiert |
| Determinismus | Gleitkomma-Drift über Durchläufe | Bitgenau reproduzierbar |
Designentscheidungen, die sich zu deterministischem Low-Latency-Backtesting kumulieren.
| Technik | Python-Backtester | StratForge |
|---|---|---|
| Speicherlayout | Zeilenorientiert (DataFrame) | Spaltenbasiert (cache-freundlich) |
| Indikator-Updates | Fenster bei jedem Aufruf neu berechnen | Inkrementell O(1) pro Bar |
| Schleifenausführung | Interpretierte Python-Schleife | Inline-C++-Template-Schleife |
| Numerischer Determinismus | NumPy-/pandas-versionsabhängig | Bitgenau über alle Durchläufe |
| Strategiekomposition | Klassenhierarchie + dynamischer Dispatch | Concepts + statischer Polymorphismus |
| Fehlerbehandlung | Exceptions | std::expected (kein throw) |
Branchenführende Bibliotheken und Frameworks, die beim Design von StratForge studiert wurden.
| Bibliothek | Was wir gelernt haben | Was wir gebaut haben | Ergebnis |
|---|---|---|---|
| TA-Lib | Kanonische Indikatordefinitionen und Grenzfallbehandlung | C++23-Header-Only-Indikatorbibliothek | 138 Indikatoren |
| vectorbt | Vektorisierte Backtest-API und Parameter-Sweeps | Template-basierte Parameterexpansion zur Compile-Time | TBD |
| backtrader | Strategie-Lebenszyklus und Event-Hooks | Concept-basiertes Strategie-Interface | Typsicherer Lebenszyklus |
| QuantLib | Modulare Preis- und Analysearchitektur | Pluggable Analytics-Module | TBD |
| Eigen | Expression-Templates für Overhead-freie Mathematik | Lazy Indikator-Komposition | Keine temporären Puffer |
| Arrow | Standards für spaltenbasiertes Speicherlayout | Native spaltenbasierte Bar-Speicherung | Cache-Line-freundlich |
| Folly | Lock-Free-Primitiven und small_vector | Vorallokierte Trade-Journale | TBD |
| Highway | Portable SIMD-Abstraktion | SIMD-freundliche Indikator-Innenschleifen | TBD |
| fmt | Compile-Time-Format-Strings | Zero-Cost-Berichtsformatierung | TBD |
| Boost.PMR | Monotoner Puffer für Arena-Allokation | std::pmr::monotonic_buffer_resource-Pool | Zero Heap-Allokation |
| Catch2 | BDD-artige Indikator-Unit-Tests | Bitgenaue Regressionssuite | Reproduzierbare CI |
Drei Befehle zum Klonen und Loslegen mit dem Backtesting.
git clone https://github.com/StratCraftsAI/StratForge.git
cd StratForge
./start.sh build