【ラボの開発視点】バックテストの解体 〜右肩上がりの幻想と実弾の「死の谷」〜
システムトレードやEA(自動売買)の開発領域において、我々Semura Lab.に共有されるテストデータの多くは、見事な右肩上がりのエクイティカーブを描いている。
しかし、精緻に最適化されたシステムを実弾(フォワード)環境へデプロイした直後、パフォーマンスが急激に劣化し「死の谷(バレー・オブ・デス)」へと陥る現象が頻発する。
本航海日誌では、エンジニアリングの視点からバックテスト環境の構造的限界を解体し、過剰最適化がもたらす脆弱性と、我々が「生存」のために採用する検証アーキテクチャについて記録する。
テスト環境とフォワード環境の構造的乖離
バックテストは、ロジックの優位性を確認するための必須プロセスである。しかし、そこには実相場に存在する「物理的な負荷」が内包されていない。
テスト環境という「無菌室」と、実弾環境という「荒波」の間には、以下のような明確なパラメーターの差異が存在する。
| 検証項目(ノイズ要因) | バックテスト環境(無菌室) | 実弾フォワード環境(現実) | システムへの構造的影響 |
| スプレッド変動 | 原則として一定、または限定的 | 指標発表時・ロールオーバー時の突発的拡大 | トレードごとの純利益(エッジ)の直接的な削り取り |
| 約定(スリッページ) | ゼロ遅延・指定価格での完全約定 | 流動性の増減に伴う約定遅延・価格の滑り | 期待値からのネガティブな乖離、ロジックの遅延 |
| ボラティリティ | 過去のヒストリカルデータに限定 | 未知の市場参加者による予測不能な流動性の偏り | 過剰適合したパラメーターの機能不全(ドローダウン) |
[図①:美しくカーブフィッティングされたバックテストのエクイティカーブと、スリップやスプレッド変動によってエッジが削り取られた実弾稼働データの比較]
排除されたノイズ(スプレッドや約定遅延)が実弾環境で顕在化した瞬間、右肩上がりの幻想は崩壊する。
カーブフィッティングが生み出す「死の谷」
インジケーターの変数を追加し、過去データに対してシステムを適合(カーブフィッティング)させれば、ドローダウンを極限まで抑え込むことは数理的に容易だ。
だが、過去の特定の波形に完全にアジャストされたシステムは、未知の相場変動に対する「遊び(許容度)」を持たない。結果として、テスト結果が美しければ美しいほど、実運用での微細なノイズに対応できず脆くも崩壊する。
堅牢性(ロバストネス)を担保するアーキテクチャ
我々Semura Lab.のプロセスデザインにおいて、見栄えの良いバックテスト結果は評価の対象ではない。最優先されるのは、過酷な実弾環境における「生存」である。
ドローダウンや連敗は、システムから排除すべきバグではなく、市場構造において不可避な「ノイズの受容」として初期設計(アーキテクチャ)に組み込まれなければならない。
不都合な事実(不利な年次データ等)を全て開示し、ブラックボックスを排除すること。市場のスクイーズやサージといった完全因果のロジックのみを抽出し、泥臭いWalk Forward Analysisの死の谷を這ってでも検証を続けること。
この引き算に基づく設計思想こそが、幻想ではない本物の堅牢性をシステムにもたらすのである。