本ページはプロモーションが含まれています

ホーム › EA全般

EA全般

カーブフィッティングとは?EAの過剰最適化を見抜く方法と回避策8つ

↻

トム

トム

現役エンジニア(本業はJavaバックエンド)。以前はMT4のEAを自作してFX自動売買をしていました(現在は引退)。今はポイ活を「時給」で検証・攻略しています。

バックテストでは素晴らしいパフォーマンスを発揮していたEAが、実際の取引では思ったような成果を出せないことがあります。

これがEAを購入する際に悩まされる問題のひとつ、過剰最適化(カーブフィッティング)です。

この記事では、カーブフィッティングが起きる仕組み、8つの回避方法、購入前に見抜くための確認方法を、目安となる数値を交えて解説します。

カーブフィッティングとは?

過剰最適化(カーブフィッティング、オーバーフィッティング)とは、最適化のしすぎにより、バックテストをした過去相場にだけ通用するEAになってしまうことです。

カーブフィッティングが起きる仕組み

相場の癖
繰り返し起きる値動き。未来にも再現する
→ ここに合わせるのが最適化
偶然の動き
そのときだけ起きた値動き。未来には再現しない
→ ここまで合わせるのが過剰最適化
過去データには両方が混ざっている。最適化を繰り返すほどパラメータは偶然の動きにも合わせ込まれ、本番で通用しなくなる。

下の画像はカーブフィッティングしたEAの例です。取引回数5000回付近までのデータで最適化しています。最適化に使った5000回までは右肩上がりですが、最適化していない5000回以降は成績が崩れています。

カーブフィッティングしたEAの損益グラフ。最適化した取引回数5000回までは右肩上がりだが、それ以降は成績が崩れている

カーブフィッティングの回避方法

カーブフィッティングを完全になくすことはできませんが、次の8つを意識すると起きにくくなります。EAを購入する人も、販売ページの説明を読み解く材料として使えます。

カーブフィッティングの8つの回避方法と目安

1. 期間を長くする
5〜10年以上
2. 取引回数を多くする
300回以上
3. パラメータを減らす
最適化は3〜5個
4. テストパターンを増やす
通貨・時間足・スプレッド
5. 極値を選ばない
1位の値を鵜呑みにしない
6. なだらかさを確認
前後±10〜20%でも黒字
7. 根拠あるロジック
勝てる理由を一言で言える
8. アウトオブサンプル
最適化7:テスト3

バックテストと最適化の期間を長くする

目安は最低5年、できれば10年以上です。ただし長さそのものより、性質の違う相場がすべて含まれているかが重要です。

  • トレンド相場:一方向に動き続ける期間
  • レンジ相場:値幅の狭い期間
  • 高ボラティリティ相場:急落・急騰が続く期間(2020年コロナショック、2022年の急激な円安、2024年7〜8月の急激な円高など)

レンジ相場ばかりの2年間で最適化したEAは、レンジ相場にだけ強いEAになります。トレンド相場に変わった途端に負け続けるのは、よくある失敗です。

取引回数を多くする

10年で10回トレードして全勝するEAがあっても、10回程度なら偶然全勝することもあります。取引回数が多いほど偶然の影響が薄まり、勝率やプロフィットファクターを信用できるようになります。

取引回数(バックテスト全体)判断
100回未満偶然の影響が大きく、成績を信用できない
300回以上最低ライン
1000回以上望ましい水準

スキャルピングEAなら数千回は簡単に稼げますが、日足ベースのスイングEAは10年でも数百回にしかならないことがあります。取引回数の少ないEAほど、テストパターンの追加やアウトオブサンプルテストが重要になります。

パラメータを減らす

パラメータを増やして最適化を繰り返すと、バックテスト上は成績の良いEAを作れます。しかしそれは過去相場に合わせ込む自由度が増えているだけで、本番で勝てる保証はありません。インジケータ1つでも「時間足」「期間」「しきい値」とパラメータは増え、フィルターを足せばすぐ10個を超えます。

最適化するパラメータは合計3〜5個に絞る

エントリー条件
1〜2個
決済条件
1〜2個
フィルター
1〜2個
それ以外のパラメータは固定値にする。少ないパラメータで良い成績を出せるEAほど、カーブフィッティングされにくい。
  • 定番値を優先する:移動平均20・RSI14など広く使われている値から始め、最適化で「23」のような中途半端な値が選ばれても、定番値と成績が大差なければ定番値を採用する
  • 販売EAはパラメータ数を見る:外部パラメータが異常に多いEAは、合わせ込む余地が大きい

テストパターンを増やす

最適化に使ったデータとは条件を変えてバックテストし、利益の出る傾向が残っているかを確認します。

テスト条件の変え方見るポイント
他の通貨ペア値動きの近い通貨ペア(ドル円→ユーロ円、ポンド円)全滅するならドル円の癖に合わせ込んでいる
他の時間足隣の時間足(15分足→5分足、30分足)極端に成績が崩れないか
スプレッドを広く実際の業者の平均の1.5〜2倍スキャルピングEAは利益が消えやすい
他の業者のデータ別業者のヒストリカルデータ損益グラフの形が大きく変わらないか

