601 / 736LOOK

Look-ahead Bias

将来情報の使用によるバイアス

Look-ahead Bias は、過去のデータを使うテストが、判断の際に未来を見てしまう誤りです。例えば、夜になって初めて分かる価格を根拠に朝に買います。結果は魅力的でも、その時点の情報ではできない判断です。

Look-ahead Bias とは、後で入手できる情報を、それより前の判断、モデルの学習、ルールの選択に使ってしまうことです。重要なのは表に付いた日付ではなく、実際に情報を知り得た時点です。すでに下した判断の結果を後から測ること自体は誤りではありません。

ペトルは、自分のルールが過去にどんな取引をしたかをコンピューターで試します。表にはすでに全期間の履歴があるため、当時は知り得なかった情報までプログラムが読んでしまうことがあります。QuantConnect は Look-ahead Bias をこのように説明しています。各入力について、判断した時点で利用可能だったかを確認しましょう。日付だけでは足りない場合があります。朝に起きた出来事が後で報じられ、さらに遅れて取引者に届くこともあります。テストには、単なる日付順の並べ替えではなく、この順序を守る必要があります。 [2]

ローソク足は、一定期間の始値、終値、高値、安値、出来高をまとめたものです。期間が終わるまでは最終値が確定しません。そのため、同じ足の最終的な高値を根拠に、期間の始まりで買うことはできません。QuantConnect のエンジン LEAN は、完了したデータを終了時刻の EndTime に従って渡します。短い期間と長い期間を組み合わせる場合、利用可能な時点を系列ごとに確かめます。行を一つずらす方法が有効なのは、時間帯や遅延も含め、実際の利用可能時点に一致する場合だけです。 [1]

ペトルがダウンロードした経済統計には過去の月の日付が付いています。しかし、数値の一部は後から改訂されています。現在の訂正値を過去の判断に使えば、当時なかった知識を加えることになります。そこで St. Louis Fed は、現在から過去を見る FRED と、当時の版を取得できる ALFRED を区別しています。必要なのは、その時点で公表されていた版です。統計の対象月だけでは足りません。日付単位の履歴版があっても、その日の何時から使えたかまでは証明できません。 [3]

ペトルは古いデータを学習用、新しいデータをテスト用に分けました。ところが、入力を変換するために表全体の平均を計算すると、未来の情報が別の経路から入り込みます。機械学習ライブラリー scikit-learn の文書は、そのため変換方法を学習用部分だけで学び、それをテスト用部分に適用するよう求めています。欠損値の補完や入力の選択も同じように確認します。学習に使う取引結果にも注意が必要です。始まったばかりの取引の最終結果はまだ分かりません。後で評価するのはよくても、結果を過去の学習に戻してはいけません。 [4]

過去のローソク足には高値と安値が残りますが、それだけで実際の全約定の順序を再現することはできません。TradingView は、足の内部での値動きについてシミュレーターが置く仮定を説明しています。ペトルは、シグナル発生、注文送信、実行可能な約定時点を区別する必要があります。後から判明した高値をシミュレーションで見つけられても、その価格で売ることが当時使えるルールになるわけではありません。未来情報の漏入と、有利すぎる約定仮定は別の誤りです。細かいデータは助けになりますが、実際の約定を保証しません。 [5]

Freqtrade Lookahead Analysis はテストを繰り返し、指標やシグナルの変化を調べます。未来の行を参照する計算などを発見できる場合があります。しかし、試験中に一度も実行されなかった判断の分岐までは検査できません。そのため結果とともに、検査範囲も知る必要があります。文書は、単一市場と複数市場で戦略の動作が異なる場合などの誤検出も注意点に挙げています。異常なしは全面的な保証ではなく、検出された差には説明が必要です。データの出所をたどる作業は欠かせません。 [6]

