検証中のあるセッション境界戦略で、MT5ストラテジーテスターは PF 2.74、Python は PF 2.48 でした。 「実機の方が良いのだから問題ない」——そう判断しかけた事例です。 今回あらためてテスターの実効スプレッドを逆算したところ 0.34 pip。同じ時刻の実測スプレッドは中央値 1.9 pip、悲観値 6.68 pip で、 約6分の1しか計上されていませんでした。 方向性の効果そのものは3通貨で統計的に実在しましたが、実測コストを入れると期待値は残りませんでした。 逆算の手順と、実測したスプレッドの構造を公開します。
検証対象は「週次市場再開の2時間目にJPYクロスを買い、1時間後に決済する」という単純な規則です。 時刻×曜日の120マス走査から出てきたもので、Bonferroni補正後も有意(p=0.04)でした。 JPYクロス3ペアで一貫し、非JPYペアでは効かない——という性質も持っていました。
MT5移植後の照合では MT5 PF 2.74 > Python PF 2.48。 「実機の方が良いのだから問題ない」と判断しかけました。これが誤りでした。
バックテストがPythonより良く出たとき、それは実力ではなく「テスターが何かを計上していない」可能性を先に疑うべきです。 特にセッション境界・週明け・指標時刻を狙う戦略では、スプレッドの再現性が結果を支配します。
難しい作業ではありません。同じ規則を、同じ期間・同じ価格データで3通り測るだけです。
あとは、その時刻の実測スプレッドと比べます。本件のエントリー時刻(週次市場再開の1時間後ちょうど)の USDJPY実測スプレッドは、中央値 1.9 pip・悲観値 6.68 pipでした。
週次市場再開の直後は流動性が最も薄く、スプレッドが平常時の10〜20倍に達します。 そして2〜3時間でほぼ下限まで戻り、それ以降は10時間経ってもほとんど改善しません。
重要な補足があります。この曲線は1時間を平均した値です。 実際に「その1分ちょうど」に約定する戦略のコストは、これよりおよそ2倍悪化します。 本件でも、+1時間帯の平均は 1.0 pip でしたが、+60分ちょうどの1分では 1.9 pip でした。 時刻を固定する戦略のコスト評価に、時間帯平均を使ってはいけません。
誤解のないよう明記します。この戦略の方向性の効果そのものは実在しました。 価格系列の性質による機械的な成分を除いた上で、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ペアに共通する単一の現象であることを示しています。 機序は本物でした。問題は、その現象が最も高いコストを払う瞬間にしか現れないことでした。
ここから先が、この失敗から得られた最も有用な部分です。 「生き残るのに必要なグロスSharpe」は、次の1行で決まります。
損益分岐グロスSharpe = √(年間取引回数) × (1取引の往復コスト ÷ 1取引あたりリターン標準偏差)
年間コストは取引回数に比例して増えますが、年間ボラティリティは√(取引回数)でしか増えません。だから頻度が上がるほど不利になります。
この表は、よくある理解を正確に切り分けます。「短期売買はコストで無理」は半分だけ正しい。 正しくは「高頻度取引はコストで無理。保有時間の短さ自体は問題ではない」です。
そして本件の解剖に戻ると——この戦略は週1回(年52回)・保有1時間で、損益分岐は 0.69。 実測のグロスSharpeは約 1.9 で、損益分岐を大きく上回っていました。 それでも死んだ理由は頻度でも保有期間でもなく、約定するその1分がスプレッドの最悪値だったからです。
本記事の数値は、当研究所が到達した過程そのままではありません。この再検証では、独立した監査工程で 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による作画は含みません。