バックテストで良い結果が出た。いざフォワードで動かしたら全然違う。
EA運用でよく聞くパターンです。
この乖離の原因はいくつかありますが、意外と見落とされているのがスプレッド設定です。
バックテストのスプレッドを固定値で設定している場合、実際のフォワードとの間にギャップが生まれます。このギャップがPFやDDの乖離につながります。
EA-LabではGENESIS・凜・AXISの開発過程で、スプレッド設定に何度も向き合ってきました。
「バックテストでは勝っているのにフォワードで勝てない」という問題の一端がスプレッドにあることを、実際の開発経験から確認しています。
この記事では、MT5のバックテストにおけるスプレッド設定の考え方と、リアルに近づけるための方法を解説します。
スプレッドとは何か
スプレッドとはFX取引における買値(Ask)と売値(Bid)の差です。
たとえばGBPUSDのスプレッドが2pipsだとすると、エントリーした瞬間に2pips分のコストがかかります。
1回あたり2pipsのコストは小さく見えますが、月20回トレードするEAであれば月40pips、年間480pipsのコストになります。これがPFに与える影響は無視できません。
スプレッドの重要性についてはこちらで詳しく解説しています。
MT5バックテストのスプレッド設定の仕組み
MT5のストラテジーテスターでバックテストを行うとき、スプレッドの設定方法は主に2つあります。
①固定スプレッドで設定する
テスター画面で「スプレッド」の数値を手動入力します。この場合、バックテスト期間中ずっと同じスプレッドが適用されます。
操作はシンプルですが、現実のスプレッドは常に変動しているため、乖離が生まれやすいという問題があります。
②「現在のスプレッド」または「可変スプレッド」を使う
ブローカーによってはティックデータに実際のスプレッド情報が含まれており、バックテスト時にそのスプレッドを使用できます。
こちらの方がリアルに近い検証が可能ですが、使用できるかどうかはブローカーとデータ品質に依存します。
固定スプレッドの何が問題なのか
固定スプレッドで設定する場合の最大の問題は、スプレッドが拡大する局面を考慮できないことです。
実際のFX取引では、スプレッドは常に変動しています。
通常時は狭いスプレッドでも、以下のような局面では大幅に拡大します。
- 重要指標発表前後(米雇用統計・FOMC・CPIなど)
- 流動性が低い時間帯(市場クローズ前後・深夜早朝)
- 突発的なニュースや地政学的リスク発生時
GBPUSD(GENESISの対象通貨ペア)は特にボラティリティが高い通貨ペアのため、スプレッドの拡大幅も大きくなりやすいです。
バックテストで2pips固定に設定していても、実際のフォワードでは発表時に10pips以上に拡大することがあります。この差がそのままバックテストとフォワードの乖離として現れます。
GENESIS開発でスプレッドに苦労した話
GENESISのバックテスト検証中に、スプレッド設定の問題を直接経験しました。
当初、バックテストのスプレッドを2pipsで固定して検証していました。PFも安定していて「これで大丈夫」という手応えがありました。
しかしスプレッドを少し変えてみると数値が大きく変わることに気づきました。
試しに3pips・4pips・5pipsと変えてバックテストを回してみたところ、PFが想定より大きく下落するケースが出てきました。
GENESISはBOXブレイクアウト型で、エントリーとほぼ同時に反転するダマシのトレードも含まれます。こういった短時間で損切りになるトレードは、スプレッドの影響を特に受けやすいのです。
この経験から「バックテストのスプレッドは実際より少し広めに設定して検証する」という方針を取るようになりました。
凜・AXISでのスプレッド設定の考え方
凜(USDJPY・M5)とAXIS(EURUSD・M15)でも、スプレッド設定は重要な検証項目でした。
凜の場合
USDJPYは比較的スプレッドが狭い通貨ペアですが、アノマリー型EAという特性上、特定の時間帯に集中してエントリーします。その時間帯のスプレッド状況をリアルに反映することが重要でした。
凜が使うアノマリーの時間帯が、スプレッドが広がりやすい時間帯と重なっていないかを確認することが開発での重要なチェックポイントになりました。
AXISの場合
EURUSDは主要通貨ペアの中では比較的スプレッドが安定しています。しかしトレンドフォロー型のロジックで、ポジション保有時間が長くなるケースがあります。保有中のスワップコストと合わせて、スプレッドの影響を考慮した検証が必要でした。
現実的なスプレッド設定の目安
ブローカーやタイミングによって異なりますが、EA-Labが参考にしているスプレッドの目安をお伝えします。
通常時の参考値(XMマイクロ口座)
GBPUSDは通常時で2〜3pips程度です。指標発表時は10pips以上に拡大することがあります。
USDJPYは通常時で1〜2pips程度です。比較的安定していますが、深夜や指標時は拡大します。
EURUSDは通常時で1〜2pips程度です。主要通貨ペアの中では最も安定しています。
バックテスト設定の推奨
EA-Labでは通常時の実スプレッドより1〜2pips広めに設定してバックテストを回すことを基本にしています。
理由は2つです。指標発表時のスプレッド拡大を部分的に考慮できること、そして「バックテストより悪い条件でも機能するか」を確認することです。
バックテストで少し厳しい条件を設定しても機能するEAの方が、フォワードでの再現性が高くなります。
スプレッドだけでなく「約定品質」も見る
スプレッドと合わせて確認すべきなのが約定品質です。
バックテストでは理想的な価格で約定しますが、実際のフォワードでは約定スリッページが発生することがあります。
スリッページとは、注文した価格と実際に約定した価格のズレです。特に指標発表時や流動性の低い局面では、意図した価格で約定しないケースがあります。
スリッページについてはこちらで詳しく解説しています。
スプレッドの設定を厳しめにするのと同時に、<strong>約定品質の良いブローカーを選ぶこと</strong>もバックテストとフォワードの乖離を減らす重要な要素です。
バックテストとフォワードの乖離を最小化するために
スプレッド設定以外も含めて、バックテストとフォワードの乖離を最小化するためにEA-Labが意識していることをまとめます。
①スプレッドは実測値より広めに設定する
通常時の実スプレッドに1〜2pips上乗せした値でバックテストを回します。
②長期バックテストで検証する
様々な相場環境・ボラティリティ・スプレッド状況を含む長期データで検証します。EA-Labでは基本的に10年バックテストを実施しています。
③複数のスプレッド値でテストする
1つのスプレッド値だけでなく、狭い値・標準値・広い値の3パターンでバックテストを回します。どの設定でもある程度機能するEAの方が、フォワード耐性が高いです。
④フォワードで継続的に確認する
バックテストがどれだけ精密でも、リアル相場での検証は不可欠です。フォワードでバックテストとの乖離が大きい場合、スプレッド設定の見直しが必要なサインです。
バックテストの信頼性については以下の記事が参考になります。
フォワードテストとの正しい比較方法はこちらで解説しています。
まとめ
バックテストのスプレッド設定は、フォワードとの乖離を左右する重要な要素です。
固定スプレッドで設定する場合は、実際のスプレッドより1〜2pips広めに設定することを推奨します。指標発表時のスプレッド拡大を完全には再現できませんが、より現実的な検証が可能になります。
EA-LabのGENESIS・凜・AXISでも、スプレッド設定はバックテスト検証の重要なチェックポイントのひとつです。開発経験から言うと、バックテストで少し厳しいスプレッドでも機能するEAほど、フォワードでの再現性が高い傾向があります。
バックテストとフォワードの乖離が気になる方は、まずスプレッド設定の見直しから始めてみてください。
【関連記事】EAの評価に関する重要記事
EAを評価する際は、プロフィットファクター(PF)だけでなく、最大ドローダウン(DD)や取引回数など複数の指標を総合的に確認することが重要です。まずはこちらの記事をご覧ください。
