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
Jun 26, 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
Jul 2, 2026 #アルゴトレードフレームワーク税: バックテストライブラリが素朴な pandas ループより遅くなるとき
8 つのバックテストエンジンを、まったく同一のパラメータスイープでベンチマークした — 150k バー、80 通りの HMA クロス、取引数のパリティを 2707 に固定。最も人気のあるイベント駆動フレームワークのうち 2 つが、手書きの pandas ループより遅い結果になり、一方でベクトル化/コンパイル済みエンジンは同じ作業を約 13,000 倍高速に実行した。人気ライブラリが償却するようには決して設計されていなかった、バーごとのオーバーヘッドの研究。
- 03
Mar 16, 2026 #algotrading集約Parquetキャッシュ:マルチタイムフレーム・バックテストを数百倍高速化する方法
分足から時間足や指標を事前計算し、parquetに保存し、冗長な再計算なしで大量の戦略テストに活用する方法。
- 04
Jul 3, 2026 #アルゴトレード2軸パラメータ空間: なぜスイープの大部分はほぼ無料であるべきなのか
すべてのパラメータが同じ探索コストを持つわけではない。戦略のパラメータは、高価な軸(インジケーター — 系列全体で再計算が必要)と安価な軸(判断の閾値 — 事前計算済みシグナルに対するO(n)のパス)に分かれる。インジケーターは閾値に対して不変であるため、一度だけ計算すればよく、閾値の組み合わせを毎秒約5,600件のペースでスイープできる — これは設定ごとに再計算する場合よりおよそ1,600倍安い。次元の呪いの再評価。
- 05
Mar 17, 2026 #algotradingアダプティブ・ドリルダウン:分足から生ティックまでの可変粒度バックテスト
アダプティブなデータ粒度がバックテストを高速化しストレージを節約する仕組み:価格が大きく動いた箇所やボリュームが急増した箇所のみ1mから1s、100ms、生ティックへドリルダウンし、全履歴を高粒度にする必要はありません。
- 06
Jul 5, 2026 #アルゴトレードフィデリティゲート: 安価なプロキシが高価な評価と同じ順位付けをしない限り、粗密探索バックテストはより速くあなたを欺く
ドリルダウン/マルチフィデリティ探索(ASHA、successive halving、Hyperband)は、数千の設定を安価にスクリーニングし、生き残ったものだけを高価なフル評価に昇格させる。これは正真正銘の高速化だが、低フィデリティの順位付けが高フィデリティの順位付けと食い違うと静かに崩壊する。我々はフォールド単位の順位相関を測定した。1フォールドではSpearman ρが0.03(ほぼランダムな順位付け)になり得るが、フォールドが増えるにつれて0.43、0.67、0.78、0.91へと上昇していく。解決策はたった一つの必須ゲートだ。まずρ(安価, フル)を測定し、ρ ≥ 0.5となる最初のラングまで最小フィデリティを自動的に引き上げる。
- 07
Jul 4, 2026 #アルゴトレードランダム探索 vs スマート探索:交差点はアルゴリズムではなく評価コストにある
1回のバックテストが安価なとき、単純にシャッフルしたSobol列が生のスループットで「スマート」なサンプラー(TPE、CMA-ES、ASHA)を圧倒する——これらはPythonのask/tell税を払わされ、速度が20分の1に落ち、同じ経過時間内で評価できる点の数がはるかに少なくなり、負ける。各評価を高コストにする(マルチTF + walk-forwardフォールド)と、この交差点は逆転する。私たちは両方のレジームを計測し、フォールドのランク忠実度(ρ@1が0.03→0.43へ上昇)がなぜ枝刈りが報われるための前提条件なのかを示した。
- 08
Jul 6, 2026 #アルゴリズム取引GPU精度の罠: Apple Metal上のfp32バックテストが静かにゴミを返す仕組み
AppleのMetal GPUにはfloat64が存在しない。ベクトル化されたバックテストを何も考えずに移植すると、魅力的なprefix-sum方式のWMAはfp32をオーバーフローさせ、最大相対誤差は211倍に達する。それでも処理は完走し、もっともらしい数値を返してくる。解決策は精度を上げることではなく、別の定式化にある。すなわち直接的なウィンドウ畳み込みであり、fp32でも8×10⁻⁷まで安全で、シングルスレッドのnumbaより55.9倍速い。この罠、その算術、そして自分が罠に落ちていないことをどう証明するか。
- 09
Jul 7, 2026 #algotradingGPUが元を取るとき:パラメータスイープのルーフライン——見出しの167倍は実は27倍のアルゴリズム×6.2倍のハードウェア
GPUのCPUに対する優位はバッチサイズとともに拡大します——私たちのマルチタイムフレームのインジケーター事前計算では、1呼び出しあたり1コンボの54.5倍から、61コンボの359.6倍まで——なぜなら小さなスイープではカーネル起動と転送のオーバーヘッドを償却できないからです。見出しの167倍を、CPUをも助ける27倍のアルゴリズム的勝利と6.2倍のハードウェア的勝利に分解し、GPU対最良CPUの本当の優位はシングルタイムフレームでわずか3.2倍、マルチで6.2倍にすぎないことを示し、GPUに投資する価値が出るまでにスイープがどれほど広くなければならないかの判断ガイドを与えます。
- 10
Jun 30, 2026 #algotradingIPC税:バックテストエンジンをソケットの向こうに置くと13%失う——そのほとんどはソケットのせいではない
numbaのバックテストカーネルを一行一行Rustに移植し、4通りの方法でプロセス境界越しに呼び出した。等価性ゲートは最後のトレードまでPnLが完全一致することを確認する。1.2 MBの価格系列全体をUnixソケット経由で送るコストは約2 ms——ジョブ全体の約0.1%。同じペイロードをJSONでエンコードすると生バイトの1348倍のコストがかかり、コンボごとのチャッティな呼び出しはデータを80回再送し、バーごとの呼び出しパターンは2.0秒のジョブに対して2.1秒もの純粋なIPCコストを支払うことになる。境界そのものは安い——税金はどう越えるかにある。