背景:バックテストに潜む時間的バイアス
バックテストは過去の市場データを用いて戦略のリターンを推定する手法ですが、最も危険なバグは「明日の価格」を誤って使用してしまう先読みバイアスです。たった一部の終値が計算に混入すると、戦略は予言者のように見え、実際の運用では破綻します。
不正行為とは何か ― シフトの過不足
本稿で扱う「不正行為」は、情報の利用タイミングをずらすことを指します。
- シフトが少なすぎる(=不正行為) → 当日の価格が翌日の取引に反映され、利益が過大評価される。
- シフトが多すぎる(=1日遅れ) → 利益が減少し、実際のパフォーマンスが低下する。
どちらの場合もコードは例外を投げず、数値は「妥当」に見えるため、目視レビューだけでは検出が困難です。
シフト設計の課題と方針
ペア取引戦略のバックテストエンジン開発時に、過去の計画書が相反する指示(「shift(1)」 vs 「2倍の遅延」)を提示しました。結果として、シフトが二重になると合計で2日遅れとなり、期待通りの遅延が失われました。
この問題を解決するために、以下の不変条件を1文に凝縮しました。
バー t の実現損益は、t‑1 日の終値までの情報にのみ依存する。
シグナル計算(ベータ、スプレッド、Zスコア、売買判定)は