すべてで最適化時と同じ成績が出る必要はありません。条件を少し変えただけでプラスからマイナスに反転するなら、そのEAは最適化した条件にだけ合わせ込まれています。

極値のパラメータを選ばない

下の画像はMT4のストラテジーテスターの最適化結果グラフです。1番目のパラメータの値だけ、前後より飛び抜けて成績が良くなっています。

MT4の最適化結果グラフ。1番目のパラメータの値だけ前後より飛び抜けて成績が良くなっている

飛び抜けた値は、過去相場の偶然の動きにたまたま合っただけの可能性が高く、これを選ぶと過剰最適化になります。

  • 最適化後にストラテジーテスターの「最適化グラフ」タブを開く
  • 成績1位の値をそのまま採用しない
  • 前後の値と比べて突出していないかを必ず見る

最適化結果の点はなだらかになることを確認

下の最適化結果は、ばらつきが少なく点が少しずつ変化しています。パラメータを少し変えても成績が大きく変わらない、安定したEAです。逆に点がばらついていると、少し変えただけでまったく違う成績になります。

点がなだらかに並んだMT4の最適化結果グラフ。パラメータを変えても成績が大きく変わらない

簡単な確認方法:採用値の前後±10〜20%でもテストする

-20%
16
プラス?
採用値
20
プラス
+20%
24
プラス?
例:移動平均の期間を20で採用するなら16と24でもテストする。両方プラスなら「なだらかな山の頂上付近」にある安定した値。採用するのは成績1位の点ではなく、この山の頂上付近。

パラメータだけでなく、テスト期間の感度も確認します。バックテストの開始日・終了日を数か月ずらしても成績が大きく変わらなければ合格です。開始日を1か月ずらしただけで成績が半減するなら、特定の期間に合わせ込まれています。

根拠あるロジックにする

極端な例ですが、「雨が降った日はドル円が上がりやすい」という法則を見つけ、雨の日にドル円を買うお天気フィルターEAを作ったとします(考え方を表した疑似コードで、実際に動くMQL4ではありません)。

if(tenki == "雨"){
   // ドル円の買い
}

このEAは本番では通用しないでしょう。天気と相場に関連があるとは考えにくいからです。根拠の薄いフィルターでバックテストの成績が良くなっても、それはカーブフィッティングです。過去10年のデータを細かく探せば、偶然成績が良くなる条件はいくらでも見つかります。

  • 根拠あり:「なぜ勝てるのか」を相場の性質から一言で説明できる
  • 根拠なし:説明できないが、バックテストの成績だけは良い(天気フィルターなど、相場の性質と関係のない条件)

自作EAなら、ストラテジーテスターのビジュアルモードでバックテストを再生し、エントリーと決済がロジック通りの場面で起きているかを目視で確認しましょう。数字上は勝っていても、想定外の場面で取引しているなら、その利益は偶然です。

アウトオブサンプルテストをする

アウトオブサンプルテストとは、ヒストリカルデータを「最適化に使う期間」と「最適化のあとにテストする期間」の2つに分割する方法です。

アウトオブサンプルテストのイメージ(10年分なら7年:3年)

最適化の期間(7割)
古い7〜8年でパラメータを調整する
テストの期間(3割)
直近2〜3年で成績を確認する
過去 → 現在
  1. MT4のストラテジーテスターで期間を古い7〜8年に指定して最適化する
  2. パラメータが決まったら、期間を直近2〜3年に切り替える
  3. 通常のバックテストを1回だけ実行し、下の表で判定する

MT5のストラテジーテスターには「フォワード」設定があり、最適化時にこの分割を自動で行ってくれます。

指定期間の後ろ1/2・1/3・1/4をテスト期間にするか、「カスタム」でテスト開始日を手動指定できます。MT4にはこの機能がないため、期間指定を手動で切り替えます。

確認項目合格要注意
損益グラフテスト期間も右肩上がり途中で横ばい・右肩下がり
プロフィットファクター最適化期間と同じ水準大きく低下(2.0→1.1など)
最大ドローダウン最適化期間の範囲内最適化期間を超える

テスト期間の成績を見てからパラメータを調整し直すと、テスト期間まで最適化に使ったことになり意味がなくなります。テストは1回きりと決めて実行しましょう。

発展形のウォークフォワードテストや、テストの種類ごとの違いは以下の記事で紹介しています。

併せて読むEAのバックテストとフォワードテスト|正しい評価方法5種と合格基準EAはバックテストだけで評価すると本番で崩れがちです。アウトオブサンプル・ウォークフォワード・モンテカルロ・リアルフォワードの5つの検証法と、フォワード期間や取引回数など合格の目安を計算例つきで解説します。

