MT5 EAの検証では、平均スプレッドだけでは実運用コストを過小評価する可能性があります。中央値、90%点、99%点を使って通常時と悪化時を分離し、バックテストの期待値と執行耐性を評価する方法を整理します。
平均値だけでは執行環境の悪化を捉えにくい
EAのバックテストでは、スプレッドを一定値または平均値として扱うと結果を理解しやすい。しかし実際のスプレッドは固定ではなく、取引時間帯、流動性、ロールオーバー、重要指標発表などによって変化する。
特に平均保有時間が短く、1回当たりの期待利益が小さい戦略では、通常時より数倍広いスプレッドが一部の取引で発生するだけでも成績が大きく変わる。そのため、平均値だけでなくスプレッドの分布を見ることが重要になる。
中央値を通常時の基準にする
中央値はデータを小さい順に並べたときの中央の値であり、極端に広いスプレッドの影響を平均値より受けにくい。
例えば過去のM1データからスプレッドを取得し、中央値を通常時のExecution Costとして設定する。この条件でバックテストした結果を、まず戦略本来の期待値を確認するBaselineとして利用できる。
ただし中央値だけではストレス時の執行を評価できないため、ここを最終結果としないことが重要である。
90%点で頻繁に起こる悪化を再現する
90%点は、観測したスプレッドの90%がその値以下に収まる境界である。言い換えれば、約10%の観測ではそれ以上にコストが広がっている。
この値を使ったテストは、極端な異常値ではないものの、実運用中に一定頻度で遭遇する悪化環境を再現するStress Scenarioとして利用できる。
中央値ではProfit Factorが十分でも、90%点のコストを適用すると期待値が急速に低下するEAは、取引コストへの感応度が高いと判断できる。
99%点はテールリスクを見る
99%点は、ロールオーバーや流動性低下などで発生する非常に広いスプレッドを評価するために使える。
すべての取引へ99%点を適用する必要はない。重要なのは、スプレッドが極端に拡大した場合に、損切り幅や期待利益に対してコストがどの程度の割合になるかを見ることである。
例えば平均利益が5pipsしかない戦略で数pipsのスプレッド拡大が発生すれば、シグナルの優位性よりExecution Costの影響が支配的になる可能性がある。
時間帯別に分布を分ける
さらに精度を上げるには、24時間を一つの分布として扱わず、時間帯ごとにスプレッドを集計する。
東京、ロンドン、ニューヨークの主要時間帯と日次ロールオーバー付近では流動性構造が異なる。EAが特定時間だけ取引するなら、その時間帯の中央値、90%点、99%点を使う方が実際の執行環境に近い。
EA側でも現在のSpreadがその時間帯の許容閾値を超えた場合、新規注文を停止するSpread Filterへ応用できる。
ATR比で銘柄間を比較する
XAUUSDの0.3ドルとEURUSDの1pipを数値だけで比較することはできない。そこでSpreadをATRで割り、現在の値動きに対する取引コスト比率として評価する方法がある。
例えばSpread ÷ ATRが大きい銘柄や時間帯では、価格変動に対して執行コストの比率が高いことを意味する。同一EAを複数銘柄へ展開する場合、絶対Spreadよりもこの正規化指標の方が比較しやすい。
3つのコスト条件を並べて検証する
実務では、中央値、90%点、99%点を単一の最適値として選ぶのではなく、複数シナリオとして比較する。
Baselineでは中央値、Stressでは90%点、Extremeでは99%点を利用し、Net Profit、Profit Factor、最大Drawdown、平均損益、取引回数がどの程度変化するか確認する。
中央値から90%点へ変更しただけで利益が消える場合、そのEAはシグナルより取引コスト条件へ依存している可能性がある。反対に、コストを悪化させても期待値が維持される戦略は執行条件に対する耐性が高いと評価できる。
まとめ
実スプレッドは一定ではなく分布を持つため、平均値だけでEAを評価すると悪化局面の取引コストを見落とす可能性がある。
中央値を通常環境、90%点をストレス環境、99%点をテール環境として分離し、さらに時間帯やATR比を組み合わせることで、バックテストをより実運用に近い検証へ発展させられる。重要なのは最も良いコスト条件で利益が出ることではなく、執行条件が悪化しても戦略の期待値がどこまで残るかを確認することである。







