StratCraft

C++23 バックテストエンジン

7 層・5 プロセスから 4 層・2 プロセスへ。量的リサーチ速度のための専用実行エンジン。

アーキテクチャ進化

3 世代の改善:各層のオーバーヘッドを排除。

V1

V1: マルチプロセス

7+ の抽象化層、5 つの独立プロセス、IPC シリアライゼーションオーバーヘッド。Python のみの実行で高いアーキテクチャ複雑性。

7 層、5 プロセス
V2

V2: 統合

プロセス数を削減、C++ コンポーネントを導入。組み込み実行コンセプトを実証する過渡的アーキテクチャ。

5 層、3 プロセス
V3

V3: 組み込みエンジン

4 層、2 プロセス、1 プロトコル。pybind11 組み込み Python を持つ C++ エクゼキューター。ゼロコピー Apache Arrow から NumPy へのデータフロー。

4 層、2 プロセス

パフォーマンスベンチマーク

RDTSC タイミング、CPU アフィニティピン留め、P50/P90/P99/P999 パーセンタイル追跡で計測。

指標実測値目標値
バーごとのレイテンシー2.15 ns< 1 µs
GIL 取得時間26.62 ns< 10 µs
GIL 保持時間203.30 ns< 100 µs
SIMD スピードアップ(AVX2)2.48x≥ 2x
ロックフリースループット15.73 M ops/s> 10 M ops/s
Python との全体比較500-1000x> 100x

ゼロコピーデータパイプライン

市場データから戦略実行まで、メモリコピーゼロ。

1

Parquet インジェスト

列指向圧縮の Apache Parquet 形式で市場データを格納。直接メモリマップドファイルアクセスでデシリアライゼーションオーバーヘッドを排除。

2

Arrow インメモリフォーマット

Apache Arrow が言語非依存の列指向メモリレイアウトを提供。C++ と Python が同じメモリをコピーなし・変換なしで共有。

3

NumPy ゼロコピーアクセス

pybind11 が同じメモリ空間の Arrow バッファを NumPy 配列として公開。戦略 Python コードが C++ 所有データをアロケーションゼロで読み取る。

最適化の歩み

アーキテクチャからナノ秒まで:パフォーマンスへの体系的なアプローチ。

フェーズ 0: アーキテクチャ500-1000x

V3 シングルプロセスエクゼキューターが IPC シリアライゼーション、プロセス生成、クロスプロセスデータマーシャリングを排除。最大の向上はアーキテクチャの簡素化から来た。

フェーズ 1: ベンチマークフレームワークベースライン

CPU アフィニティピン留めによる RDTSC タイミング。12 のベンチマークプログラムで P50/P90/P99/P999 パーセンタイル追跡。再現可能な計測インフラを確立。

フェーズ 2: モダン C++5-10%

LTO、-march=native、xsimd SIMD 抽象化、mimalloc アロケーター、Quill 低遅延ロギング、Abseil コンテナ。コンパイラとライブラリレベルの最適化。

フェーズ 3: メモリ主権1.05x

PMR インフラ、キャッシュアライメントアロケーター、ホットパスアロケーションゼロ。L1 キャッシュミス < 5%、TLB ミス < 0.5% を目標。

スピードを体験する

数分でクローン、ビルド、最初のバックテストを実行。エンジンは無料版に含まれています。

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