カーブフィッティングの確認方法

十分に対策してもカーブフィッティングを完全に避けられるとは限りません。過去データをどう分割しても「過去」でしかないため、最終的には実際の相場でEAを動かすフォワードテストが必要です。

フォワードテストで確認するポイント

期間は最低半年、できれば1年以上が目安です。取引回数の少ないEAほど長い期間が必要です。フォワードの成績を、バックテストの同じ長さの期間と比べます。

確認項目許容範囲乖離が大きい
プロフィットファクターバックテストの7割程度まで半分以下
最大ドローダウンバックテストの範囲内バックテストを超える
月ごとの損益負け月があっても傾向は同じバックテストは毎月プラスなのに負け月が続く

フォワードの成績がバックテストより多少落ちるのは普通です。スプレッドやスリッページ、約定の遅れなど、バックテストでは再現しきれない不利な条件が本番にはあるからです。問題なのは「落ちる」ことではなく「傾向そのものが変わる」ことです。フォワードで問題なさそうだと確認できてから、ロットを徐々に上げていきましょう。

カーブフィッティング以外で綺麗なバックテストになる原因

バックテストとフォワードが乖離する原因はカーブフィッティングだけではありません。次の原因はカーブフィッティングとは別物ですが、同じように「綺麗なバックテスト」を生むので、合わせて見分けられるようにしておきましょう。

原因バックテストがどう見えるか見分け方
ナンピン・マーチンゲール勝率90%以上で綺麗な右肩上がり。負けを持ち越すので負けが表に出ない最大ドローダウンと最大保有ポジション数を見る。1回の負けで利益が消える構造なら要注意
スプレッド固定・スリッページなしスキャルピングEAで特に利益が過大になるスプレッドを実勢の1.5〜2倍にして再テスト
ヒストリカルデータの精度低精度データだと足の中の値動きが補間され、約定価格がずれて実際と違う結果になる(実際より有利に出ることもある)モデリング品質を確認し、ティックデータで再テスト
暴落・急変期間の除外コロナショックなどを避けた期間だけでテストしているテスト期間に急変相場が含まれているか確認

EAを購入するときの見抜き方

フォワードテストが十分に実施されていないEAは、カーブフィッティングの可能性を排除できません。ゴゴジャンなどのEA販売サービスではフォワード実績が公開されているので、次の点を確認しましょう。実績がデモ口座かリアル口座かも合わせて見ておくと安心です。

  • 見るのはバックテストではなくフォワードの損益グラフ
  • 販売開始から半年、できれば1年以上の実績があるか
  • 販売開始直後だけ良く、その後横ばい・右肩下がりになっていないか(販売前のバックテスト期間にカーブフィッティングしていた典型例)
  • 最適化に使った期間とフォワード期間が分けて示されているか(区別なく1本のグラフで見せているなら、どこまでが最適化済みかわからない)
  • フォワード実績のEAバージョン・設定・口座条件が、販売中のものと同じか(バージョンアップ後に実績がリセットされていないか、集計期間が明示されているか)
  • フォワードテストのないEAは候補から外す

フォワード実績で厳選したゴゴジャンEAは、以下の記事で紹介しています。

カーブフィッティングされたEAは世の中に多く出回っています。バックテストの綺麗な右肩上がりだけで判断しないようにしましょう。

まとめ

過剰最適化(カーブフィッティング)は、最適化によってパラメータが過去相場の偶然の動きにまで合わせ込まれることで起こります。EAを自作する人は、最適化のたびに次のチェックリストを確認してみてください。

  • バックテスト期間は5〜10年以上で、トレンド・レンジ・急変相場を含んでいるか
  • 取引回数は300回以上(できれば1000回以上)あるか
  • 最適化するパラメータは3〜5個に絞っているか
  • 他の通貨ペア・時間足・広いスプレッドでも傾向が崩れないか
  • 採用したパラメータは飛び抜けた極値ではなく、なだらかな山の上にあるか
  • なぜ勝てるのかを相場の性質から説明できるか
  • 最適化していない直近2〜3年でアウトオブサンプルテストをしたか

EAを購入する人は、バックテストではなくフォワード実績を見て、販売開始から半年〜1年以上の成績が安定しているものを選びましょう。

※本記事は情報提供を目的としたもので、特定のEA・金融商品の売買を推奨するものではありません。FX(外国為替証拠金取引)は元本が保証されておらず、レバレッジにより預けた証拠金を上回る損失が発生する可能性があります。記事内の成績・数値は過去の実績であり、将来の利益を保証するものではありません。投資の最終判断はご自身の責任でお願いします。

QUEST CLEAR!

最後まで読んでくれて、ありがとうございます。
つぎのクエストは、この下から選べます。

トム

この記事を書いた人トム

・現役エンジニア(本業はJavaバックエンド)
・以前はMT4のEAを自作してFX自動売買をしていました(現在は引退)
・今はポイ活を「時給」で検証・攻略しています