リスクと戦略・上級・読了時間:8分

ウォークフォワード検証:明日の情報を学習に混ぜない

磨き上げた過去のルールではなく、意思決定手順全体を評価する時系列に沿った調査過程を設計します。

ウォークフォワード検証:明日の情報を学習に混ぜない — 独自の教育用図解です。実際の市場価格や運用実績を示すものではありません。
独自の教育用図解です。実際の市場価格や運用実績を示すものではありません。

最終的な式ではなくプロセスを検証する

ウォークフォワード研究は、過去のある時点で利用可能な情報でモデルを当てはめ、得られた判断を固定し、その後の区間で評価することを繰り返します。その後、時点を先へ進めます。これは未来を知らずに運用しなければならない調査プロセスを模倣します。戦略を黒字化したり、すべての偏りをなくしたりするものではありません。

各段階で何を変更してよいかを書き出します。シグナルのパラメーター、資産選択、ボラティリティ推定、費用の前提は、すべて手順の一部です。テスト期間を見た後で手動調整したら手順は変わり、その期間はもはや純粋な評価ではありません。裁量的な改訂をつなぎ合わせたチャートより、再現できる日程のほうが有益です。

ローリングか拡大型かを意図して選ぶ

拡大型の窓は、時間が進むにつれて過去の観測すべてを保持します。推定を安定させる一方、古くなった市場環境のデータも残します。ローリング窓は直近の固定期間を使い、適応しやすくなる一方、標本ノイズが増えます。どちらも万能ではなく、適切なトレードオフは、どの経済的関係が続くと期待するかに依存します。

結果を比べる前に、説明可能な理由で窓の長さを選びます。何十種類もの長さを試して最良を選ぶだけでは、最適化を上位階層に移したにすぎません。各テスト区間の観測数、異なる市場局面、実際の取引数を記録しましょう。暦上は長くても、独立した判断が少なければ、期間の長さが示唆するほどの証拠は得られない場合があります。

情報漏洩はデータ準備に潜む

時系列分割は必要ですが、それだけでは不十分です。全標本の平均で特徴量を標準化すると、未来の観測が過去の入力に影響します。生き残った銘柄だけを選ぶ、改訂後のマクロ統計を使う、開示前の資料を取り込むことも、別の後知恵です。変換は学習データで推定し、可能な限り各時点の利用可能性を保ちましょう。

ラベルも重要です。学習用事例が次の5日間のリターンを予測するなら、その結果の期間がテスト期間の始まりと重なる場合があります。ラベル期間が境界をまたぐ観測は除くか、離してください。ソフトウェアで学習とテストの索引の間に空白を入れられますが、意味のある間隔を選ぶには、そのデータのラベル期間、公表の遅れ、依存関係を理解する必要があります。

特徴量の日付と、予測対象が本当に判明する時刻を区別します。月曜日のシグナルが月曜日の既知情報だけを使っていても、その後五日間のリターンは火曜日にはまだ確定していません。火曜日の再学習に完成した五日リターンを使うことはできません。学習対象に含める規則は、行の開始日だけでなく、ラベルの全期間と利用可能時刻を確認する必要があります。

調整は学習内で行い、未使用の評価を保つ

パラメーター選択は、必要なら内側に時系列検証を設け、学習領域内の情報だけで行うべきです。外側のテスト区間で、選んだ手順を評価します。この入れ子構造は、モデルを選ぶことと、その選択の成績を測ることを区別します。計算費用は増えますが、安価でも汚染された結果を得るより望ましいものです。

逐次テストのリターンは、ポジションがない期間も含め、実際の時間順に集計します。手数料と執行前提は一貫して適用します。経済的な意味を検討せずに、見栄えのよい分割区間の比率を平均してはいけません。短く平穏な区間が、長く変動の激しい区間と同等に重要に見えてしまいます。全体の結果と併せて、区間間のばらつきも示しましょう。

弱い結果も使える証拠

費用を入れると悪化する、1区間に依存する、わずかな時刻調整で激変するウォークフォワード成績には、見栄えの修正ではなく調査が必要です。データや実装の欠陥と、単に根拠が足りない戦略を区別します。本当のバグを直すなら再実行は正当化できますが、以前の結果を見た事実は調査履歴に残す必要があります。

追加評価が妥当なら、仕様を凍結し、本当に新しい模擬観測期間を設けて締めくくります。集めるデータと、何が前提を無効にするかを事前に定めます。目的は、魅力的な線が現れるまで最適化し続けることではなく、規律があり実行可能な手順が、失敗しうる検証に耐えるかを確かめることです。

検証期間の境界を越えて、ポジションと資金をつなぐ

モデルの再学習は自動決済ではありません。一~三月のテスト末に、旧ルールでは四月に退出する保有があれば、旧ルールを続けるのか、記録した新ルールへ移すのか、費用を払って閉じるのかを事前に決めます。各区間を無断で現金に戻すと、損失を消したり、資金を復活させたり、難しい移行だけを避けたりする可能性があります。

資金も連続して引き継ぎます。ある区間で10%利益、次で10%損失なら、資産倍率は1.10 × 0.90 = 0.99で、合計1%の損失です。算術平均ゼロでは口座を再現できません。資本と数量の定義をそろえた、実際の時系列順の収益系列を残します。テスト区間が暦上重なる場合、同じ一日の損益を二重に数えず、採用モデルか並行運用の資金配分を説明します。

特徴量選択、標準化、欠損補完、候補アルゴリズムの比較も、それぞれの学習期限内でやり直します。最終モデルだけを適切に再学習しても、全標本で一度作った変換は未来を漏らす場合があります。TimeSeriesSplitは時系列のインデックス分割を助けますが、金融ラベルがいつ確定するか、公表値がいつ改訂されるか、保有をどう移行するかは知りません。

区間ごとに、学習終点、利用可能な観測、選択パラメーター、最初に約定可能な時刻、初期保有、費用、最終保有を保存し、観測や注文を除外した理由も残します。実装の欠陥を直したら、全手順を一貫して再実行し、古い結果も保管します。すでに見たデータでの修正版を、完全に未観測の新実験と呼ぶことはできません。

簡単な確認問題

内容は身につきましたか?

未来の情報を漏洩させる操作はどれですか?

一般的な教育であり、売買の推奨ではありません。例は実際の市場を簡略化しています。商品を利用する前に、その契約内容、費用、規則を正確に確認してください。
次へ:ポートフォリオのリスク:配分比率が隠すもの →