研究所TOP棄却アーカイブ / 検証手法
検証手法ノート — 執行コストの計上 検証環境の欠陥

「MT5の方がPythonより成績が良い」は、
合格ではなく危険信号

検証中のあるセッション境界戦略で、MT5ストラテジーテスターは PF 2.74、Python は PF 2.48 でした。 「実機の方が良いのだから問題ない」——そう判断しかけた事例です。 今回あらためてテスターの実効スプレッドを逆算したところ 0.34 pip。同じ時刻の実測スプレッドは中央値 1.9 pip、悲観値 6.68 pip で、 約6分の1しか計上されていませんでした。 方向性の効果そのものは3通貨で統計的に実在しましたが、実測コストを入れると期待値は残りませんでした。 逆算の手順と、実測したスプレッドの構造を公開します。

対象 USDJPY / EURJPY / GBPJPY(H1) 検証 2020–2025 環境 IC Markets MT5・1分足OHLCモデル コスト実測 Dukascopy BID/ASK 2022–2025
見かけの判定(MT5 vs Python)
PF 2.74 > 2.48
MT5の方が良い=合格に見えた
テスターの実効スプレッド(逆算)
0.34 pip
同時刻の実測 p50 は 1.9 pip(約6倍の乖離)
実測コスト後
期待値なし
方向性は3通貨で有意(p≤0.008)だがコスト後に消滅

01何が起きていたか

検証対象は「週次市場再開の2時間目にJPYクロスを買い、1時間後に決済する」という単純な規則です。 時刻×曜日の120マス走査から出てきたもので、Bonferroni補正後も有意(p=0.04)でした。 JPYクロス3ペアで一貫し、非JPYペアでは効かない——という性質も持っていました。

MT5移植後の照合では MT5 PF 2.74 > Python PF 2.48「実機の方が良いのだから問題ない」と判断しかけました。これが誤りでした。

本記事の主張

バックテストがPythonより良く出たとき、それは実力ではなく「テスターが何かを計上していない」可能性を先に疑うべきです。 特にセッション境界・週明け・指標時刻を狙う戦略では、スプレッドの再現性が結果を支配します。

02テスターの実効スプレッドは逆算できる

難しい作業ではありません。同じ規則を、同じ期間・同じ価格データで3通り測るだけです。

  1. MT5テスターの実約定を取り出す(レポートの約定一覧から、買値と売値の差)。本件は306取引・平均 +5.74 pip。
  2. 同じ窓をヒストリカルCSV上で計算する。テスターと同じ「バー始値で入り、次のバー始値で出る」窓で +6.08 pip。
  3. 差を取る。6.08 − 5.74 = 0.34 pip。これがテスターが実際に課したコストです。

あとは、その時刻の実測スプレッドと比べます。本件のエントリー時刻(週次市場再開の1時間後ちょうど)の USDJPY実測スプレッドは、中央値 1.9 pip・悲観値 6.68 pipでした。

MT5テスターの実効スプレッドと実測スプレッドの比較
図1:MT5テスターが実際に課したコスト(逆算値 0.34 pip)と、同じ1分間の実測スプレッド。実測は Dukascopy の BID/ASK 1分足から、週次再開+60分ちょうどの分だけを2022–2025年の日曜206日分について集計した値。テスターは実測中央値の約6分の1しかコストを計上していませんでした。

03なぜ週明けだけ極端なのか — スプレッドの正常化曲線

週次市場再開の直後は流動性が最も薄く、スプレッドが平常時の10〜20倍に達します。 そして2〜3時間でほぼ下限まで戻り、それ以降は10時間経ってもほとんど改善しません

週次市場再開後のスプレッド正常化曲線
図2:週次市場再開からの経過時間別スプレッド(Dukascopy BID/ASK 1分足の実測・2022–2025年、日曜208〜210日/月曜209日分)。再開直後は USDJPY で p95 16.5 pip、GBPJPY で 40.7 pip。正常化は+2〜3時間でほぼ完了し、それ以降は改善しません。「もう少し待てば安くなる」という余地は3時間で尽きます。

重要な補足があります。この曲線は1時間を平均した値です。 実際に「その1分ちょうど」に約定する戦略のコストは、これよりおよそ2倍悪化します。 本件でも、+1時間帯の平均は 1.0 pip でしたが、+60分ちょうどの1分では 1.9 pip でした。 時刻を固定する戦略のコスト評価に、時間帯平均を使ってはいけません。

04機序は本物だった。それでも死んだ

誤解のないよう明記します。この戦略の方向性の効果そのものは実在しました。 価格系列の性質による機械的な成分を除いた上で、3通貨すべてで有意でした。

