実データ検証:テスターで+1,397pips、口座で−2,434pips
机上の空論ではなく、実際の相場データで検証してみましょう。 ドル円(USDJPY)の5分足データを用い、典型的な「逆張りスキャルピングEA」を作成しました。 ボリンジャーバンドの行き過ぎやRSIの反転などを組み合わせ、3,456通りのパラメータを総当たり探索(最適化)し、直近1年(2025年)のデータで最も優秀な成績を出したルールを選び出しました。
これを、テスターの初期設定(スプレッド0・シグナル足の終値約定)と、現実の口座条件(通常スプレッド往復0.4pips・次の足の始値約定)の双方で、運用期間(2026年1〜6月の半年間)まで通して走らせた損益曲線が次のグラフです。
このグラフが示す現実は衝撃的です。
- テスターの条件(グレー線):学習期間(2025年)も運用期間(2026年1〜6月)も、絵に描いたような綺麗な右肩上がりを続けています。通算で+1,397pipsの利益を計上しました。
- 実際の口座条件(金茶線):学習期間の初日から一度も浮上することなく一直線に急降下し、運用期間には−2,434pipsの大赤字を記録しました。
さらに、期間をずらして39回分の運用テストを行っても、39回中39回(勝率0%)のすべてでマイナスに転落しました。 テスター上では完璧な右肩上がりだった戦略が、現実の取引環境では1回も勝てない完全な「資産破壊マシーン」へと化してしまったのです。
罠①:スプレッド0という「架空の楽園」
多くのバックテストツール(MT4やPythonの自作スクリプト等)では、初期設定のまま検証を回すとスプレッドが「0」に設定されているか、固定スプレッドの反映が漏れていることが多々あります。
スイングトレードのように1回の取引で100pipsや200pipsを狙う戦略であれば、0.4pips程度のスプレッドは損益全体の数パーセントに過ぎず、大勢に影響を与えません。 しかし、数pipsの利幅を狙うスキャルピングでは、0.4pipsの手数料は利益の20〜50%以上を削り取る致命傷になります。
スプレッド0の世界は、現実の相場には存在しない「架空の楽園」です。楽園の中でいくら最適化を重ねても、現実のブローカー口座に繋いだ瞬間にスプレッドという入場料を毎取引徴収され、資金は急速に枯渇します。
罠②:終値約定という「タイムトラベル」
スプレッド以上に厄介で、多くの開発者が見落としがちなのが「シグナル足の終値約定」です。
「5分足が確定した瞬間の終値で買いエントリーした」とプログラム上で仮定することは、一見論理的に思えます。 しかし、現実の市場メカニズムでは、足が確定した時点(Close)はすでに過去の瞬間です。 その足の終値を知った後に注文を発注した場合、実際に約定するのは早くても「次の足の始値(Open)」になります。
「終値と次の足の始値なんて、ほとんど同じではないか」と思うかもしれません。 しかし、スキャルピングのシグナルが出るような瞬間は、急激な値動きが発生していることが多く、終値から次の始値にかけて滑ったり(ギャップ)、気配値が動いたりします。 シグナル足の終値で約定させるシミュレーションは、実質的に「未来の価格を見てから過去に遡って注文を通すタイムトラベル(Look-ahead bias)」を行っているのと同じであり、現実には絶対に不可能な利益をバックテストに計上してしまうのです。
罠③:高頻度・微益スキャルピングの数学的脆弱性
今回の検証における最大の急所は、取引回数(13,828回)の多さと、1取引あたりの利益の小ささにあります。
テスター上でのこのスキャルEAの総利益は+1,397pipsでしたが、これを取引回数(約1万回)で割ると、1取引あたりの平均利益はわずか+0.14pipsしかありませんでした。 1回勝つごとに0.14銭(0.0014円)しか儲からない極めて薄い氷の上に立っていたのです。
そこに、往復0.4pipsのスプレッドと次足始値約定の現実が加わるとどうなるでしょうか。 +0.14pipsの微小なプラスは一瞬で消し飛び、1取引あたり−0.26pipsの確定的な赤字へと反転します。 そして、高頻度取引であるがゆえに、1万回以上の試行によってその赤字が確実に累積され、グラフのように美しいまでの直線を描いて破産へと突き進むのです。
どう検証すべきか:現実的なバックテストの3原則
こうした悲劇を避けるために、バックテストを行う際は必ず次の3原則を徹底してください。
- コストは初回の検証から必ず入れる:スプレッドゼロでのテストは一切行わず、平常時スプレッド(例: ドル円0.4pips)に加えて、深夜早朝や指標時の拡大、スリッページを考慮したストレステスト(1.0pips〜2.0pips)を必ず実施する。
- 約定は「シグナル足の次の足の始値(Open)」以降にする:足の確定を待ってシグナルを判定する場合、約定価格は次の足の始値、あるいはそれ以降のティックで執行するコードにする。
- 1取引あたりの期待利得(pips)を点検する:総pipsだけでなく、必ず「総利益 ÷ 取引回数」を計算する。1取引あたりの平均利益がスプレッドの数倍以上(デイトレードなら3〜5pips以上、スイングなら10pips以上)確保できない戦略は、実運用では手数料負けするリスクが高すぎます。
本サイトの中級コース「過剰最適化対策」(全19回)では、こうした取引コストや約定のズレがバックテストの順位や将来予測に与える影響を、第9回「コストと約定の現実:0.4pipsで消える聖杯」でさらに深く掘り下げて解説しています。 興味のある方は、ぜひコースの第1回「過剰最適化とは:バックテストが良すぎると危険な理由」から順にお読みください。