失敗モード
先行バイアス
バックテストは、トレードの瞬間にまだ存在しないはずの情報を使用するときに先行バイアスを犯す — そして、その結果として得られる曲線は、私たちが検証する中で最も説得力のある偽物である。
最も一般的なバージョンは、驚くほど単純である。その日の終値で計算されたシグナルが、終値がすでに発生したかのように、その日の始値で実行される場合。事後にその日の勝者をランク付けし、朝のバーからそれらを取引すると、バックテストは明日の新聞を取引していることになる。誰も意図的にそのルールを書いたわけではない。スプレッドシートの数式、1バーずれたルックバックウィンドウ、隠れた覗き見をするインジケーターを通じて紛れ込む。
リペイントインジケーターは、より巧妙なバージョンである。インジケーターは、新しいバーが到着するにつれて、自身の過去の値を静かに修正するため、現在チャートに表示されているシグナルは、リアルタイムでは実際にはそれほど明確に発生していなかった。リペイントされた履歴に対してバックテストを行うと、すべてのエントリーが先見の明があるように見える。それは先見の明がある。それは次に何が来るかを知った上で計算された。
これが、先行バイアスをバックテストにおける最も危険なバグにする理由である。それは監査全体で最も説得力のある偽物を生み出す。真の優位性のない戦略は通常、それを示す — エクイティカーブは不安定で、薄く、説得力がない。先行バイアスのある戦略は逆の挙動をする。それは、そのトレードの一部が未来からの情報で決定されたため、決して取引できなかったはずの、滑らかで高いシャープ値の曲線を生み出す。それがリークである。それは、疲れたレビュー担当者が行うすべての表面的なチェックを通過する。
先行バイアスは、バー内約定仮定の近親である — どちらも、戦略がライブでは到達できなかったはずの価格に触れることを許す。バー内バージョンは、単一のローソク足内のシーケンスエラーである。先行バイアスは時間を通じた直接的なリークであり、両者のうちより鋭いものである。
私たちのパイプラインでは、数値基準をクリアしたすべての戦略は、これを捕捉するために特別に構築された2回目のパスを受ける。私たちの最も強力なモデルは、各生存者を敵対的に監査し、覗き見した約定やまだ閉じていないバーから漏洩した値を探し、単一のインサンプル実行ではなく、ウォークフォワード分割に対してタイミングをクロスチェックする。
これは、私たちが拒否する戦略の「真の優位性がない」よりも少ない割合を占めるが、それだけでも私たちが拒否する戦略の約半分を占める。しかし、それはより費用のかかる失敗である。これらは、実際に取引する直前まで最も良く見える戦略であり、その後崩壊する。
この背景にある研究
- López de Prado (2018). “Advances in Financial Machine Learning.” Wiley. — バックテストの過学習とデータリークに関する標準的な参考文献 — まさにこの失敗モードの学術的枠組み。
- TradingView. “Pine Script® Docs: Repainting.” — TradingView自身によるリペイントに関するドキュメント。チャート上で先行バイアスに汚染されたシグナルを生成するメカニズム。
- White (2000). “A Reality Check for Data Snooping.” Econometrica 68(5). — バックテストの結果が真のスキルを反映しているのか、それとも単にデータをスヌーピングして幸運だったのかをテストする方法を形式化している。
外部の研究であり、文脈とさらなる読書のためにリンクされている。FoxAlgoは独立しており、これらの著者や出版社とは提携していない。
これらはThe No Listの背後にある用語である。The No Listは、すべての戦略とインジケーターが名前を挙げられ、その評価と、それが成功したか失敗したかの正確な理由が示された完全な監査である。
The No Listを入手 →