StratCraft

C++23 Backtest-Engine

Von 7 Schichten und 5 Prozessen auf 4 Schichten und 2 Prozesse. Eine zweckgebundene Ausführungs-Engine für quantitative Forschungsgeschwindigkeit.

Architektur-Evolution

Drei Generationen der Verfeinerung: Overhead auf jeder Schicht eliminieren.

V1

V1: Multi-Prozess

7+ Abstraktionsschichten, 5 separate Prozesse, IPC-Serialisierungs-Overhead. Python-only-Ausführung mit hoher Architekturkomplexität.

7 Schichten, 5 Prozesse
V2

V2: Konsolidierung

Reduzierte Prozessanzahl, C++-Komponenten eingeführt. Übergangsarchitektur, die das eingebettete Ausführungskonzept beweist.

5 Schichten, 3 Prozesse
V3

V3: Eingebettete Engine

4 Schichten, 2 Prozesse, 1 Protokoll. C++-Executor mit pybind11-eingebettetem Python. Zero-Copy Apache Arrow zu NumPy Datenfluss.

4 Schichten, 2 Prozesse

Performance-Benchmarks

Gemessen mit RDTSC-Timing, CPU-Affinität-Pinning und P50/P90/P99/P999-Perzentil-Tracking.

MetrikGemessenZiel
Latenz pro Bar2,15 ns< 1 µs
GIL-Akquirierzeit26,62 ns< 10 µs
GIL-Haltezeit203,30 ns< 100 µs
SIMD-Speedup (AVX2)2,48x≥ 2x
Lock-free-Durchsatz15,73 M ops/s> 10 M ops/s
Gesamt vs. Python500-1000x> 100x

Zero-Copy-Datenpipeline

Von Marktdaten bis zur Strategieausführung ohne Speicherkopien.

1

Parquet-Ingestion

Marktdaten im Apache Parquet Format mit spaltenbasierter Komprimierung gespeichert. Direkter Memory-Mapped-Dateizugriff eliminiert Deserialisierungs-Overhead.

2

Arrow-In-Memory-Format

Apache Arrow bietet ein sprachunabhängiges spaltenbasiertes Speicherlayout. C++ und Python teilen denselben Speicher ohne Kopie oder Konvertierung.

3

NumPy Zero-Copy-Zugriff

pybind11 stellt Arrow-Puffer als NumPy-Arrays im selben Speicherbereich bereit. Strategie-Python-Code liest C++-eigene Daten ohne Allokation.

Optimierungsreise

Von Architektur bis Nanosekunden: ein systematischer Ansatz zur Performance.

Phase 0: Architektur500-1000x

V3 Single-Prozess-Executor eliminierte IPC-Serialisierung, Prozess-Spawning und prozessübergreifendes Daten-Marshaling. Der größte Gewinn kam durch architektonische Vereinfachung.

Phase 1: Benchmark-FrameworkBaseline

RDTSC-Timing mit CPU-Affinität-Pinning. P50/P90/P99/P999-Perzentil-Tracking über 12 Benchmark-Programme. Reproduzierbare Messinfrastruktur etabliert.

Phase 2: Modernes C++5-10%

LTO, -march=native, xsimd SIMD-Abstraktion, mimalloc-Allokator, Quill Low-Latency-Logging, Abseil-Container. Compiler- und Bibliotheks-Optimierungen.

Phase 3: Speicher-Souveränität1,05x

PMR-Infrastruktur, Cache-ausgerichtete Allokatoren, null Hot-Path-Allokationen. Ziel: L1-Cache-Miss < 5% und TLB-Miss < 0,5%.

Die Geschwindigkeit erleben

Klonen, bauen und ersten Backtest in Minuten ausführen. Die Engine ist in der kostenlosen Version enthalten.

git clone https://github.com/StratCraft/StratCraft.git\ncd StratCraft\npnpm install && pnpm dev:desktop