598 / 691WFA

Walk-forward Analysis

時間を順に進める分析

Walk-forward Analysis は、利用可能な過去の情報でルールを選び、次の区間でテストします。あらかじめ定めた手順に従い、時間を進めながら繰り返します。評価するのは選択方法全体であり、後から見つけた勝者ではありません。区間を正しく分けても、将来のリターンは保証されません。

Walk-forward Analysis は、以前のデータでルールを選択または設定し、それに続くテスト期間へ適用する手順を、時系列に沿って評価する方法です。選択用とテスト用の役割を時間とともに移動させますが、現在の判断が次の結果を知っていてはいけません。

Walk-forward Analysis は過去のシミュレーションを時間順に進め、そこまでのデータでルールを選択または設定した後、次の区間での適用結果を評価します。QuantConnect は、直近までの過去の窓を使う定期的な最適化を説明しています。編集上の区別として、評価するのは一つの固定されたパラメータ集合だけでなく、事前に記述した更新手順です。次に選択する時点、その目的、候補集合もルールの一部です。最近のデータへの当てはまりがよいだけでは、将来の結果もよくなるとは確認できません。 [QuantConnect — Walk Forward Optimization]

QuantConnect は、最良のパラメータを探すために使った期間が開発用データの一部になることを指摘しています。その期間に、後から選んだ勝者を適用しても、当時の判断を正当に検証したことにはなりません。そのため独自の手順では、次のテスト区間が始まる前に選択を確定します。その区間のデータが現在の勝者に影響してはいけません。区間が終了し、その情報が実際に利用可能になれば、あらかじめ定めた手順に従って後の選択に使うことはできます。ただし、それによって以前に記録したテスト時の判断は変わりません。 [QuantConnect — Optimization Parameters]

TimeSeriesSplit は、時間順に並んだ学習用とテスト用のインデックスを作ります。標準では過去の学習集合を順次拡大し、その大きさを制限することもできます。独自の区別として、移動窓は選んだ過去の長さを保ち、拡大窓は開始点を固定します。窓の長さと更新頻度は設計の一部であり、結果を見てから自由に変えるものではありません。ドキュメントは、区間間で指標を比較可能にするため等間隔の標本を求めています。不規則なデータでは、実際の暦上の範囲に注意する必要があります。 [scikit-learn — TimeSeriesSplit]

TimeSeriesSplit のパラメータ gap は、テスト直前の学習集合の末尾から標本を除外します。独自の方法上の要件は、入力が利用可能になる時点と、予測対象の結果が確定する時点から、必要な間隔を導くことです。学習観測の結果にテスト期間の価格を使っている場合、行を並べるだけでは情報漏洩はなくなりません。そのため、見栄えのよい曲線だけを基準に間隔の長さを選ぶべきではありません。適切な間隔でも、隣接期間の独立性を証明したり、あらゆる選択バイアスを取り除いたりすることはできません。 [scikit-learn — TimeSeriesSplit]

scikit-learn のドキュメントは、正規化、欠損値の補完、特徴量選択が、テストからモデルへ情報を持ち込む可能性を指摘しています。こうした変換のパラメータは学習部分だけで学び、その後テスト部分に適用すべきです。独自の確認では、窓を移すたびにこの分離を繰り返します。先にデータ全体から平均を計算してしまった場合、後から完成した表を分割しても修正にはなりません。データの版と、実際に利用可能になった時点も保存する必要があります。 [scikit-learn — Common Pitfalls: Data Leakage]

QuantConnect は、約定価格と数量を決め、スプレッドと Slippage を含めることもできるモデルを区別しています。テスト区間をつなぐための独自の要件は、資金、未決済ポジション、ルール変更の費用を一貫して扱うことです。学習期間の利益を後続テストの結果に加えてはいけません。また、重複するテスト期間を説明なしに複数回計上してはいけません。ポジションを持ち越す場合は、設定間の移行を記述する必要があります。一方、以下のモデルでは各期間をポジションなしで終えます。 [QuantConnect — Trade Fills: Key Concepts]

Bailey らは、同じデータを繰り返し探索すると、誤った発見のリスクが高まることを説明しています。Walk-forward Analysis に対する独自の帰結は、得られたテスト系列に基づいて窓の長さ、目的、候補を変えて全体を再実行すれば、その系列は既に開発へ影響を与えているということです。独立したものと呼び直すだけでは足りません。報告では試したすべての手順を示し、まだ使っていない追加の検証があれば分けるべきです。時間を進めること自体は、過剰適合の確率の推定でも、自動的な統計上の保証でもありません。 [Bailey et al. — The Probability of Backtest Overfitting]

NFA は、仮想の結果が実取引も、流動性、Slippage、現実に損失を被った際の行動の影響全体も捉えないことを強調しています。そのため独自の Walk-forward Analysis の報告では、窓の境界、候補、選択スコア、選んだ設定、費用を含む後続区間の結果を保存します。合計にはリスク、観測数、同じ条件での比較という文脈が必要です。小さな例で結果が負でも手法が一般的に機能しない証明にはならず、合計が正でも将来の取引上の優位性の証明にはなりません。 [NFA — Use of Promotional Material Containing Hypothetical Performance Results]

例例 · WFA

過去から選び、評価するのは次の期間

独自の架空のモデルでは、1 から 6 と記した同じ長さの六つの期間と、あらかじめ定めた二つの候補 A、B を使います。同じ固定サイズでの純結果は A が [4, -1, 2, -3, 5, -2] USD、B が [1, 2, 1, 1, -2, 4] USD です。各結果は該当期間が終了して初めて利用可能になり、モデル上のすべての費用を含み、未決済ポジションなしで終わります。追加の移行費用、負債、資金流入出はありません。事前に定めた手順では、毎回、直近の終了済み三期間を合計し、大きい合計を選び、その勝者を次の期間だけに適用します。同点なら A を選びます。選択用の窓は [1, 2, 3]、[2, 3, 4]、[3, 4, 5] で、後続テストは [4, 5, 6] です。選択用の合計は A が [5, -2, 4] USD、B が [4, 4, 0] USD なので、順に A、B、A を選びます。共通のテスト結果に入るのは [-3, -2, -2] USD だけで、合計は -7 USD です。期間 4 の前のテスト開始時の現金は 1000 USD、最終現金は 993 USD です。サイズは現金に応じて変えません。学習期間の結果を口座に加えず、各テスト区間は一度だけ計上します。図は選択窓と後続テストの移動を示し、実際の市場の履歴や将来の成功確率ではありません。

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

01以前のテスト期間を後から学習に使うことはできますか?

はい。その期間が既に終了し、情報が利用可能で、事前に定めた手順が認めている場合です。ただし、その期間について記録した選択や結果を遡って変えてはいけません。

02Walk-forward Analysis は過剰適合をなくしますか?

自動的にはなくしません。同じ結果に基づいて窓の長さ、候補、手順全体を繰り返し選ぶことは依然として可能です。試行履歴を明示し、情報漏洩に注意し、開発と追加の検証の区別を保つ必要があります。

DOC · 001QuantConnect — Walk Forward Optimization文書 ↗DOC · 002QuantConnect — Optimization Parameters文書 ↗DOC · 003scikit-learn — TimeSeriesSplit文書 ↗DOC · 004scikit-learn — Common Pitfalls: Data Leakage文書 ↗DOC · 005QuantConnect — Trade Fills: Key Concepts文書 ↗DOC · 006Bailey et al. — The Probability of Backtest Overfitting一次資料 ↗DOC · 007NFA — Use of Promotional Material Containing Hypothetical Performance Results文書 ↗
一次資料を優先 · 投資助言ではありません