先読みバイアス(ルックアヘッド・バイアス)は、判断の時点では手に入らなかったはずの情報をバックテストが使ってしまうときに起きます。役に立たないルールを素晴らしく見せることがあり、意外なほど簡単にうっかり入り込みます。
よくある入り込み方
- シグナルを出した終値で取引する。 ルールが終値を必要とするなら、その値がわかるのは足が確定したときです。同じ終値で約定させるのは、その瞬間に行動できたと仮定することです。
- 足が確定する前に、その足の高値や安値を使う。
- 修正されたデータ。 データセットによっては後から訂正されるものがあり、当時トレーダーが見ていた数値とは異なります。
- 未来の値を使って計算した指標。 たとえば中心化移動平均や、履歴全体での正規化などです。
Backte.st での対策
エンジンは 確定した足 のシグナルだけを読み、注文は 次の始値 で約定させます。月曜の終値で発生したルールは火曜の始値で約定します。これは現実的に得られる最初の価格です。
これは一部のバックテストツールより厳格なので、その分結果が悪く見えることがあります。それは意図的なものです。
遅延エントリーチェック
正直な約定でも、戦略が正確なタイミングに大きく依存していることがあります。遅延エントリー チェックは、すべての注文を 1本遅らせて、シグナル後2本目の始値で約定させます。
- 結果がほとんど変わらないなら、その戦略は正確なタイミングに依存していません。
- 結果が崩れるなら、利益の大部分はシグナル直後の最初の1本から来ています。その優位性は脆く、現実の遅延、ギャップ、約定漏れで失われる可能性があります。
よく似た落とし穴:生存
先読みバイアスは、いつ それを知っていたかの問題です。近い親戚が、どの 市場がこの先も存在するかを知っていたという問題です。今日の勝者を選んで昨日のデータで戦略をテストすることは 生存者バイアス です。
チェックリスト
- ルールが使うデータはすべて、判断の時点で知ることができたか?
- 約定はシグナルの後、実際に得られる価格で行われているか?
- 1本の遅れがあっても結果は生き残るか?
ラボ で好きな戦略を実行し、遅延エントリーのリターンと基本の結果を比べてください。