最終更新: 2026年6月
バックテストで輝かしい成績を出したEAが、フォワード(実運用)で全く機能しない。EA開発者なら必ず経験する現象だ。この原因のほとんどが**カーブフィッティング(過剰最適化)**にある。
カーブフィッティングを理解して回避するかどうかで、「バックテスト職人」と「実際に稼働するEA開発者」の間に決定的な差が生まれる。本記事では、概念の定義から具体的な回避手順まで体系的に解説する。
カーブフィッティングとは何か
カーブフィッティング(Curve Fitting)とは、EAのパラメーターを調整した結果、過去の特定の価格データに過度に適合した状態を指す。
わかりやすく言えば「過去の相場の答え合わせに最適化されたEA」だ。試験で言えば、模擬試験の答えを丸暗記して「正解率100%」になったようなもの。本番の試験問題(未来の相場)には全く役立たない。
統計的に表現するなら、カーブフィッティングは標本内誤差(in-sample error)を極小化した代わりに、標本外誤差(out-of-sample error)が爆発的に増大した状態だ。
この問題が厄介なのは、「開発中にはわからない」という点にある。バックテスト画面では右肩上がりの美しい資産曲線が表示され、プロフィットファクターも2.0〜3.0超のような数字が並ぶ。しかし実際に動かしてみると、連敗が続いて含み損が膨らんでいく。筆者はEA開発の初期段階で、バックテストPF3.2・最大ドローダウン8%という「完璧なEA」を実運用に投入して、わずか2ヶ月でドローダウン35%を経験したことがある。その原因がカーブフィッティングだったと気付いたのは、さらに3ヶ月後のことだった。
カーブフィッティングが起きていると、次のような症状が出やすい。
- フォワードテストが3ヶ月以内に崩壊する
- 相場環境が少し変わっただけで機能しなくなる
- パラメーターをわずかに変えると成績が急激に悪化する
- 特定の年度のデータに著しく依存している
これらのうち2つ以上当てはまるEAは、カーブフィッティングを強く疑う必要がある。
なぜカーブフィッティングが起きるのか
パラメーター最適化の落とし穴
MT4/MT5のストラテジーテスターには「最適化」機能がある。移動平均の期間・損切り幅・利確幅などのパラメーターを一定範囲で総当たりテストし、最も良い組み合わせを見つける機能だ。
この機能自体は問題ない。問題は「最も良い組み合わせ」を追い求めるあまり、過去データに特化しすぎることだ。
たとえば、2015〜2024年のEURUSDデータで最適化したEAのパラメーターが、2025年以降の相場では機能しないケースがある。相場の構造は変わるからだ。
具体的な例を挙げる。ある移動平均クロス系EAを2020〜2023年のドル円データで最適化すると、「短期5日・長期21日」の組み合わせが突出した成績を出した。この期間はコロナショック後の大規模なドル安と、その後のFRB利上げによる急激なドル高という特殊な環境が重なった時期だ。当然、2024〜2025年の相場でこのパラメーターは機能しなくなった。これがカーブフィッティングの典型的なメカニズムだ。
最適化によって生まれる「最良パラメーター」は、過去のその期間の相場に最も適した設定であり、未来の相場への適用を保証するものでは一切ない。
インジケーターの多重使用
使うインジケーターの数が増えるほど、パラメーターの組み合わせ数も増加する。自由度が高い分、「過去にたまたまうまくいく組み合わせ」を発見しやすくなる。これはモデルの複雑性が上がることで過学習(over-fitting)が起きやすくなる機械学習と同じ構造の問題だ。
インジケーターが3種類のEAと7種類のEAを比較した場合、後者の方が「バックテスト上は高性能に見える」結果を出しやすい。しかしそれは「過去データへの適合度が高い」だけであり、未来の相場への汎化性能(generalization ability)は逆に低い可能性がある。
シンプルなロジックのEAが長期運用で安定するケースが多い理由も、ここにある。複雑さは「賢さ」ではなく「過適合へのリスク」を増やすことを覚えておくべきだ。
カーブフィッティングの見抜き方
1. バックテストとフォワードテストの乖離率を確認する
最も直接的な検出方法だ。バックテスト期間の後半(直近1〜2年)を「アウトオブサンプル期間」として最適化に使わず、別途テストする。
バックテスト(最適化期間)の年利と、アウトオブサンプル期間の年利を比較して:
- 乖離率が50%以内 → 許容範囲
- 乖離率が50〜80% → 要注意
- 乖離率が80%超 → 強いカーブフィッティングの疑い
実際の検証例を示す。あるEAのバックテスト(2018〜2022年)の年利が40%だったとする。アウトオブサンプル期間(2023〜2024年)で同じEAを走らせると年利が5%だった場合、乖離率は87.5%となり「強いカーブフィッティングの疑い」に該当する。このEAはリアル運用に回すべきではない。
逆に、バックテスト年利20%・アウトオブサンプル年利14%(乖離率30%)のような結果が出た場合、相対的に信頼性は高いと判断できる。
2. パラメーターの安定性テスト(ロバストネステスト)
最適パラメーターの前後の値でもほぼ同等の成績が出るか確認する。
たとえば最適化で「移動平均期間=14」が選ばれたとする。「13」「15」「16」でも似た成績が出るなら、その数値は「本質的な相場の特性を捉えている」可能性が高い。一方、「14だけ突出して良く、前後は急激に悪化する」場合は、その数値は過去データへの偶然の一致にすぎない可能性が高い。
このテストを行うとき、パラメーターの値を±10〜20%の範囲で変化させ、成績がなだらかに変化するか(ロバスト)、急激に悪化するか(カーブフィッティング)を確認する。ロバストなEAは「パラメーターが多少ずれても機能する」という特性を持っており、これが未知の相場環境への耐性につながる。
3. 取引回数の確認
取引回数が少ないバックテストは統計的に信頼できない。
目安として:
- N ≥ 200回: 最低ライン
- N ≥ 500回: 信頼性が上がる
- N ≥ 1,000回: かなり信頼できる
5年間のバックテストで取引回数が30回のEAは、たとえプロフィットファクターが3.0でも無意味だ。サンプル数が統計的有意性を満たしていない。
統計学の観点から補足する。30回のトレードで勝率70%(21勝9敗)を達成したEAがあったとしても、真の勝率が50%(コインフリップと同等)のEAが偶然70%の勝率を出す確率は十分ありうる。しかし1,000回のトレードで勝率70%を達成すれば、その確率は天文学的に低くなる。取引回数は「統計的な信頼区間を狭める」重要な要素だ。
取引回数を確保するには、テスト期間を長くする・複数の通貨ペアでテストする・より短い時間軸を採用するなどの方法がある。
カーブフィッティングの具体的な回避方法
方法1: ウォークフォワードテスト
最も体系的な検証手法だ。最適化期間と検証期間を時間軸でずらしながら複数回繰り返す。
具体的な手順:
- 2015〜2018年で最適化 → 2019年でテスト(1回目)
- 2016〜2019年で最適化 → 2020年でテスト(2回目)
- 2017〜2020年で最適化 → 2021年でテスト(3回目) ...という具合に繰り返す。
各検証期間の成績が概ね安定しているEAは、カーブフィッティングではなく「相場の本質的な特性」を捉えている可能性が高い。筆者が開発するEAは必ずこの手順を経ている。
ウォークフォワードテストの実施において注意すべき点が2つある。まず「最適化期間の長さ」と「検証期間の長さ」の比率だ。一般的に最適化期間は検証期間の3〜5倍以上とる。短すぎる最適化期間では十分なパラメーターが収束しない。次に「何回のウォークフォワードサイクルを行うか」だ。最低4〜5回以上のサイクルを回すことで、異なる相場環境(トレンド・レンジ・高ボラティリティ)での安定性を確認できる。
方法2: アウトオブサンプル検証
全データ期間を「最適化用(In-Sample)」と「検証用(Out-of-Sample)」に分割する。一般的な分割比は7:3または8:2だ。
最適化には前半データのみ使用し、後半データは最後の検証まで一切見ない(触らない)。これが厳密な手続きだ。「結果を見てからOOSデータを調整する」のはルール違反で、OOSの意味がなくなる。
実際の失敗パターンとして多いのが「OOSの成績が悪かったので、少しパラメーターを調整してまた試した」という行為だ。これをやった瞬間に、OOSデータも事実上の学習データになってしまう。アウトオブサンプル検証は「一発勝負」の原則を守ることが重要だ。OOS期間の成績が悪かった場合は、EAのロジック自体を見直すか、別のアプローチを検討する方が正しい。
方法3: モンテカルロシミュレーション
MT5のストラテジーテスターには「モンテカルロ」オプションがある。価格データにランダムな変動を加えて複数回シミュレーションし、成績のばらつきを確認する。
モンテカルロで成績のばらつきが小さい(標準偏差が低い)EAは、ランダムな相場変動に対してロバスト(頑健)だと判断できる。
目安として、100回のモンテカルロシミュレーションで最終資産がプラスになる割合が80%以上であれば、相対的に信頼性が高いと判断できる。一方、50回以下でもマイナスになるようなケースは、市場環境の変化に対して脆弱なEAと考えるべきだ。
方法4: シンプルなロジックを維持する
インジケーターは最大3〜4種類まで。パラメーターの総数も少なく保つ。
「複雑なほど賢そう」は罠だ。Occamの剃刀(オッカムの剃刀)の原則と同じで、「同等の説明力があるなら、シンプルな方が優れたモデル」という考え方はEA設計にも当てはまる。
具体的な指標として「パラメーター数 ÷ 年間取引回数」の比率を意識するとよい。たとえばパラメーターが10個で年間取引回数が50回のEAは、1パラメーターあたり5回の取引しかなく、統計的な根拠が非常に薄い。パラメーター1個あたり少なくとも50〜100回以上の取引があることが望ましい。
Claudeと会話しながらインジケータが作れるhedgrow-fxでは、インジケーターの組み合わせをAIと議論しながら設計できるため、「複雑化しすぎない」設計の壁打ち相手として活用できる。
カーブフィッティングと過剰最適化は同じ概念か
ほぼ同義で使われることが多いが、厳密には:
- カーブフィッティング: 過去データへの数学的過適合状態(結果の記述)
- 過剰最適化: パラメーター最適化プロセスでカーブフィッティングを引き起こす行為(原因の記述)
「過剰最適化した結果、カーブフィッティングが起きた」という因果関係がある。実際の議論では両語が混用されており、意味の差を意識しなくても実害はない。
機械学習の分野では「過学習(overfitting)」と「バイアス・バリアンストレードオフ」として同様の概念が研究されており、EAのカーブフィッティングはまさにこの過学習問題と同一の構造を持つ。モデルの複雑性を上げることで学習データへの誤差(バイアス)は下がるが、未知データへの誤差(バリアンス)は上がる——このトレードオフを理解することが、EA設計の根幹となる。
EAを「相場の仮説を検証するモデル」として捉えると、カーブフィッティングの回避は自然と意識できるようになる。「このロジックは相場のどんな本質的な特性を利用しているのか」という問いを常に持つことが重要だ。
関連記事・内部リンク
まとめ
カーブフィッティングはEA開発における最大のリスクの一つだ。本記事の要点を整理する。
- カーブフィッティングとは: 過去の特定データへの過適合。バックテストは優秀でも実運用では機能しない状態
- 主な原因: 最適化の追いすぎ・インジケーターの多重使用・テスト期間の不足
- 見抜き方: バックテストとフォワードの乖離率確認・ロバストネステスト・取引回数の統計的確認
- 回避方法: ウォークフォワードテスト・アウトオブサンプル検証・モンテカルロシミュレーション・シンプルなロジック設計
EA開発で「なぜバックテストは良いのに実運用で機能しないのか」という問いへの答えのほとんどは、カーブフィッティングにある。これを理解して回避できるかどうかが、長期的に稼働できるEAを作れるかどうかの分かれ目だ。
バックテストの数値に惑わされず、アウトオブサンプルの検証とウォークフォワードテストを徹底することが、EA開発者として成長するための最短ルートだ。
よくある質問(FAQ)
Q: バックテストのプロフィットファクターが3.0超なのに実運用でマイナスになるのはなぜですか? A: カーブフィッティングの典型症状です。PF3.0は過去データへの過適合を示している可能性が高く、アウトオブサンプル検証とウォークフォワードテストで再確認してください。一般的に、フォワードテストを経ていないPF3.0超のEAは過剰最適化を強く疑うべきです。
Q: 最適化を全くしなければカーブフィッティングを防げますか? A: 完全には防げませんが、リスクは下がります。デフォルトパラメーターでのバックテストでも、使用したデータ期間への適合は起きています。ウォークフォワードテストによる検証は依然として必要です。
Q: 何年分のデータでバックテストすればカーブフィッティングを検出できますか? A: 最低5年、理想は10年以上のデータで検証します。データが長いほどさまざまな相場環境(トレンド相場・レンジ相場・高ボラティリティ期)を包含でき、特定期間への過適合を発見しやすくなります。複数の通貨ペアでのテストも有効です。
Q: モンテカルロシミュレーションはMT4でも使えますか? A: MT4の標準ストラテジーテスターにはモンテカルロ機能はありません。MT5またはStrategyQuantX等の専用ツールを使う必要があります。
Q: ウォークフォワードテストを通過したEAでも実運用で失敗することはありますか? A: あります。ウォークフォワードテストはカーブフィッティングリスクを「下げる」ものであり、「排除」するものではありません。相場の構造的変化(市場体制の変化)には対応できないケースがあります。
Q: カーブフィッティングが起きているかどうかを簡単に判断する方法はありますか? A: 最も簡単なのは「最適パラメーターの前後の値で成績がどう変化するか」を確認するロバストネステストです。最適値の±10〜20%の範囲でパラメーターを変えたとき、成績がなだらかに変化するならロバスト、急激に悪化するならカーブフィッティングの可能性が高いと判断できます。
Q: EAのパラメーター数は何個以下にすべきですか? A: 絶対的な上限はありませんが、「年間取引回数 ÷ パラメーター数 ≥ 50回」を目安にすることを推奨します。年間200回の取引があるEAならパラメーター数は4個以下が望ましいという計算になります。パラメーターが多いほど、それだけ多くの取引実績でロジックを検証する必要があります。
免責事項: 本記事の内容はEA開発の教育的な情報提供を目的としています。過去のバックテスト成績は将来の利益を保証しません。FX取引には元本割れリスクがあります。
著者情報: 金融工学専攻・アルゴリズム取引研究者(EA開発歴8年)
