ウォークフォワード分析でカーブフィットを防ぐ - EA最適化の正しい手順
目次
- カーブフィット(過剰最適化)とは
- ウォークフォワード分析の仕組み
- ウォークフォワード分析の実施方法(MT5)
- 方法①:手動でインサンプル / アウトオブサンプルを分割
- 方法②:サードパーティツールを使用
- 最適化する際の注意点
- 注意①:最適化する変数は1〜2個に絞る
- 注意②:最適化結果のTop1を使わない
- 注意③:最適化期間を長くとる
- ウォークフォワード分析の結果の見方
- 良いEAの特徴
- 注意が必要なEAの特徴
- 過剰最適化しにくいパラメーター設計のコツ
- コツ①:パラメーターの感度を確認する
- コツ②:オーバーフィットしにくいシンプルなロジックを使う
- まとめ
- FAQ
- Q: MT5の純正機能でウォークフォワード分析はできますか?
- Q: WFEが50%でも使えますか?
- Q: ウォークフォワード分析なしでEAを使うのは危険ですか?
ウォークフォワード分析でカーブフィットを防ぐ - EA最適化の正しい手順
MT5のStrategy Testerでパラメーターを最適化すると、過去データに対して最も良い結果を示すパラメーターが見つかります。しかし、その「最良パラメーター」は**過去データに特化しすぎている(カーブフィット)**可能性があります。ウォークフォワード分析は、この過剰最適化を防ぐための手法です。
カーブフィット(過剰最適化)とは
バックテスト最適化の問題点:
過去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は現時点でウォークフォワード分析に対応していません。以下の方法で代替できます。
方法①:手動でインサンプル / アウトオブサンプルを分割
手順:
- バックテスト期間を2015〜2020年に設定し最適化
- 最適化結果から上位パラメーターを3〜5個選ぶ
- 選んだパラメーターを2021〜2025年(アウトオブサンプル)でバックテスト
- 最適化期間とアウトオブサンプルのPFを比較
評価基準(ウォークフォワード効率):
WFE = アウトオブサンプルPF ÷ インサンプルPF × 100%
WFE 60%以上 → 合格(過剰最適化なし)
WFE 40〜60% → 要観察
WFE 40%未満 → カーブフィット疑い(使用禁止)
方法②:サードパーティツールを使用
- Strategy Quant X:ウォークフォワード分析の自動化が可能
- MT5のウォークフォワード最適化(experimental):一部バージョンで実装済み
最適化する際の注意点
注意①:最適化する変数は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の特徴
- WFE(ウォークフォワード効率)が60%以上
- アウトオブサンプルのPFがインサンプルの50〜90%の範囲内
- 各検証期間でPFがプラス(全期間でプラス)
注意が必要なEAの特徴
- WFEが40%未満
- 特定の検証期間だけ成績が良い(他の期間はマイナス)
- インサンプルの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の純正機能でウォークフォワード分析はできますか?
MT5のStrategy Testerは基本的にはウォークフォワード分析に対応していませんが、最新バージョンでは実験的な機能として追加されている場合があります。手動で期間を分割してバックテストを複数回実施する方法が確実です。
Q: WFEが50%でも使えますか?
WFE 50%はボーダーラインです。アウトオブサンプルのPFが1.2以上であれば実運用は可能ですが、フォワードテストで6ヶ月以上の実績を積んでから判断することを推奨します。
Q: ウォークフォワード分析なしでEAを使うのは危険ですか?
危険とは言い切れませんが、カーブフィットのリスクが高まります。少なくとも「最適化期間の一部をアウトオブサンプルとして残す」という方法だけでも実施してください。
関連記事
📧 5日間メール講座(無料)
FX自動売買の本質、バックテストの正しい見方、ブローカー選びのコツを毎日1通お届けします。
※ プライバシーは厳守。配信解除はいつでも可能です。