OptiNod アカデミー

バックテストでは勝てるのに実売買では勝てない理由 — シグナルと執行の差

バックテストの良好な期待値は売買ルールによるものです。実際の損益はルールをどれだけ守ったかで変わり、その差はRで測定できます。

バックテストで確認した良好な期待値は売買ルールにあります。実際の損益を分けるのは、取引時にそのルールをどれだけ守ったかです。


バックテストで期待値がプラスの戦略でも、実口座で損失を出すことは珍しくありません。バックテストが測ったのは、エントリーと決済のルールそのものの期待値です。決まった時点に決まった価格で入って出ます。一方、実売買の損益には、人の判断がそのルールに加わります。


この違いを「戦略は実際には通用しない」とまとめ、戦略のせいにすることがあります。戦略だけに原因を求めれば、改善策は戦略の交換しかありません。しかし、同じ人が新しい戦略を作っても、同じ取引習慣から同じ差が生まれます。原因を取り違えれば、何度変えても問題は残ります。


実売買の期待値は、バックテストの期待値から2種類の差を引いたものです。一つは機械的な差、もう一つは執行の差です。機械的な差は手数料、スリッページ、約定時点、ルックアヘッドから生じます。執行の差はルールを実際の取引へ移すときに人の判断が入ることで生じます。


このシリーズが扱うのは執行の差です。まず大きさを数値化してこそ、どのバイアスから直すかを決められます。この記事では差をRで測る方法と、シリーズの各記事の位置付けを説明します。


同じ戦略でも期待値は二つに分かれます


バックテストの期待値は、過去データでエントリールールが生んだ平均損益です。ルールはシグナルの足で入り、損切り、目標、決済シグナルで閉じます。ためらいも、遅れたエントリーも、早すぎる決済もありません。この前提では、戦略が出せる最良の結果です。


実売買の期待値は、同じルールを人が実行した結果です。エントリーはシグナルから数本遅れ、決済は計画より早くなったり遅くなったりします。損切りを守る場合もあれば、先延ばしする場合もあります。ルールは同じでも約定が違うため、二つの期待値は離れます。


つまり「戦略は実際には通用しない」には、ルール自体の問題と、その実行段階の問題が混ざっています。分けずに考えると、健全なルールを捨て、同じ執行習慣を新しいルールへ持ち込むことになります。二つの期待値をそれぞれ数値で書くまでは、どちらに問題があるか分かりません。


機械的な差にはすでに測定方法があります


バックテストと実売買の期待値の差は二つに分かれます。一つ目は機械的な差です。人の判断とは無関係に、バックテストの仮定と実際の市場が異なることで生じます。


  • 手数料とスリッページ:バックテストではゼロか低めに見積もった取引コストが、実売買では約定のたびに発生します。スリッページ・手数料・流動性でその大きさを扱います。
  • 約定時点:バックテストは終値や次の足の始値など、仮定した価格で約定します。実際の約定価格は異なります。バックテストと実売買で損益曲線が分かれる点を整理します。
  • ルックアヘッドとリペイント:バックテストでは完璧に見えたシグナルが、リアルタイムには存在しなかった可能性があります。ルックアヘッドとリペイントがその例を扱います。

この三つはルールを完璧に守っても残る差で、心理とは無関係です。そのため、このシリーズでは詳しく掘り下げません。ただし執行の差を測るには、先に機械的な差を取り除く必要があります。残った部分を初めて人の判断によるものとみなせます。


残りの差はルールを実行する人から生まれます


機械的な差を除いても残るのが執行の差です。同じシグナルを受けた人がルールと異なる行動をした部分です。


2024年11月初め、ビットコインは約69,000ドルから上昇を始め、12月17日に108,353ドルに達しました。約57%の上昇です。トレンド追随ルールなら序盤のシグナル足で入り、終了シグナルまで保有します。しかし、同じ期間の実際の取引は、いくつもの形でルールから外れます。


  • エントリーが遅れる。シグナル足を逃し、すでに上がってから入ると、損切り幅は変わらないのに目標までの距離が縮み、損益比が下がります。この遅れはFOMOによる追いかけ買いで扱います。
  • 決済が早まる。数日で得た8%の利益を守ろうと急いで閉じれば、+57%まで伸ばせた平均利益を+8%に縮めます。この習慣は処分効果で扱います。
  • 損切りが遅れる。下落中に予定した損切りを延ばすと、1Rで終わるはずの損失が何倍にも膨らみます。2025年10月6日の126,200ドル付近の高値で損切りを先延ばししたポジションは、11月21日の80,600ドルまで、約36%の損失になり得ました。
  • 取引回数が増える。損失を取り返す圧力からエントリー基準を緩めると、取引とそのたびのコストが増え、期待値を削ります。