ペトルが未来の入力を取り除くと、見事だった結果が悪化しました。以前の報告を、修正後の手順の結果として提示し続けることはできません。しかし修正だけで全問題が解決するわけでもありません。TradingView は Look-ahead Bias と Overfitting を区別します。過剰適合とは、開発に使ったデータ特有の性質にルールが合わせすぎた状態で、未来情報がなくても起きます。反対に、ごく単純なルールにも時点の誤りは入り得ます。過去とその後の成績の差だけでは、どちらの問題か、市場の変化かを特定できません。 [5]

役立つ記録は、当時のペトルの知識を再現できるものです。データの版、ルール、口座の状態、利用可能な入力、送信した注文を残し、約定の仮定と費用も加えます。実際のお金を使わない練習取引の Paper Trading で逐次記録を取ることはできますが、シミュレーションは現実の取引とは異なります。米国の National Futures Association(NFA)は、仮想的な成績には流動性、想定価格と約定価格のずれ、損失の圧力下での判断に関する限界があると指摘しています。その広告規則の適用対象は所定の会員です。時点の誤りをなくすことで得られるのは、より正直なテストであり、将来の利益の約束ではありません。 [7]

例例 · LOOK

どの期間が上がるかをテストが先に知っていたら

この架空の例で、ペトルには連続した四つの期間 A、B、C、D があります。始値は [100, 100, 100, 100] USD/BTC、終値は [110, 90, 120, 80] USD/BTC です。A の直前の期間は始値も終値も 100 USD/BTC でした。各方式は 1000 USD から始まり、保有ポジション、負債、外部からの資金移動はありません。エントリー時は一定量の 1 BTC をモデルの始値で買い、事前に決めたルールに従って同じ期間の終値で売ります。実行した売買の片道ごとに 1 USD がかかり、エントリーしなければ費用はありません。他の費用や約定価格のずれは省略します。誤った方式 X は、始まったばかりの期間の未来の終値をすでに読み、上昇する場合だけ買います。エントリーは [1, 0, 1, 0]、純損益は [8, 0, 18, 0] USD、合計 26 USD、最終現金は 1026 USD です。方式 Y は、すでに知ることのできる直前の完了期間の上昇を使います。エントリーは [0, 1, 0, 1]、純損益は [0, -12, 0, -22] USD、合計 -34 USD、最終現金は 966 USD です。各期間の終了後はどちらも保有量がゼロで、グラフは期間ごとの純損益を比較します。X の利益は未来の知識によるため、当時利用可能な取引上の優位性を示しません。Y の損失も、時点を正しく扱えば必ず損をするという意味ではありません。価格は架空で約定も簡略化しており、Bitcoin の過去の実績や現実の約定を保証するものではありません。

理解を深めるには、この項目とあわせて次もお読みください Backtesting, Overfitting, Walk-forward Analysis, Survivorship Bias, Paper Trading. 次の項目からも参照されています Walk-forward Analysis, Overfitting, Survivorship Bias, On-chain Analysis.

01指標を一行ずらすだけで十分ですか?

特定の誤りは直る場合がありますが、万能ではありません。公表が遅れたデータ、後で改訂されたデータ、表全体の準備にすでに使われたデータもあります。各入力が判断時点で利用可能だったかが重要です。

02評価には後から分かる結果を使ってよいですか?

はい。以前の予測を評価するには、その後の結果が必要です。誤りになるのは、当時まだ分からなかった結果を過去に戻し、より早い判断、学習、ルール選択に影響させた場合です。

DOC · 001QuantConnect — Time Modeling: Timeslices文書 DOC · 002QuantConnect — Custom Securities: Avoid Look-Ahead Bias文書 DOC · 003Federal Reserve Bank of St. Louis — FRED API Real-Time Periods文書 DOC · 004scikit-learn — Common Pitfalls: Data Leakage文書 DOC · 005TradingView — Strategies: Broker Emulator and Lookahead Bias文書 DOC · 006Freqtrade — Lookahead Analysis文書 DOC · 007NFA — Use of Promotional Material Containing Hypothetical Performance Results文書
改訂日: 一次資料を優先 · 投資助言ではありません