598 / 736WFA

Walk-forward Analysis

時間を順に進める分析

Walk-forward Analysis は更新され続ける戦略を試します。既知のデータでルールを選び、次の期間で評価してから、時点を進めて繰り返します。

Walk-forward Analysis は選択手順を時系列で検証します。利用可能な過去からルールを選択・調整し、その選択には使っていない後続データで評価します。

ピーターには複数の取引ルールの候補があり、最近もっとも成績のよかったものを使いたいと考えています。Walk-forward Analysis はこの考えを順に再現します。既知の過去で選び、次の期間の結果を記録し、また選びます。QuantConnect はこの定期的な調整を説明しています。検証対象は固定のルールだけでなく選び方でもあるため、候補、評価基準、次の更新時点を先に決める必要があります。 [1]

ピーターが過去の利益を見て候補を選んだなら、その同じ利益で選択を独立に検証することはできません。QuantConnect は、そのデータがすでに開発用になったと説明しています。公平な問いは、選んだ後にどうなったかです。現在のテストで自分自身の勝者を選んではいけません。ただし期間が終了して結果が利用可能になれば、事前の手順に従って後の選択に使えます。以前に記録した判断が書き換わるわけではありません。 [2]

選択窓とは、その時点で使う過去の区間です。ローリング窓は長さを保ち、古いデータを順に外します。拡大型の窓は開始点を保ち、新しい観測を足します。scikit-learn の TimeSeriesSplit は標準では拡大型ですが、学習データ量を制限できます。長さと更新頻度はテスト前に決めてください。文書では指標の比較に等間隔の観測を求めています。不規則な記録では実際の暦上の長さも確認が必要です。 [3]

最後の学習観測に対応する結果が、次のテスト期間中になって初めて確定するとします。選択時点ではまだ知り得ません。表を時刻順に並べるだけでは直りません。TimeSeriesSplit の gap パラメータは学習区間の末尾の観測を除外できます。必要な間隔は入力の入手時点と結果の確定時点から決めるもので、きれいな曲線から選ぶものではありません。適切な間隔でも隣接期間の独立性や全偏りの除去は保証されません。 [3]

情報漏れは取引ルールにあるとは限りません。尺度をそろえる平均値が、未来のテストを含む全データから計算されているかもしれません。scikit-learn は欠損値の補完や入力特徴の選択でも同じ問題を指摘しています。変換の設定は学習部分だけから求め、それをテストに適用します。各段階で分離を繰り返してください。加工済みの表を後から分割しても漏れは取り消せません。データの版と実際の利用可能時点も残します。 [4]

各期間のテスト後は、結果を正しくまとめる必要があります。QuantConnect はスプレッドや Slippage を含められる約定価格・数量モデルを説明しています。そのうえで、開発時の利益をテスト口座へ加えず、重なるテストを説明なく何度も数えない会計が必要です。候補を切り替える際は未決済ポジション、資金、切り替えコストの扱いを明示します。下の例は各期間末にポジションを残さず簡略化しています。 [5]

ピーターはよい結果が出るまで窓の長さ、目的、候補を繰り返し変えるかもしれません。その時点でテスト系列も開発に使っています。Bailey らは同じデータを繰り返し探索したときの偶然の成功を研究しています。試した手順をすべて記録し、未使用の過去で行う追加検証があれば区別してください。時間を前に進めるだけでは統計的保証にも、過去に適応しすぎる過学習の確率推定にもなりません。 [6]

窓の境界、候補、選択時の評価値、実際の選択、次の期間のコスト控除後の結果を保存します。合計だけでなく損失、観測数、同条件の比較も示します。米国 NFA は、仮想的な成績では実損失に伴う流動性、スリッページ、行動上の問題をすべて捉えられないと指摘します。その広告規則は特定の会員に適用されます。小さな損失例が手法全体を否定するわけではなく、プラスの合計も将来の優位性を証明しません。 [7]

例例 · 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文書
改訂日: 一次資料を優先 · 投資助言ではありません