EAの過剰最適化とは?カーブフィッティングをOOS・Forward・パラメータ感度で確認する方法
EA(Expert Advisor)のバックテストや最適化では、入力Parameterを変更することで、過去データ上の損益、Profit Factor、Drawdown、取引回数などを比較できます。
しかし、過去データで最も良い結果になった設定が、そのまま未知の期間や実時間でも安定するとは限りません。
ParameterやFilterを過去データへ細かく合わせ込みすぎると、そのHistoryでは非常に良好でも、別期間では結果が大きく崩れることがあります。この問題は、過剰最適化、Overfitting、Curve Fitting、Parameter Fittingなどの言葉で説明されます。
この記事では、MT5 EAの過剰最適化を確認するために、In-Sample、Out-of-Sample、MT5 Forward Test、Parameter Sensitivity、Walk Forward、Robustnessという考え方を順番に整理します。
掲載内容は「勝てるParameter」を提示するものではありません。EAのバックテスト結果や最適化結果を、どのような条件で検証したのかを確認するための技術情報です。
- Optimizationの最高利益だけでParameterを選ばない
- In-SampleとOut-of-Sampleを分ける
- MT5 Forward Testの結果を別期間確認として使う
- 最良Parameterの周辺も確認する
- 一点だけ突出した結果と安定領域を分けて見る
- 1回のForwardだけでRobustnessを断定しない
- Market Regime変化とOverfittingを混同しない
- EAの過剰最適化とは
- 最適化そのものが悪いわけではない
- Curve Fitting・Overfitting・Parameter Fittingの違い
- 過剰最適化が起きやすくなる条件
- 「最高利益の1設定」を選ぶだけでは不十分
- Parameter Sensitivityとは
- 近傍Parameterで安定性を確認する
- MT5 Optimization結果の2D・3Dを見る意味
- In-SampleとOut-of-Sampleを分ける
- OOSを何度も見て調整するとOOSではなくなる
- MT5 Forward Testとの関係
- Forwardが悪化した時に確認すること
- 1回のForwardだけでRobustnessは決まらない
- Walk Forward Analysisとは
- Rolling WindowとAnchored Windowの考え方
- ParameterがWindowごとに大きく変わる場合
- Market Regime変化とOverfittingを混同しない
- BacktestとLive Execution差をOverfittingと混同しない
- ナンピン・Grid EAでの過剰最適化確認
- Scalping EAでの過剰最適化確認
- GOLD / XAUUSDでの過剰最適化確認
- Robustness確認チェック表
- よくある質問
- 関連ページ
- 参考にした公式情報
- まとめ
- お問い合わせはEAFC公式LINEへ
EAの過剰最適化とは
EAの過剰最適化とは、Parameterや条件を特定の過去データへ合わせ込みすぎた結果、その期間では良好でも、未知の期間や少し異なる条件では性能が大きく変化する状態を指します。
例えば、移動平均期間、RSI Threshold、SL、TP、Trading Hours、Spread Filterなど多数の条件を何度も変更すると、過去の値動きに偶然よく適合する組み合わせを見つけることができます。
しかし、「過去データで良かった」という事実だけでは、その条件が将来にも一般化するかは分かりません。
| 状態 | 意味 |
|---|---|
| Optimization結果が良い | 指定したHistoryとParameter条件で良好だった |
| 別期間でも近い特徴 | 特定期間だけへの依存が弱い可能性を確認できる |
| 近傍Parameterでも安定 | 一点の値だけに強く依存していないか確認できる |
| OOSで大幅悪化 | OverfittingやMarket Regime差などを確認する材料になる |
最適化そのものが悪いわけではない
Optimizationそのものが問題なのではありません。
MetaTrader 5のStrategy Testerでは、Input ParameterのStart、Step、Stopを指定して複数の組み合わせをテストできます。Parameter候補を比較するための有用な機能です。
問題になるのは、Optimizationを「過去データで最も良い数字を探す作業」だけにしてしまうことです。
| 使い方 | 確認目的 |
|---|---|
| Parameter候補を比較する | 条件変更が結果へどう影響するかを見る |
| 近傍値を比較する | 特定値への依存度を見る |
| 別期間で再確認する | History依存を確認する |
| 複数指標を見る | ProfitだけでなくDD・Trade Count等も確認する |
MT5 Strategy Testerの基本操作やOptimization設定は、MT5ストラテジーテスター・最適化完全ガイドで確認してください。
Curve Fitting・Overfitting・Parameter Fittingの違い
EA検証では、Curve Fitting、Overfitting、Parameter Fittingという表現が使われます。厳密な使用方法は文脈によって異なりますが、実務上は「既知の過去データへ条件を合わせ込みすぎていないか」という共通の問題を考えるために使われます。
| 用語 | この記事での扱い |
|---|---|
| Overfitting | 既知データへ適合しすぎ、未知データへの一般化が弱くなる状態 |
| Curve Fitting | 過去のEquity CurveやPrice Patternへ細かく条件を合わせる状態を表す言葉 |
| Parameter Fitting | 特定History区間へParameterが強く適合している状態 |
| Robustness | 期間・Parameter・条件が少し変わっても極端に崩れないかを見る考え方 |
重要なのは名称よりも、過去データで見つけたRuleやParameterが、まだ見ていない条件でも同じ特徴を保つかを確認することです。
過剰最適化が起きやすくなる条件
Parameterが多いほど必ず過剰最適化になるわけではありませんが、探索の自由度が増えるほど、偶然良い結果になる組み合わせを見つけやすくなります。
| 条件 | 確認したい問題 |
|---|---|
| 調整Parameterが多い | 組み合わせ数が増え、Historyへの適合余地が大きくなる |
| Stepが細かすぎる | 非常に狭い最良点を探しやすくなる |
| 検証期間が短い | 特定Market Regimeだけを見ている可能性がある |
| Trade Countが少ない | 少数の取引結果へ数値が強く影響される |
| 結果を見ながらFilterを追加 | 既知の負けを除外するRuleが増えやすい |
| 同じ期間で何度も再調整 | Validation Dataまで設計判断に取り込む可能性がある |
「負けた取引を除外できる条件」を後から次々追加すると、過去Historyの説明力は高くなっても、未知Dataへの再現性が高くなるとは限りません。
「最高利益の1設定」を選ぶだけでは不十分
Optimization結果をProfit順に並べ、一番上のParameter Setだけを選ぶ方法では、Parameter依存性を確認できません。
例えば最良値だけ非常に高く、その前後の値では結果が急激に悪化する場合、その一点へ結果が強く依存している可能性があります。
| 見るもの | 確認する理由 |
|---|---|
| Best Result | 最高点そのものを確認する |
| Neighboring Parameters | 周辺値でも近い特徴があるかを見る |
| Trade Count | 少数取引だけで最高値になっていないか |
| Drawdown | Profit増加とRisk増加を分ける |
| OOS Result | 未知期間でも特徴が残るかを見る |
Parameter Sensitivityとは
Parameter Sensitivityは、Parameterを少し変更した時に、EAの結果がどの程度変化するかを見る考え方です。
例えば、あるIndicator Periodが20の時だけ結果が突出し、19や21で急激に悪化する場合、そのParameterへのSensitivityが高い状態として確認できます。
| Parameter | 例としてのPF | 見方 |
|---|---|---|
| 19 | 1.42 | 周辺でも近い結果 |
| 20 | 1.45 | 最良値 |
| 21 | 1.41 | 周辺でも近い結果 |
上の数値は概念説明のための例であり、EAFCの合格基準ではありません。
次のように一点だけ突出する場合は、理由を詳しく確認します。
| Parameter | 例としてのPF | 見方 |
|---|---|---|
| 19 | 0.92 | 大きく低下 |
| 20 | 2.80 | 一点だけ突出 |
| 21 | 0.88 | 大きく低下 |
「Parameter=20だから優秀」と結論づけるのではなく、なぜ20だけ違うのか、StepやSample、取引回数、Market Regimeに依存していないかを確認します。
近傍Parameterで安定性を確認する
Robustnessを確認する時は、最高点だけではなく、その周囲に比較的安定した領域があるかを見ます。
Parameterを少し変更しただけでProfit、PF、DD、Trade Countが大きく変化する場合、設定値の精度へ強く依存している可能性があります。
一方、ある範囲で結果が緩やかに変化する場合は、一点だけの偶然よりも広い条件で同じ特徴が存在するかを確認しやすくなります。
MT5 Optimization結果の2D・3Dを見る意味
MetaTrader 5のStrategy Testerでは、Optimization結果を2D・3Dで可視化できます。
これを使うと、単純なResult一覧だけでなく、2つのParameterとOptimization Criterionの関係を視覚的に確認できます。
| 表示 | 確認目的 |
|---|---|
| Result List | 各Passの数値を確認する |
| 2D | Parameterと結果の関係を見る |
| 3D | 複数Parameterによる結果分布を見る |
| 安定領域 | 高評価値が一点ではなく周辺にも存在するかを見る |
可視化はRobustnessを自動判定するものではありませんが、「鋭い一点のPeakなのか」「比較的広いPlateauなのか」を確認する材料になります。
In-SampleとOut-of-Sampleを分ける
過剰最適化を確認する基本的な考え方が、In-Sample(IS)とOut-of-Sample(OOS)の分離です。
| 区分 | 役割 |
|---|---|
| In-Sample | RuleやParameter候補を検討するために使用したData |
| Out-of-Sample | RuleやParameter決定に使用していないData |
| 目的 | 既知Dataで決めた条件が未知Dataでも同じ特徴を持つか確認する |
ISで最高結果を探し、OOSでその候補を再確認することで、同じHistoryだけを何度も見続ける場合よりも、未知条件への再現性を確認しやすくなります。
OOSを何度も見て調整するとOOSではなくなる
OOSで結果を確認した後、その結果を見ながらEAのRuleやParameterを変更し、同じOOS期間で何度も再検証すると注意が必要です。
そのOOSの値動きを知ったうえで設計判断へ使っているため、実質的にはそのDataも開発判断へ取り込まれていきます。
| 流れ | 扱い |
|---|---|
| ISで調整 | 設計・Optimizationに利用 |
| 初回OOS確認 | 未知期間として確認 |
| OOS結果を見てRule変更 | OOS情報が設計判断へ入る |
| 同じOOSで再調整を反復 | 本当の未知Dataとして扱いにくくなる |
簡単に言えば、「答えを見た後に問題を作り直すと、その問題はもう初見テストではない」ということです。
MT5 Forward Testとの関係
MetaTrader 5には、Optimization期間とForward期間を自動的に分けるForward Testがあります。
Forwardには1/2、1/3、1/4、Customがあり、指定期間の後半部分がForward Testへ使われます。Optimizationは前半期間で行い、選択された上位Runを後半の非最適化期間で再テストします。
この機能は、特定History区間へのParameter fittingを確認するための重要な手段です。
MT5 Forwardと一般的なフォワード実績の違いは、EAフォワードテスト完全ガイドで詳しく整理しています。
Forwardが悪化した時に確認すること
ISでは良好だったのにForwardで悪化した場合、すぐにOverfittingと断定せず、結果のどの部分が変わったかを確認します。
| 確認項目 | 見る変化 |
|---|---|
| Trade Count | Entry頻度そのものが大きく変化していないか |
| Profit Factor | 利益と損失の関係がどう変わったか |
| Drawdown | 資産低下が大きくなっていないか |
| Win / Loss Distribution | 一部Tradeへ結果が偏っていないか |
| Holding Time | 保有時間が変化していないか |
| Long / Short | 方向別の取引特性が変化していないか |
Forward期間のMarket RegimeがISと異なる場合もあるため、結果差の原因をOverfittingだけに限定しません。
1回のForwardだけでRobustnessは決まらない
一度のIS / OOS分割で結果が良好だったことは有用な情報ですが、それだけであらゆる期間へのRobustnessが確認できたことにはなりません。
分割位置によって、ISとOOSに含まれるTrend、Range、High Volatility、Low Volatilityなどの比率は変わります。
| 1回のForwardで分かること | 別途確認したいこと |
|---|---|
| 特定のIS/OOS分割での結果 | 分割位置を変えた場合 |
| 選んだParameterの別期間結果 | 他のMarket Regime |
| 一定期間の再現性 | 時間が進んだ場合のParameter安定性 |
| 一つの検証窓 | 複数Windowでの継続性 |
Walk Forward Analysisとは
Walk Forward Analysisは、ISでOptimizationし、その直後のOOSで確認する工程を、時間を前へずらしながら複数回繰り返す考え方です。
| Step | Optimization | OOS Test |
|---|---|---|
| 1 | 期間A | その直後の期間B |
| 2 | 次のWindow | その直後の期間C |
| 3 | さらに次のWindow | その直後の期間D |
| 継続 | 時間を前へ移動 | 未知期間を順番に確認 |
MQL5公式コミュニティの記事でも、1回のOptimization+Forwardだけではなく、Optimization WindowとForward Stepを順番に前へ移動するCustom Walk Forward手法が解説されています。
Rolling WindowとAnchored Windowの考え方
Walk Forwardには、過去Window全体を移動させるRolling型と、開始位置を固定したままOptimization期間を拡張するAnchored型があります。
| 方式 | 考え方 |
|---|---|
| Rolling | 一定長のOptimization Windowを時間とともに前へ移動する |
| Anchored | 開始点を固定し、新しいDataを追加しながらWindowを拡張する |
どちらが常に優れているという意味ではありません。Strategyの性質、検証目的、更新方式によって扱いが異なります。
ParameterがWindowごとに大きく変わる場合
Walk Forwardで各WindowのBest Parameterを確認すると、期間ごとに選ばれる値が大きく変わる場合があります。
これはすぐに失敗を意味するものではありませんが、「EAが安定したParameter領域を持つのか」「Market Regimeごとに最適値が大きく変わるのか」を確認する材料になります。
| 状態 | 確認すること |
|---|---|
| 近いParameterが繰り返し選ばれる | 同じ領域に安定性があるか |
| Windowごとに大幅変化 | Market Regime依存が強くないか |
| Best値だけ毎回突出 | Parameter Sensitivityを確認する |
| OOSで毎回崩れる | Rule・Parameter・Sample設計を再確認する |
Market Regime変化とOverfittingを混同しない
OOSやForwardで結果が悪化した場合、その原因が必ずOverfittingとは限りません。
ISがTrend中心で、OOSがRange中心だった場合など、Market Regimeそのものが大きく異なる可能性があります。
| 確認候補 | 見る内容 |
|---|---|
| Overfitting | 特定HistoryやParameter一点への依存 |
| Regime Shift | Trend / Range / Volatilityなど相場構造の変化 |
| Sample Difference | Trade Countや期間構成の違い |
| Strategy Characteristic | 特定環境で強弱が出る設計か |
EAの成績悪化をMarket Regime、Execution、Version、Settingsから確認する場合は、EAの成績が悪化する理由を確認してください。
BacktestとLive Execution差をOverfittingと混同しない
Backtestでは良いのにLiveで悪化した場合も、原因をOverfittingだけに限定しません。
Spread、Commission、Slippage、Execution Delay、Server Time、Broker Specificationなどが違えば、同じEA・setでも結果が変化する場合があります。
BacktestとLive環境差は、MT5でバックテストとリアル運用の違いを確認することで詳しく整理しています。
ナンピン・Grid EAでの過剰最適化確認
ナンピン・Grid EAでは、最終損益だけを見ると、Parameter変更によって内部のRisk構造が変化していることを見落とす場合があります。
| 確認項目 | 見る内容 |
|---|---|
| Entry Distance | 特定値だけでDDが急減していないか |
| Maximum Positions | Position上限変更で結果を作っていないか |
| Lot Progression | Lot増加でProfitとRiskが同時拡大していないか |
| Floating Loss | Balanceだけでは見えないRiskを確認する |
| Equity Drawdown | Parameter周辺で資金負荷が急変しないか |
Scalping EAでの過剰最適化確認
Scalping EAでは、Entry Thresholdや短いIndicator Periodだけでなく、Spread・Commission・Slippageの影響も大きくなる場合があります。
| 確認対象 | 注意点 |
|---|---|
| 細かいEntry条件 | 数ポイントの差だけへ適合していないか |
| Spread | Optimization時のCost条件を確認する |
| Commission | Net Resultへ反映されているか |
| Slippage | Live環境で期待値を変えないか |
| Trade Count | 大量のTradeが特定時間帯へ偏っていないか |
GOLD / XAUUSDでの過剰最適化確認
GOLD / XAUUSDでは、期間によるVolatility差が大きくなることがあるため、固定距離Parameterや時間帯Filterを過去の特定局面へ合わせすぎていないか確認します。
| 確認項目 | 理由 |
|---|---|
| Volatility | 期間によって値幅が大きく異なる場合がある |
| Spread | 時間帯・Broker条件によって変化する |
| Fixed Distance | SL・TP・Grid幅等が特定値幅へ適合していないか |
| Trading Hours | 特定時間帯だけのHistoryへ依存していないか |
| Symbol Specification | Broker差とOverfittingを混同しないため |
GOLD EA全体のStrategy、Execution、Riskについては、ゴールドEA徹底研究|GOLD/XAUUSDの戦略・検証・リスクも確認してください。
Robustness確認チェック表
| No. | 確認項目 | 確認 |
|---|---|---|
| 1 | Optimizationに使用した期間を記録した | □ |
| 2 | OOS / Forward期間を分けた | □ |
| 3 | EA Versionを固定した | □ |
| 4 | 使用したsetファイルを保存した | □ |
| 5 | ParameterのStart / Step / Stopを記録した | □ |
| 6 | 最高Profitだけで選んでいない | □ |
| 7 | Trade Countを確認した | □ |
| 8 | PF・DD・Equityも確認した | □ |
| 9 | 近傍Parameterを確認した | □ |
| 10 | 一点だけ突出していないか確認した | □ |
| 11 | OOSを見て同じ期間へ再調整し続けていない | □ |
| 12 | MT5 Forward結果を確認した | □ |
| 13 | Market Regime差を確認した | □ |
| 14 | Backtest / Live環境差を分けた | □ |
| 15 | 必要に応じ複数Windowでも確認した | □ |
このチェック表は合否判定の点数表ではありません。どの条件で結果が作られたのかを確認するための整理用です。
よくある質問
過剰最適化と最適化は同じですか?
同じではありません。OptimizationはParameter候補を比較する機能です。過去Dataへ条件を合わせ込みすぎて、未知Dataへの一般化が弱くなる状態を過剰最適化として確認します。
バックテストが良すぎると過剰最適化ですか?
結果が良いことだけでは判断できません。OOS、Forward、Parameter近傍、Trade Count、DDなどを確認し、特定条件への依存が強くないかを見ます。
OOSとは何ですか?
Out-of-Sampleの略で、RuleやParameterを決定するために使用していないDataで結果を確認する考え方です。
MT5 ForwardとOOSは同じですか?
MT5 ForwardはOOS的な検証を行う具体的な機能の一つです。OOSという概念自体は、MT5 Forwardだけに限定されません。
Parameter Sensitivityが高いと使えないEAですか?
それだけでは結論づけられません。ただし、少し値を変えただけで結果が極端に変化する場合は、なぜその一点だけ違うのかを確認する材料になります。
Walk Forwardは必ず必要ですか?
すべてのEAに同じ検証工程が必須とは限りません。Strategy、Parameter数、更新方法、検証目的に応じて、単一OOSで十分か、複数Windowまで必要かを考えます。
OOSが悪ければOverfitting確定ですか?
確定ではありません。Market Regime、Trade Count、Execution条件などの違いも確認します。OOS悪化はOverfittingを疑う材料の一つです。
最適化の合格PFやOOS比率はありますか?
EAFCでは全EA共通の合格値を設定しません。Trade Frequency、Holding Time、Symbol、Risk Structure、検証期間などが異なるため、単一数値ではなく複数条件を組み合わせて確認します。
関連ページ
| 確認したい内容 | 関連ページ |
|---|---|
| Forward Testと公開実績を確認する | EAフォワードテスト完全ガイド |
| Monte Carlo / Resamplingで取引履歴の分布を確認する | EAのモンテカルロ検証で分かること・分からないこと |
| EAの成績悪化原因を確認する | EAの成績が悪化する理由 |
| MT5 Strategy Testerを使う | MT5ストラテジーテスター・最適化完全ガイド |
| 検証条件とOptimizationを記録する | MQL5バックテスト実務ノート |
| Backtest Reportを読む | EAのバックテストレポートとは |
| BacktestとReal環境差を見る | MT5でバックテストとリアル運用の違いを確認すること |
| setファイルで設定を再現する | setファイルとは |
| Drawdownを確認する | ドローダウンとは |
| Profit Factorを確認する | PFとは |
| GOLD EAの検証を確認する | ゴールドEA徹底研究 |
参考にした公式情報
MT5のOptimization、Forward Test、Optimization結果の可視化、Overfitting、Out-of-Sample、Walk Forwardについては、MetaTrader 5およびMQL5の公式資料を参照しています。
- MetaTrader 5 Help:Strategy Optimization
- MetaTrader 5 ヘルプ:ストラテジーテスト
- MetaTrader 5:Built-in Strategy Tester
- MQL5:Robustness Testing on Expert Advisors
- MQL5:Custom Walk Forward optimization in MetaTrader 5
まとめ
EAの過剰最適化を確認する時は、Optimizationで最も利益が大きかったParameterだけを見るのではなく、その結果がどの条件から作られたのかを確認します。
まずIn-SampleとOut-of-Sampleを分け、MT5 Forwardで未知期間の結果を確認します。さらに、最良Parameterの周辺でもPF、DD、Trade Countなどが極端に崩れないかを確認すると、Parameter Sensitivityを把握しやすくなります。
より長い時間軸で確認する場合は、ISとOOSを順番に前へ移動するWalk Forwardという考え方もあります。ただし、Walk Forwardを行ったから自動的にRobustnessが保証されるわけではありません。
OOSやForwardで悪化した場合も、Overfittingだけでなく、Market Regime、Execution、Broker仕様、EA Version、setファイルなどの差を確認します。Robustnessは単一の数字ではなく、期間・Parameter・Risk・Executionを組み合わせて確認することが重要です。
お問い合わせはEAFC公式LINEへ
EAFCサイト内の記事、商品、導入前確認、設定確認、ログ確認、開発依頼前のご相談など、各種お問い合わせはEAFC公式LINEより受け付けています。
※投資助言、売買指示、利益保証、推奨ロット、推奨銘柄の案内は行っておりません。
口座番号、認証情報、Webhook URL、GAS URL、APIキーなどの機密情報は送信しないでください。
