ウォークフォワード分析でカーブフィットを防ぐ
目次
ウォークフォワード分析でカーブフィットを防ぐ - EA最適化の正しい手順
MT5のStrategy Testerでパラメーターを最適化すると、過去データに対して最も良い結果を示すパラメーターが見つかります。
しかし、その「最良パラメーター」は**過去データに特化しすぎている(カーブフィット)**可能性があります。ウォークフォワード分析は、この過剰最適化を防ぐための手法です。
この記事の要点
- データを最適化期間(インサンプル)と検証期間(アウトオブサンプル)に70:30で分け、時系列に沿って繰り返す
- WFE(アウトオブサンプルPF ÷ インサンプルPF × 100%)が60%以上なら合格ライン
- 最適化する変数は1〜2個に絞り、Top1ではなく上位クラスターの中央値を採用する
ウォークフォワード分析の手順(全体像)
| 手順 | やること | 目安 |
|---|---|---|
| 1 | 最適化する変数を1〜2個に絞る | 例:EMA期間のみ |
| 2 | インサンプル期間で最適化する | 5〜7年 |
| 3 | 上位パラメーターを選ぶ | Top1ではなく上位20%のクラスターの中央値 |
| 4 | アウトオブサンプル期間でバックテストする | 2〜3年(比率70:30〜80:20) |
| 5 | WFEを計算して判定する | 60%以上で合格・40%未満はカーブフィット疑い |
| 6 | 期間をずらして2〜5を繰り返す | 各検証期間でPFがプラスか |
カーブフィット(過剰最適化)とは
バックテスト最適化の問題点:
過去10年のデータに最適なパラメーター → 未来には通用しない
例:EMA期間を10〜50の範囲で最適化したとき
| EMA期間 | バックテストPF | フォワードテストPF |
|---|---|---|
| 21(最適値) | 2.3 | 0.9 ← 実際はこうなる |
| 30(次点) | 1.8 | 1.3 |
| 平均的な値 | 1.5 | 1.4 |
最適化された値(EMA=21)はバックテストでは最高ですが、未来では期待外れになることがあります。これがカーブフィットです。
ウォークフォワード分析の仕組み
ウォークフォワード分析はデータを「最適化期間(インサンプル)」と「検証期間(アウトオブサンプル)」に分割します。
これを時系列に沿って繰り返すことで過剰最適化を検出します。
【データの分割例(10年分)】
├─ 最適化期間 ─┤─ 検証期間 ─┤
2015〜2018年 2019年 → パラメーターAを導出し2019年で検証
↓
2016〜2019年 2020年 → パラメーターBを導出し2020年で検証
↓
2017〜2020年 2021年 → パラメーターCを導出し2021年で検証
↓
(以降繰り返し)
各検証期間の結果を集計することで、「このEAのパラメーターは相場環境が変わっても安定しているか」を評価できます。
ウォークフォワード分析の実施方法(MT5)
MT5のStrategy Testerには「フォワード」設定(期間の1/2・1/3・1/4、または開始日を指定)があり、最適化時に指定した期間をアウトオブサンプルとして1回フォワード検証できます(「最適化結果」タブと「フォワード結果」タブで比較)。ただし、窓をずらしながら何度も繰り返すローリング型のウォークフォワード分析は標準機能にないため、以下の方法で代替します。
方法①:手動でインサンプル / アウトオブサンプルを分割
手順:
- バックテスト期間を2015〜2020年に設定し最適化
- 最適化結果から上位パラメーターを3〜5個選ぶ
- 選んだパラメーターを2021〜2025年(アウトオブサンプル)でバックテスト
- 最適化期間とアウトオブサンプルのPFを比較
評価基準(ウォークフォワード効率):
WFE = アウトオブサンプルPF ÷ インサンプルPF × 100%
WFE 60%以上 → 合格(過剰最適化なし)
WFE 40〜60% → 要観察
WFE 40%未満 → カーブフィット疑い(使用禁止)
方法②:サードパーティツールを使用
| ツール | できること |
|---|---|
| Strategy Quant X | ウォークフォワード分析の自動化が可能 |
| MT5標準の「フォワード」設定 | 最適化ごとに1回だけアウトオブサンプル検証(ローリング型は手動で繰り返す) |
最適化する際の注意点
注意①:最適化する変数は1〜2個に絞る
同時に多くのパラメーターを最適化するほど、カーブフィットのリスクが高まります。
✅ 良い例:EMA期間のみを最適化(10〜50、ステップ5)
❌ 悪い例:EMA期間 × ATR倍率 × RSI期間を同時最適化
最適化変数を増やすと「組み合わせ爆発」により、偶然最良の組み合わせを見つける確率が上がるだけです。
注意②:最適化結果のTop1を使わない
最適化結果の一覧で最も高いPFを示したパラメーターはカーブフィットしている可能性が最も高いパラメーターです。
代わりに以下の方法を使います:
推奨アプローチ:
1. 上位20%のパラメーターを抽出
2. 相互に近いパラメーター群(クラスター)を探す
3. クラスターの中央値付近のパラメーターを採用
例:EMA期間の最適化結果がPFの高い順に 21, 23, 19, 35, 22, 20...と並んでいる場合、20〜23のクラスターが存在します。このクラスターの中央値(21〜22)を採用します。
注意③:最適化期間を長くとる
推奨設定:
- 最適化(インサンプル)期間:5〜7年
- 検証(アウトオブサンプル)期間:2〜3年
- 比率(インサンプル:アウトオブサンプル):70:30〜80:20
最適化期間が短いほど過剰最適化のリスクが高くなります。
ウォークフォワード分析の結果の見方
| 観点 | 良いEAの特徴 | 注意が必要なEAの特徴 |
|---|---|---|
| WFE(ウォークフォワード効率) | 60%以上 | 40%未満 |
| 検証期間ごとの成績 | 各検証期間でPFがプラス(全期間でプラス) | 特定の検証期間だけ成績が良い(他の期間はマイナス) |
| PFの水準 | アウトオブサンプルのPFがインサンプルの50〜90%の範囲内 | インサンプルのPFが3.0以上(過剰最適化の典型) |
過剰最適化しにくいパラメーター設計のコツ
コツ①:パラメーターの感度を確認する
最適値の前後(±10〜20%)のパラメーターでもPFが安定しているか確認します。
EMA=21が最適値の場合:
EMA=18: PF 1.25
EMA=19: PF 1.31
EMA=20: PF 1.34
EMA=21: PF 1.38 ← 最適値
EMA=22: PF 1.33
EMA=23: PF 1.29
EMA=24: PF 1.24
→ 近辺のパラメーターでも安定してPFがプラス = 堅牢な戦略
前後でPFが急激に変わる場合は過剰最適化の可能性があります。
コツ②:オーバーフィットしにくいシンプルなロジックを使う
パラメーターが少なく、シンプルなロジックのEAほどカーブフィットしにくいです。EMAクロス、ATRベースのSL/TP設定などのシンプルな要素を組み合わせてください。
まとめ
ウォークフォワード分析のまとめ:
- インサンプル(最適化):アウトオブサンプル(検証)= 70:30で分割
- WFE(ウォークフォワード効率)= アウトオブサンプルPF ÷ インサンプルPF × 100%
- WFE 60%以上が合格ライン
- 最適化変数は1〜2個に絞る
- 最適値ではなくクラスターの中央値を採用する
ウォークフォワード分析を行うことで、フォワードテストでも安定して動くEAを特定できます。バックテストの成績が良すぎるEAほど、この検証が重要です。
FAQ
Q: MT5の純正機能でウォークフォワード分析はできますか?
一部は可能です。Strategy Testerの「フォワード」設定(期間の1/2・1/3・1/4、または開始日を指定)を使えば、最適化と同時に後半の期間をアウトオブサンプルとして1回検証でき、「最適化結果」タブと「フォワード結果」タブで比較できます。ただし、窓をずらしながら繰り返すローリング型のウォークフォワード分析は標準機能にないため、手動で期間を分割して複数回実施するか、外部ツールを使います。
Q: WFEが50%でも使えますか?
WFE 50%はボーダーラインです。アウトオブサンプルのPFが1.2以上であれば実運用は可能ですが、フォワードテストで6ヶ月以上の実績を積んでから判断することを推奨します。
Q: ウォークフォワード分析なしでEAを使うのは危険ですか?
危険とは言い切れませんが、カーブフィットのリスクが高まります。少なくとも「最適化期間の一部をアウトオブサンプルとして残す」という方法だけでも実施してください。
関連ページ
関連記事
📧 値上げ前のお知らせ + 5日間メール講座(無料)
全EAは現在ローンチ価格で、販売数に応じて段階的に値上げされます。値上げ前の事前通知に加えて、FX自動売買の本質、バックテストの正しい見方、ブローカー選びのコツを毎日1通お届けします。
※ プライバシーは厳守。配信解除はいつでも可能です。