StratCraft

Moteur de backtest C++23

De 7 couches et 5 processus à 4 couches et 2 processus. Un moteur d\'exécution conçu pour la vélocité de recherche quantitative.

Évolution architecturale

Trois générations de raffinement : éliminer les surcharges à chaque couche.

V1

V1 : Multi-processus

7+ couches d\'abstraction, 5 processus séparés, surcharge de sérialisation IPC. Exécution Python uniquement avec une haute complexité architecturale.

7 couches, 5 processus
V2

V2 : Consolidation

Nombre de processus réduit, composants C++ introduits. Architecture de transition prouvant le concept d\'exécution embarquée.

5 couches, 3 processus
V3

V3 : Moteur embarqué

4 couches, 2 processus, 1 protocole. Exécuteur C++ avec Python embarqué via pybind11. Flux de données Apache Arrow vers NumPy zéro-copie.

4 couches, 2 processus

Benchmarks de performance

Mesuré avec le timing RDTSC, l\'épinglage d\'affinité CPU et le suivi de percentiles P50/P90/P99/P999.

MétriqueMesuréCible
Latence par barre2,15 ns< 1 µs
Temps d\'acquisition GIL26,62 ns< 10 µs
Durée de détention GIL203,30 ns< 100 µs
Accélération SIMD (AVX2)2,48x≥ 2x
Débit lock-free15,73 M ops/s> 10 M ops/s
Global vs Python500-1000x> 100x

Pipeline de données zéro-copie

Des données de marché à l\'exécution de stratégie sans aucune copie mémoire.

1

Ingestion Parquet

Données de marché stockées au format Apache Parquet avec compression colonnaire. L\'accès aux fichiers mappés en mémoire élimine la surcharge de désérialisation.

2

Format Arrow en mémoire

Apache Arrow fournit une disposition mémoire colonnaire indépendante du langage. C++ et Python partagent la même mémoire sans aucune copie ni conversion.

3

Accès NumPy zéro-copie

pybind11 expose les tampons Arrow comme des tableaux NumPy dans le même espace mémoire. Le code Python de stratégie lit les données détenues par C++ avec zéro allocation.

Parcours d\'optimisation

De l\'architecture aux nanosecondes : une approche systématique des performances.

Phase 0 : Architecture500-1000x

L\'exécuteur mono-processus V3 a éliminé la sérialisation IPC, la création de processus et le marshaling de données inter-processus. Le gain le plus important est venu de la simplification architecturale.

Phase 1 : Framework de benchmarkRéférence

Timing RDTSC avec épinglage d\'affinité CPU. Suivi de percentiles P50/P90/P99/P999 sur 12 programmes de benchmark. Infrastructure de mesure reproductible établie.

Phase 2 : C++ moderne5-10%

LTO, -march=native, abstraction SIMD xsimd, allocateur mimalloc, journalisation Quill à faible latence, conteneurs Abseil. Optimisations au niveau compilateur et bibliothèque.

Phase 3 : Souveraineté mémoire1,05x

Infrastructure PMR, allocateurs alignés sur le cache, zéro allocation sur le chemin critique. Ciblant les cache miss L1 < 5% et TLB miss < 0,5%.

Vivez la vitesse

Clonez, compilez et exécutez votre premier backtest en quelques minutes. Le moteur est inclus dans le niveau gratuit.

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