High-Performance Backtest Engines
How to build a backtest engine that runs hundreds of times faster without changing a single PnL number — data layout, caching, adaptive resolution, and architecture, from first speedups to production internals.
- 01
Jul 1, 2026 #algotradingバックテストエンジンの速度の梯子:ラップトップCPUで298倍、最後の1トレードまで同一のPnL
同一の80コンボ・パラメータスイープを5通りに実装し、すべてが同一のPnLを生成することを検証:pandas rolling.applyは69.9秒、numpyは3.1秒、numbaは2.0秒、並列numbaは0.23秒 — Apple M2 Maxでハードウェアを一切変えずに測定された298倍の高速化、そして有能なベクトル化ベースラインと比べても約13倍。各段が何をもたらすか、なぜGPUが欠けているピースではないのか、そして大量パラメータ探索における本当のボトルネックがどこにあるのか。
- 02
Mar 16, 2026 #algotrading集約Parquetキャッシュ:マルチタイムフレーム・バックテストを数百倍高速化する方法
分足から時間足や指標を事前計算し、parquetに保存し、冗長な再計算なしで大量の戦略テストに活用する方法。
- 03
Mar 17, 2026 #algotradingアダプティブ・ドリルダウン:分足から生ティックまでの可変粒度バックテスト
アダプティブなデータ粒度がバックテストを高速化しストレージを節約する仕組み:価格が大きく動いた箇所やボリュームが急増した箇所のみ1mから1s、100ms、生ティックへドリルダウンし、全履歴を高粒度にする必要はありません。
- 04
Jul 2, 2026 #algotradingIPC税:バックテストエンジンをソケットの向こうに置くと13%失う——そのほとんどはソケットのせいではない
numbaのバックテストカーネルを一行一行Rustに移植し、4通りの方法でプロセス境界越しに呼び出した。等価性ゲートは最後のトレードまでPnLが完全一致することを確認する。1.2 MBの価格系列全体をUnixソケット経由で送るコストは約2 ms——ジョブ全体の約0.1%。同じペイロードをJSONでエンコードすると生バイトの1348倍のコストがかかり、コンボごとのチャッティな呼び出しはデータを80回再送し、バーごとの呼び出しパターンは2.0秒のジョブに対して2.1秒もの純粋なIPCコストを支払うことになる。境界そのものは安い——税金はどう越えるかにある。