本文へスキップ
検証・バックテスト

EAのバックテストとリアルが乖離する7つの原因と差の埋め方の手順

バックテストで勝っていたEAがリアルで崩れる原因を、スリッページ・約定拒否・遅延・スプレッド・スワップ・データ品質・過剰最適化の7つに分解し、乖離を自分の口座で実測して定数化する手順まで解説します。

執筆: Redington 公開: 最終更新:

PR当ページにはプロモーション(アフィリエイト広告)が含まれます。順位・評価は公開の評価基準に基づき編集部が独立して決定しています。EAの成績はすべて過去の検証結果であり、将来の利益を保証するものではありません。海外FX業者は金融庁未登録です。

この記事の目次
  1. 結論:テスターが再現していないものを、数字で見積もる
  2. 乖離の7つの原因
  3. 原因1:スリッページ
  4. 原因2:約定拒否とリクオート
  5. 原因3:注文遅延
  6. 原因4:スプレッドの想定違い
  7. 原因5:手数料とスワップ
  8. 原因6:データの出所の違い
  9. 原因7:過剰最適化
  10. 数字で見る乖離のインパクト
  11. 乖離が小さいEA・大きいEAの特徴
  12. 乖離を実測して定数化する手順
  13. デモとリアルでも差が出る
  14. 乖離の方向で原因を絞り込む
  15. よくある失敗
  16. まとめ

バックテストでプロフィットファクター1.8だったEAが、リアルでは1.1を切る。この落差の原因は「運が悪かった」ではなく、ほとんどの場合は構造的なものです。MT4/MT5のストラテジーテスターが再現していない要素が、実運用では必ず発生するからです。この記事では乖離の原因を7つに分解し、それぞれをどう埋めるか、あるいはどう見積もるかを整理します。

結論:テスターが再現していないものを、数字で見積もる

✅ 結論

乖離の原因は大きく「コストの過小評価」「約定の理想化」「データの不一致」「検証手続きの欠陥」の4系統に分かれます。このうち完全に消せるものはありません。実務的な対応は、1トレードあたり何pipsのコスト悪化を織り込めば実運用と整合するかを、自分の口座で実測して定数化することです。その定数を入れてもプラスが残るEAだけが、運用の候補になります。

乖離の7つの原因

#

原因

テスターでの扱い

実運用での影響

1

スリッページ

一切シミュレートしない。常に要求価格で約定

片道0.2〜1.0pips(業者・銘柄・時間帯による)

2

約定拒否・リクオート

発生しない

エントリーできないトレードが出る

3

注文遅延

遅延なし(MT5は設定可能)

条件検知から送信まで時間がかかる

4

スプレッドの想定違い

MT4は固定、MT5はデータ由来

指標時・早朝の拡大が反映されない

5

手数料とスワップ

MT4は手数料欄なし。スワップは実行時点の値を全期間に適用

ECN口座・長期保有で大きくずれる

6

データの出所の違い

業者フィードか第三者データか

業者ごとに値動きも値飛びも違う

7

過剰最適化

検出されない

未知の期間で成績が崩れる

以下、それぞれを詳しく見ます。

原因1:スリッページ

MT4/MT5の標準テスターは、スリッページを一切シミュレートしません。 常に要求価格で約定します。実運用では、成行注文は必ず多少なりとも滑ります。

実務的な織り込み方の目安です。

EAのタイプ

見込むべきスリッページ

成行エントリーが主体

片道0.2〜1.0pips

経済指標発表時に発注

数pips〜十数pips

指値エントリーが主体

エントリー側は小さい。ただし損切りヒット時は不利方向に滑る

💡 ポイント

簡易的な評価方法があります。「1トレードあたり X pips のコストを追加した場合に、EAの期待利得がプラスを保てるか」を X = 0.5 / 1.0 / 2.0 で確認する。 これで壊れるEAは、どんなにバックテストが美しくても実運用に耐えません。外部ツールを使わなくても、スプレッド設定にXを上乗せするだけで近似できます。

