Performance-Benchmarks

Gemessene Ergebnisse, keine Marketing-Behauptungen. Detaillierte Benchmarks werden zusammen mit dem v1.0-Release veröffentlicht.

StratForge vs. Python-Backtester

Direktvergleich über zentrale Backtest-Operationen.

MetrikPythonStratForgeVerbesserung
Einzelner Indikator (pro Bar)TBDTBDTBD
StrategieschrittTBDTBDTBD
Vollständiger Backtest (1 Mio. Bars)TBDTBDTBD
DurchsatzTBDTBDTBD
SpeicherbedarfTBDTBDTBD

Optimierungsweg

Wie StratForge Optimierungen über die gesamte Backtest-Pipeline kumuliert.

Phase 1: Spaltenbasierte Bar-SpeicherungTBD

Bars werden in cache-freundlichen spaltenbasierten Puffern gespeichert. Indikatorberechnungen streamen durch zusammenhängenden Speicher, statt Zeigern nachzulaufen.

Phase 2: Inkrementelle IndikatorenTBD

Jeder Indikator pflegt seinen internen Zustand und aktualisiert sich in O(1) pro Bar. Kein Sliding-Window-Neuberechnen.

Phase 3: Verzweigungsfreie EntscheidungspfadeTBD

Strategie-Ein-/Ausstiegslogik wird, wo möglich, als verzweigungsfreie Arithmetik umgeschrieben, um Pipeline-Stalls bei preisbedingtem Code zu vermeiden.

Phase 4: Compile-Time-SpezialisierungTBD

Zur Compile-Time bekannte Indikatorparameter werden zu consteval. Spezialisierte Templates eliminieren Runtime-Dispatch.

Zero-Allocation-Nachweis

Ausführung eines Backtest-Durchlaufs auf dem Hot Path.

OperationPython-BacktesterStratForge
Heap-AllokationenViele (pro Bar Python-Objekte)0
Bar-Speicherungpandas-DataFrame-Kopienstd::span-Views in spaltenbasierten Puffer
IndikatorzustandPro-Aufruf-Array-AllokationVorallokierter Rolling-State
SpeicherbedarfDynamisch, GC-gesteuertStatisch, vorallokiert
DeterminismusGleitkomma-Drift über DurchläufeBitgenau reproduzierbar

Technikvergleich

Designentscheidungen, die sich zu deterministischem Low-Latency-Backtesting kumulieren.

TechnikPython-BacktesterStratForge
SpeicherlayoutZeilenorientiert (DataFrame)Spaltenbasiert (cache-freundlich)
Indikator-UpdatesFenster bei jedem Aufruf neu berechnenInkrementell O(1) pro Bar
SchleifenausführungInterpretierte Python-SchleifeInline-C++-Template-Schleife
Numerischer DeterminismusNumPy-/pandas-versionsabhängigBitgenau über alle Durchläufe
StrategiekompositionKlassenhierarchie + dynamischer DispatchConcepts + statischer Polymorphismus
FehlerbehandlungExceptionsstd::expected (kein throw)

Architektur-Einflüsse

Branchenführende Bibliotheken und Frameworks, die beim Design von StratForge studiert wurden.

BibliothekWas wir gelernt habenWas wir gebaut habenErgebnis
TA-LibKanonische Indikatordefinitionen und GrenzfallbehandlungC++23-Header-Only-Indikatorbibliothek138 Indikatoren
vectorbtVektorisierte Backtest-API und Parameter-SweepsTemplate-basierte Parameterexpansion zur Compile-TimeTBD
backtraderStrategie-Lebenszyklus und Event-HooksConcept-basiertes Strategie-InterfaceTypsicherer Lebenszyklus
QuantLibModulare Preis- und AnalysearchitekturPluggable Analytics-ModuleTBD
EigenExpression-Templates für Overhead-freie MathematikLazy Indikator-KompositionKeine temporären Puffer
ArrowStandards für spaltenbasiertes SpeicherlayoutNative spaltenbasierte Bar-SpeicherungCache-Line-freundlich
FollyLock-Free-Primitiven und small_vectorVorallokierte Trade-JournaleTBD
HighwayPortable SIMD-AbstraktionSIMD-freundliche Indikator-InnenschleifenTBD
fmtCompile-Time-Format-StringsZero-Cost-BerichtsformatierungTBD
Boost.PMRMonotoner Puffer für Arena-Allokationstd::pmr::monotonic_buffer_resource-PoolZero Heap-Allokation
Catch2BDD-artige Indikator-Unit-TestsBitgenaue RegressionssuiteReproduzierbare CI

Bereit, StratForge auszuprobieren?

Drei Befehle zum Klonen und Loslegen mit dem Backtesting.

git clone https://github.com/StratCraftsAI/StratForge.git cd StratForge ./start.sh build