【開発録】バックテストの数字はなぜ甘くなるのか。スプレッド・スリッページという物理摩擦の実態
美しい資産曲線を描くバックテスト結果と、実弾投入後に削られていく実際のパフォーマンス。この乖離の正体を突き詰めていくと、多くの場合、プログラムのロジックそのものではなく、検証環境が前提としている「理想的すぎる条件」に行き着く。今回は、この乖離の主要因であるスプレッドとスリッページという、2つの物理的な摩擦について記録しておきたい。前回までに記録してきた3軸検証のうち、生存性の軸を支える最も基礎的な部分でもある。
1. バックテストという「理想環境」の前提
バックテストツールの多くは、デフォルト設定においてスプレッドを固定値として扱い、スリッページをゼロとして計算する。これは計算処理を単純化するための仕様であり、悪意があるわけではないが、結果として実際の相場が持つ摩擦を過小評価した数値が算出されることになる。
この前提を理解せずにバックテスト結果だけを鵜呑みにすると、実運用に投入した瞬間、想定していた期待値が音を立てて崩れていく。ロジックが破綻したのではなく、そもそも検証条件と実運用条件のあいだに、埋めがたいギャップが存在していただけである。この構造を理解しないまま「ロジックが悪い」と判断してしまうと、本来なら改善の余地があったはずの骨格ごと切り捨ててしまうことにもなりかねない。
2. スプレッドという摩擦:固定値計算の限界
スプレッド(買値と売値の差)は、通貨ペアや時間帯、市場の流動性によって常に変動している。平常時は狭くても、経済指標の発表時や流動性の薄い時間帯には、数倍から数十倍にまで一時的に拡大することがある。この変動幅の大きさこそが、固定値による計算モデルとの相性の悪さを生み出している。
固定値で計算されたバックテストでは、こうした「荒れた瞬間」のコストが正確に反映されない。特に、指標発表直後のブレイクを狙うようなロジックにとっては、このギャップが致命的になりやすい。バックテスト上では有利に見えたタイミングこそが、実運用では最もコストの高いタイミングだった、という逆転現象が起こり得る。平常時の平均スプレッドだけを前提にパラメータを最適化していると、この逆転構造そのものに気づく機会すら失われてしまう。
3. スリッページという摩擦:約定価格のズレ
スリッページは、発注価格と実際の約定価格との差である。相場が急変しているとき、あるいは大口の注文が集中しているときほど大きくなりやすく、その発生パターンは統計的にランダムというより、相場のボラティリティと強い相関を持つ。この相関関係を無視して一律の固定値で扱ってしまうと、最もリスクの高い局面での実コストを、著しく過小評価することになる。
多くのバックテスト環境では、このスリッページを無視するか、極めて小さい固定値で扱っている。しかし実運用では、注文が集中しやすい局面(指標発表時、相場急変時)ほどスリッページが拡大するため、ロジックがまさに機能してほしいタイミングで、最もコストがかさむという皮肉な構造が生まれる。優位性が最大化されるはずの瞬間に、摩擦も同時に最大化されるという、この非対称な関係を織り込まずに設計されたロジックは、実運用で期待値の逆転を起こしやすい。
4. 摩擦を織り込むと消える「見せかけの優位性」
スプレッドとスリッページを、平均的な水準ではなく、想定される最悪水準に近い形で織り込んで再検証すると、理想条件では十分だったはずの期待値が、大きく目減りする、あるいはマイナスに転じるロジックは少なくない。
これは、ロジックの本質的な欠陥というより、検証段階で摩擦を軽視していたことによる「見せかけの優位性」が剥がれ落ちた結果である。取引回数が多いロジックほど、この影響は複利的に積み重なり、致命傷になりやすい。1回あたりのコストとしては数pips程度の差であっても、年間数百回、数千回という取引回数を掛け合わせれば、資産曲線の傾き自体を大きく変えてしまうだけの規模になる。
5. ラボが検証で摩擦を最優先に扱う理由
以前の開発録で記録した通り、ラボの検証では「生存と摩擦の物理法則」を第1軸として位置づけている。これは偶然ではなく、ここまで記録してきた通り、摩擦への耐性こそが、ロジックが実運用で生存できるかどうかを左右する、最も基礎的な条件だと考えているからである。
エントリーロジックがどれほど洗練されていても、この摩擦を織り込んだ時点で優位性が消えるようであれば、それは机上の空論に過ぎない。逆に言えば、摩擦を織り込んでもなお優位性が残るロジックこそが、実運用に耐えうる最低条件をクリアしていると言える。だからこそラボでは、ロジックの巧拙を論じる前段階として、まずこの摩擦耐性を機械的にチェックする工程を設けている。
Semura Lab.が摩擦を軽視しない理由
我々Semura Lab.にとって、スプレッドとスリッページは、後から調整すればよい誤差ではなく、検証の最初の段階で必ず組み込むべき前提条件である。理想条件でのパフォーマンスを見せることは、開発の第一歩に過ぎず、そこから摩擦を織り込んで初めて、ロジックの本当の実力が見えてくると考えている。華やかな検証結果を先に見せてから摩擦の話をするのではなく、摩擦を織り込んだ数値こそを、最初に提示すべき本来の実力値だと位置づけている。この開発録では、今後もこうした地味だが本質的な検証プロセスについて、正直に記録していきたい。