Tick Data Suiteにはスリッページを生成する複数の方式があり、各方式に設定オプションがあります。詳細は Tick Data Suiteの使い方と価格 を参照してください。

原因2:約定拒否とリクオート

テスターでは、注文は必ず通ります。実運用では通らないことがあります。

  • オフクォート(MT4: 136 / MT5: 10021「There are no quotes to process the request」)。価格が急変しているときに発生します。
  • リクオート。提示価格が変わり、再確認を求められます。EAは通常、リトライするか発注を諦めます。
  • ストップレベル違反(MT4: 130 / MT5: 10016)。現在価格に近すぎる損切り・利確を設定すると拒否されます。ストップレベルは業者と口座タイプで異なり、テスターでは0として扱われることがあります。

⚠️ 注意

損切り幅の狭いEAは、ストップレベルの影響を直接受けます。バックテストでは10pipsの損切りが設定できていても、実口座のストップレベルが15pipsなら注文自体が拒否されます。EAを導入する前に、想定業者のストップレベルを確認してください。 業者ごとの条件は業者のEA関連規制の比較で整理しています。

エラーコード別の対処は 注文エラーの原因と対処 にまとめています。

原因3:注文遅延

EAが条件を検知してから、サーバーに注文が届くまでには時間がかかります。テスターではこれがゼロです。

  • MT5のテスターには遅延(Delay)設定があります。 「遅延なし」のほか、固定ミリ秒のプリセットやランダム遅延を選べます。本番想定なら「遅延なし」以外を選んでください。ただしランダム遅延は「Open prices only」モードでは使えません。
  • MT4の標準テスターには遅延設定がありません。

実運用での遅延は、VPSの場所と業者サーバーの場所の距離に大きく影響されます。数十ミリ秒の差が損益に効くEAなら、 VPSのレイテンシ の検討が必要になります。

原因4:スプレッドの想定違い

最も影響の大きい原因です。EURUSDで平均スプレッドを0.5pips過小評価していると、年間1,000トレードのEAでは年間500pips分の誤差になります。1ロット運用なら年間約50万円です。

MT4の標準テスターは固定スプレッドのみで、指標時や早朝の拡大は一切反映されません。MT5は公式ヘルプに「ストラテジーテスターでは、スプレッドは常に変動として扱われる」と記載があり、実ティックモードなら自動的に可変になります(出典: MT5 Help - Testing Features 、2026年9月24日確認)。

対応方法は 可変スプレッドでバックテストする方法 にまとめています。

原因5:手数料とスワップ

手数料:RAW/ECN系口座はスプレッドが狭い代わりに往復手数料が発生します。MT4の標準テスターには入力欄がありません。

往復手数料(1ロット)

pips換算(1pip=$10の通貨ペア)

$2.0

0.2 pips

$4.0

0.4 pips

$6.0

0.6 pips

$10.0

1.0 pips

スワップ:MT4のバックテストは、テスト実行時点のスワップ値を全期間に適用します。過去の金利環境は反映されません。数年のバックテストで、実際とは数百pips分ずれることがあります。

🚨 危険

日をまたぐポジションを持つEA(スイング系、ナンピン系)は、この点で構造的に過大評価されやすくなります。本メディアの調査でも、あるEAの購入者が「Overnight fees are also a killer(スワップが致命的)」とコメント欄で指摘している例が確認されています(編集部調査、2026年9月24日時点)。水曜3倍スワップも、日跨ぎ回数の多いEAでは効きます。

対処としては、①スワップの影響を分離して集計する、②日跨ぎしないEAなら無視する、③長期保有EAでは現在のスワップで再計算した保守的なシナリオも併記する、の3つが実務的です。

原因6:データの出所の違い

バックテストに使ったデータが、自分の業者のフィードとは限りません。

  • Dukascopyのデータ(TickstoryやTDSで取得)は、スイスの銀行系ブローカーのフィードです。スプレッド水準も値飛びも自分の業者とは違います。
  • MT5の実ティックは自分の業者のデータですが、業者が保持している期間しか遡れず、実ティックが無い区間は生成ティックにフォールバックします。
  • MT4の標準M1データは業者が配信したもので、欠損が多いのが普通です。