表1:週次再開の2時間目にJPYクロスを買い1時間保有した場合の成績(生M1データ・2020–2025・各315週前後)。方向性成分はスプレッド収縮の機械的寄与を除去した値。グロスは3通貨とも有意だが、実測コスト後に有意な正の期待値は残らない。
通貨ペア方向性成分(グロス)実測コスト後(平均)実測コスト後(悲観)
USDJPY+3.16 pip(p=0.0002)+1.34 pip(有意でない)−2.74 pip
EURJPY+3.45 pip(p=0.0001)−0.47 pip−3.97 pip
GBPJPY+4.10 pip(p≈0.008)−2.99 pip−8.42 pip

3通貨の方向性成分が +3.16 / +3.45 / +4.10 とほぼ揃うことは、これが3ペアに共通する単一の現象であることを示しています。 機序は本物でした。問題は、その現象が最も高いコストを払う瞬間にしか現れないことでした。

05では何が可能なのか — 損益分岐は √(取引回数)で決まる

ここから先が、この失敗から得られた最も有用な部分です。 「生き残るのに必要なグロスSharpe」は、次の1行で決まります。

BREAKEVEN

損益分岐グロスSharpe = √(年間取引回数) × (1取引の往復コスト ÷ 1取引あたりリターン標準偏差)

年間コストは取引回数に比例して増えますが、年間ボラティリティは√(取引回数)でしか増えません。だから頻度が上がるほど不利になります。

取引頻度別の損益分岐グロスSharpe
図3:保有期間×取引頻度別の損益分岐グロスSharpe(JPYクロス5ペア+GBPUSD・実測コスト・2020–2025の中央値/対数軸)。束縛条件は保有期間ではなく取引頻度です。保有1時間でも、毎時取引なら 11.22 が必要で不可能ですが、週1回に選別すれば 0.86 まで下がります。

この表は、よくある理解を正確に切り分けます。「短期売買はコストで無理」は半分だけ正しい。 正しくは「高頻度取引はコストで無理。保有時間の短さ自体は問題ではない」です。

そして本件の解剖に戻ると——この戦略は週1回(年52回)・保有1時間で、損益分岐は 0.69。 実測のグロスSharpeは約 1.9 で、損益分岐を大きく上回っていました。 それでも死んだ理由は頻度でも保有期間でもなく、約定するその1分がスプレッドの最悪値だったからです。

06自分の環境で確認する3ステップ

  1. テスターの実効スプレッドを逆算する。「MT5の実約定平均」と「同じ窓をCSV上で計算した値」の差を取る。実測スプレッドと桁が違えば、そのバックテストのコストは信用できません。
  2. エントリー時刻の「その1分」を測る。時間帯の平均ではなく、実際に約定する分のスプレッド分位を測る。セッション境界なら2〜6倍になります。
  3. 損益分岐グロスSharpeを計算する。√(年間取引回数)×(往復コスト ÷ 1取引σ)。この値を超えられない戦略は、統計的に有意でも生き残りません。

07この記録の限界

本記事の数値は、当研究所が到達した過程そのままではありません。この再検証では、独立した監査工程で 4回にわたり計算上の誤りが検出され、そのつど訂正しています(価格系列の基準の取り違え、スプレッド測定窓の取り違え、 起点定義の不一致、単位の不整合)。掲載しているのは訂正後の値です。

また、テスターのスプレッド再現性は実行モデルとブローカーのヒストリカルスプレッド記録に依存します。 本件は IC Markets・1分足OHLCモデルでの実測であり、ティックデータモデルや他ブローカーでは異なる可能性があります。 実測スプレッドはDukascopy(ECN系)由来で、一般的なブローカーの提示スプレッドとは水準が異なります。

当研究所の方針

バックテストの好成績を発表するのではなく、それが崩れる条件を先に開示することを方針としています。 本件は検証工程で自ら発見した計上漏れの記録です。同じ誤りを他の方が繰り返さないために公開します。

検証条件: 対象=USDJPY / EURJPY / GBPJPY(H1)/成績評価期間=2020–2025(生M1データ・BID基準)/ スプレッド実測=Dukascopy BID/ASK 1分足・2022–2025(日曜206〜210日、月曜209日)/ MT5テスター=IC Markets・1分足OHLCモデル・ヒストリー品質100%・USDJPY 2020–2025(306取引)/ 往復コストは実測スプレッド+ECN手数料1.0 pip。 掲載した数値はすべてPythonおよびMT5 Strategy Testerの実測値であり、フォワードテスト・実口座運用の結果ではありません。

免責: 本ページは検証プロセスと棄却記録の開示を目的とした研究ノートです。投資助言ではありません。 バックテスト結果は過去データに基づくものであり、将来の利益を保証するものではありません。FX取引には元本割れのリスクがあります。 図表はすべて実測データ(検証レポート・実測スプレッドテーブル)からPythonで再描画したものであり、生成AIによる作画は含みません。