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

マーケティングの主張ではなく実測結果。詳細ベンチマークはv1.0リリースと共に公開されます。

StratForge vs Pythonバックテスター

コアバックテスト操作の直接比較。

メトリクスPythonStratForge改善度
単一インジケーター(バーあたり)TBDTBDTBD
戦略ステップTBDTBDTBD
フルバックテスト(100万バー)TBDTBDTBD
スループットTBDTBDTBD
メモリフットプリントTBDTBDTBD

最適化の軌跡

StratForgeがバックテストパイプライン全体で最適化を積み重ねる方法。

フェーズ1:カラムナバーストレージTBD

バーはキャッシュフレンドリーなカラムナバッファに格納されます。インジケーター計算はポインターを追うのではなく、連続メモリをストリーミングします。

フェーズ2:インクリメンタルインジケーターTBD

各インジケーターは内部状態を保持し、バーあたりO(1)で更新します。スライディングウィンドウの再計算は不要。

フェーズ3:ブランチレス決定パスTBD

戦略のエントリー/エグジットロジックは、価格条件コードでのパイプラインストールを回避するため、可能な限りブランチレス演算に書き換えられます。

フェーズ4:コンパイル時特殊化TBD

コンパイル時に既知のインジケーターパラメーターはconstevalになります。特殊化テンプレートがランタイムディスパッチを排除します。

ゼロアロケーションの証明

ホットパスでのバックテストパスの実行。

操作PythonバックテスターStratForge
ヒープアロケーション多数(バーごとのPythonオブジェクト)0
バーストレージpandas DataFrameコピーカラムナバッファへのstd::spanビュー
インジケーター状態呼び出しごとの配列アロケーション事前割り当て済みローリング状態
メモリフットプリント動的、GC駆動静的、事前割り当て済み
決定論性実行ごとの浮動小数点ドリフトビット単位で完全に再現可能

手法比較

決定論的・低レイテンシーのバックテストを実現する設計判断。

手法PythonバックテスターStratForge
メモリレイアウト行指向(DataFrame)カラムナ(キャッシュフレンドリー)
インジケーター更新呼び出しごとにウィンドウ再計算バーあたりインクリメンタルO(1)
ループディスパッチインタープリタPythonループインライン化C++テンプレートループ
数値決定論性NumPy / pandasバージョン依存実行間でビット単位の完全一致
戦略合成クラス階層+動的ディスパッチConcepts+静的ポリモーフィズム
エラーハンドリング例外std::expected(スローなし)

アーキテクチャの影響

StratForgeの設計時に研究した業界トップのライブラリとフレームワーク。

ライブラリ学んだこと構築したもの結果
TA-Lib標準的なインジケーター定義とエッジケース処理C++23ヘッダーオンリーインジケーターライブラリ138種類のインジケーター
vectorbtベクトル化バックテストAPIとパラメータースイープコンパイル時テンプレートパラメーター展開TBD
backtrader戦略ライフサイクルとイベントフックConcept駆動の戦略インターフェース型安全なライフサイクル
QuantLibモジュラーなプライシングとアナリティクスアーキテクチャプラガブルなアナリティクスモジュールTBD
Eigenゼロオーバーヘッド数学のための式テンプレート遅延インジケーター合成一時バッファなし
Arrowカラムナメモリレイアウト標準ネイティブカラムナバーストレージキャッシュラインフレンドリー
Follyロックフリープリミティブとsmall_vector事前割り当て済みトレードジャーナルTBD
HighwayポータブルSIMD抽象化SIMDフレンドリーなインジケーター内部ループTBD
fmtコンパイル時フォーマット文字列ゼロコストレポートフォーマットTBD
Boost.PMRアリーナアロケーション用モノトニックバッファstd::pmr::monotonic_buffer_resourceプールゼロヒープアロケーション
Catch2BDDスタイルのインジケーターユニットテストビット単位の完全一致リグレッションスイート再現可能なCI

StratForgeを試す準備はできましたか?

3つのコマンドでクローンしてバックテストを開始。

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