同じEAでも、A社のデータとB社のデータで結果が変わります。これは誤差ではなく、そもそも別の市場をテストしているということです。詳細は MT5のリアルティックと疑似ティック へ。

原因7:過剰最適化

ここまでの6つをすべて埋めても、パラメータが過去データに合わせ込まれていれば、未知の期間では崩れます。

判定の基本は「最適化に使っていない期間で成績が保たれるか」です。OOSのプロフィットファクターがISの70%を下回るなら、そのパラメータは採用できません。9つの判定基準は カーブフィッティングとは 、手順は ウォークフォワード分析のやり方 にまとめています。

数字で見る乖離のインパクト

7つの原因がどの程度効くのかを、1トレードあたりのコストに換算して並べます。EURUSD・1ロット・1pip=約1,000円として計算した場合の目安です。

原因

1トレードあたりの悪化(目安)

年間1,000トレードでの影響

スプレッドの過小評価 0.5pips

0.5 pips

約50万円

片道スリッページ 0.3pips × 2

0.6 pips

約60万円

往復手数料の計上漏れ $6

0.6 pips

約60万円

約定拒否による機会損失(仮に3%)

—

トレード数が3%減少

※ 金額はあくまで換算上の目安であり、実際の損益を示すものではありません。通貨ペア・ロット・為替水準で変わります。

この表が示すのは、3つの見落としが重なると1トレードあたり1.7pips前後の差になるということです。期待利得が2pipsのEAなら、利益の大半が消えます。逆に期待利得が30pipsのスイングEAなら、影響は相対的に小さくなります。

💡 ポイント

自分のEAの期待利得(1トレードあたり平均損益)をpipsで把握しておくと、乖離の影響度が一目で分かります。期待利得がコスト悪化の想定値の3倍を下回るEAは、実運用で安定させるのが難しいと考えてください。期待利得はバックテストレポートに「Expected Payoff」として表示されます。EA成績指標チェッカーでも確認できます。

乖離が小さいEA・大きいEAの特徴

特徴

乖離しにくい

乖離しやすい

1トレードの値幅

数十pips以上

数pips

エントリー方法

指値中心

成行中心

取引時間帯

流動性の高い時間帯

早朝・指標発表時

損切り幅

広い(ストップレベルの影響を受けない)

狭い

ポジション保有時間

数時間〜数日

数秒〜数分

損切りの有無

全トレードにハードな損切りあり

損切りなし・ナンピンで回復

最後の行は特に重要です。損切りを置かないナンピン・マーチンゲール系EAは、バックテストでは残高ベースのドローダウンが小さく見えますが、含み損は有効証拠金にしか現れません。 実運用では証拠金維持率に直結します。挙動の確認には ナンピンマーチン破綻シミュレーター 、リスクの整理は マーチンゲールEAのリスク を参照してください。

乖離を実測して定数化する手順

原因を推測するより、自分の口座で測るほうが確実です。

  1. 同じ期間・同じパラメータで、バックテストとリアル(またはデモ)の約定履歴を用意する。 MT4/MT5の口座履歴をCSVで書き出します。
  2. 1トレードずつ突き合わせる。 同じシグナルで発生したトレードを対応付けます。
  3. エントリー価格の差を集計する。 これがスリッページです。平均と最悪値を出します。
  4. エントリー時刻の差を集計する。 これが遅延です。
  5. バックテストにあってリアルに無いトレードを数える。 これが約定拒否・ストップレベル違反です。
  6. 1トレードあたりの総コスト悪化をpipsで算出する。 「(3)の平均 + (5)による機会損失の按分」で概算します。
  7. その値をバックテストのスプレッドに上乗せして再実行する。 リアルの成績と整合するなら、その定数が自分の環境のコストです。
  8. 以後、すべてのEA評価にその定数を適用する。

💡 ポイント

この定数は業者・口座タイプ・VPSの組み合わせごとに違います。一度測っておけば、以後のEA評価が格段に速くなります。新しいEAを検討するたびに「この環境では1トレードあたり0.8pips余分にかかる」と分かっていれば、バックテストの期待利得がそれを下回る時点で検討から外せます。