同じ一度の上昇でも、これら四つの執行は異なる損益を生みます。一つのルールから結果が分かれる理由です。数値化しなければ、口座が減る原因がルールなのか執行なのか判断できません。


計画した決済と実際の決済の差
計画した決済と実際の決済の差

執行の差はRで測ります


執行の差を感覚のままにすると、何を直すべきか曖昧です。取引記録があれば、期待値を二度計算して測定できます。


一取引の期待値は、勝率に平均利益Rを掛けた値から、負ける割合に平均損失Rを掛けた値を引きます。Rは一取引で予定した損切り幅を1とする単位です。計算方法は期待値にまとめています。


一度は実売買の全件で、もう一度はルールを守った取引だけで計算します。ルールを守った取引とは、シグナル時点で入り、予定どおり損切りと目標を守ったものです。二つの値の差が執行の差の大きさです。遵守した取引の期待値が全体より明らかに高ければ、ルールから外れた取引が口座を圧迫しています。


例えば遵守した取引の期待値が+0.30R、実売買全体の期待値が+0.05Rなら、執行の差は0.25Rです。ルールから外れることで、一取引あたりの期待値が0.25R削られた計算です。バックテストの期待値が+0.40Rなら、残る0.10Rは機械的な差です。この三つを並べると、不足分のうち執行が占める割合が数字で見えます。


バックテストの期待値から執行と機械的な差を引けば、実売買の期待値になります。三つをRで並べれば、どの差が大きいか一目で分かります。


  • バックテスト期待値: バックテスト結果から一取引あたりの期待値をRで記録します。
  • 実売買期待値: 実際の約定記録に同じ式を使い、一取引あたりの期待値をRで記録します。
  • 差を分解: 二つの値の差を機械的な差と執行の差に分けます。
  • ルール遵守の記録: 全取引を遵守・違反に分け、各グループの期待値を別々に計算します。
  • 違反理由の分類: ルールから外れた各取引について、遅いエントリー、早い決済、損切り未実行、過剰取引のどれかを記録します。

バックテストと実売買の期待値の差
バックテストと実売買の期待値の差

二つの落とし穴


執行の差をすべて心理のせいにする誤解。 遵守した取引と全取引の期待値の差にも、機械的な差が混ざり得ます。手数料やスリッページを除かず、残りをすべて心理によるものとすれば、その寄与を過大評価します。執行を測る前に、実際の取引コストを反映する必要があります。


少ない標本から結論を急ぐ誤り。 20件の取引で出した期待値の差は偶然だけでも大きく揺れます。遵守と違反の取引がそれぞれ十分に集まるまで、二つの期待値の差を確定した執行の差とするのは早すぎます。標本が少なければ差の符号さえ変わり得ます。


どのバイアスから直すかは数字が決めます


執行の差を測れば、それを生んだ違反理由から改善の順番が決まります。早い決済が多ければ処分効果と出口のルールを、遅いエントリーが多ければFOMOと入口のルールを、損失後の過剰取引が多ければリベンジ取引と取引回数の上限を先に見ます。このシリーズの各記事は一つのバイアスを取り上げ、取引記録にどう現れるか、事前のどんなルールで減らせるかを説明します。


順番を決めるのは気の持ちようではなく、測定した差です。バックテストと実売買の期待値をRで書き、機械的な差と執行の差に分けることが、このシリーズの出発点です。どのバイアスの損失が最大かは口座を眺める感覚では分かりません。取引記録の数字が教えてくれます。

自分の売買記録で確かめる

MT5の取引履歴レポートやTradingView戦略の取引一覧(CSV)を読み込むと、損益の分布と連敗区間を計算します。ログインしなくても分析できます。

自分の取引履歴を分析する 分析サンプルを見る