デモとリアルでも差が出る

⚠️ 注意

デモサーバーは約定を常に通すため、オフクォート・リクオート・スリッページがほぼ発生しません。スキャルピングEAではデモとリアルで成績が半分になることも珍しくありません。 デモフォワードが良好でも、少額リアルでの検証段階を省略しないでください。

段階的な進め方は フォワードテストの設計 にまとめています。

乖離の方向で原因を絞り込む

乖離のパターン

疑うべき原因

リアルの平均利益だけが小さい

スリッページ、スプレッド(原因1・4)

リアルの勝率だけが低い

ストップレベル、損切りの滑り(原因2)

リアルのトレード数が少ない

約定拒否、遅延によるシグナル取り逃し(原因2・3)

リアルのトレード数が多い

パラメータや時間設定の相違、サーバー時間のずれ

最初は合っていたが徐々に乖離

過剰最適化、相場環境の変化(原因7)

特定の時間帯だけ乖離

スプレッド拡大時間帯、サーバー時間のずれ(原因4)

サーバー時間のずれは見落とされやすい原因です。確認方法は サーバー時間の確認 、夏時間の扱いは 夏時間切り替えの影響 を参照してください。

よくある失敗

  • 「リアルが悪いのは相場が悪いから」で片付ける。 実測すれば原因は特定できます。
  • 乖離を見てEAのパラメータを変える。 原因がコストなら、パラメータ変更では解決しません。
  • バックテストを回し直して良い結果が出るまで条件を変える。 それは検証ではなく選別です。
  • 1か月で判断する。 30トレード程度では、乖離なのか通常のばらつきなのか区別できません。必要なトレード数は バックテストの期間は何年必要か を参照してください。
  • VPSとローカルPCで環境が違うまま比較する。 遅延条件が変われば結果も変わります。

まとめ

バックテストとリアルの乖離は、消すものではなく見積もるものです。スリッページ・約定拒否・遅延・スプレッド・手数料とスワップ・データの出所・過剰最適化。この7つのうち、テスターが扱えるのは一部だけです。

最も実務的な対応は、自分の口座で1トレードあたりのコスト悪化をpipsで実測し、定数として持っておくことです。その定数を入れてもプラスが残るEAだけを候補にする。この基準を持てば、販売ページの数字に振り回される機会は大きく減ります。

次は フォワードテストの設計 で実運用への進め方を、 Myfxbookの数字は信用できるか で公開実績の読み方を確認してください。指標の判定は EA成績指標チェッカー 、資金設計は 必要資金・許容DD計算機 が使えます。

よくある質問

Q.バックテストとリアルで成績が違うのは当たり前ですか?
差が出ること自体は正常です。MT4/MT5の標準テスターはスリッページも約定拒否も再現せず、常に要求価格で約定します。問題は差の大きさと方向です。リアルが常にバックテストを下回る、しかも下回り方が拡大していくなら、原因を特定する必要があります。
Q.デモ口座で検証すればリアルとの差は分かりますか?
部分的には分かりますが、十分ではありません。デモサーバーは約定を常に通すため、オフクォート・リクオート・スリッページがほとんど発生しません。スキャルピングEAではデモとリアルで成績が半分になることも珍しくないため、少額リアルでの検証段階を省略できません。
Q.乖離の原因はどうやって特定しますか?
リアルの約定履歴とバックテストの約定履歴を、同じ期間で1トレードずつ突き合わせます。エントリー価格の差(スリッページ)、エントリー時刻の差(遅延)、そもそもエントリーしていないトレード(約定拒否)の3つに分類すると、どこに原因があるかが見えます。
Q.業者を変えれば乖離は小さくなりますか?
小さくなる場合があります。スプレッド、ストップレベル、約定速度、フィードの質は業者と口座タイプで変わるためです。ただし業者を変えても、約定遅延やスリッページがゼロになることはありません。まず自分の口座で約定品質を実測し、どこに差があるかを特定してから判断してください。

関連記事