バックテスト実務に関連するリスクは何ですか?
バックテストとは何か、なぜリスクが出てくるのか
バックテストは、ルールに基づくトレードの考え方を過去データに適用し、過去にどのような成績になり得たかを推定する分析手法です。この考え方は通常、エントリーとエグジットの条件、リスク管理、そして約定(約定される前提)に関する仮定として符号化されます。
主要なリスクは、バックテストは市場そのものではないという点です。バックテストは、入力(データ、ルール、コスト、執行の仮定)から作られた簡略化された再構成です。これらの入力が実際の条件と一致しない場合、結果は体系的に誤解を招く可能性があります。
メカニズム上のリスク:入力、モデリング、執行の仮定
バックテストは、概算はしやすいが再現が難しい運用上の詳細に依存します。
- データの品質と現実性: 過去の価格系列にはスプレッドが欠けていたり、粒度が変わっていたり、あるいは実際に受け取るはずだった取引可能な見積(クオート)と一致しないことがあります。バックテストで「クリーン」な価格を使っていても、実際の執行ではより広いスプレッドや、注文を出した瞬間の別の価格で約定するなら、成績の推定は変わってしまいます。
- 取引コストと流動性: 多くのバックテストはコストを過小評価します。手数料、コミッション、そして特に流動性の影響(たとえば、シグナルの時点から約定の時点までの間に価格が動くこと)によってリターンは減少します。コスト控除前にリターンが強く見えても、現実的なコストの後ではその差は拡大し得ます。
- 注文執行のモデリング: バックテストでは通常、予測可能な価格での約定を前提とします。実取引では、部分約定、キューの順番、スリッページ、そして注文がマーケット注文か指値注文かによって違いが生じます。約定ロジックが楽観的だと、シミュレーション上のエクイティカーブが実際のドローダウンを反映しないかもしれません。
- サンプリングとタイミングの誤差: バー終値のシグナルを、その同じバーの終値で実行できるかのように扱うことは、よくある不一致です。現実には、シグナルは価格更新の後にしか分からないため、執行は後のタイミングになります(または利用可能な別の価格で行われます)。
市場およびシナリオ上のリスク:歴史は安定し続けない
データと執行のモデリングが完璧でも、市場は変わり得ます。
- レジーム・シフト: FXの挙動は、ボラティリティのレジーム、マクロの期間、流動性の条件によって異なることがあります。ある過去のレジームで機能したルールが、別のレジームでは失敗するかもしれません。
- 非定常な関係: スプレッドが拡大したり、相関が変化したり、ボラティリティの分布が変わったりすると、統計的なパターンは弱まる可能性があります。バックテストは「過去の条件下で何が起きたか」を測れるとしても、「次に何が起きるか」を測れるわけではありません。
重要な制約:過去の関係は将来の結果を保証しません。
カウンターパーティおよびオペレーショナル上のリスク:シミュレーションが見落としがちなもの
バックテストは通常、価格やルールに焦点を当て、取引の実務上の制約にはあまり踏み込みません。
- プラットフォームと接続の制約: 遅延、拒否された注文、または一時的な障害によって、モデル化された通りに取引を発注したり決済したりできないことがあります。
- 証拠金、レバレッジ、リスク管理: 証拠金要件、強制ロスカット(強制清算)の挙動、またはリスク制限がシミュレーションと異なる場合、結果は実際には達成できない可能性があります。
- カウンターパーティに関連する制約: 実取引では、過去の価格のみによっては表現されない運用プロセスや執行ポリシーの影響を受けることがあります。
これらのリスクは、バックテストのレポートでは必ずしも見えませんが、ストレスのかかった局面では結果を支配することがあります。
解釈上のリスク:過剰適合、ハインドサイト・バイアス、誤解を招く確信
大きな失敗要因は数学ではなく、解釈です。
- 過剰適合(オーバーフィッティング): パラメータを繰り返し調整して過去データに合わせると、バックテストは持続可能なシグナルではなくノイズを捉えてしまうことがあります。過剰適合したルールは、新しいデータでは急速に劣化する可能性があります。
- ハインドサイト・バイアス: 過去を「見てしまう」と、結果が一貫して見えるように仮定を選びたくなります。するとバックテストは、基礎となる優位性ではなく、選択プロセスを反映してしまうことがあります。
- 単一指標の確実性: 戦略は、(たとえば総リターンのような)1つの指標では利益が出ているように見えても、深刻なテールリスク(大きなドローダウン、長い負け連鎖、特定の条件への脆弱性)を隠しているかもしれません。
コントロール可能な確認としては、バックテストを仮説検定として扱い、ストレステストされた仮定やアウト・オブ・サンプルのデータの下でも、そのアイデアが妥当であり続けるかを問うことです。
証拠の例:結論を変え得る単純な不一致
あるルールが、各時間バーの終わりにシグナルを生成すると仮定します。バックテストでは、そのバーの終値でエントリーできると考えている一方で、現実にはクローズ後にしか注文を出せず、執行は次に利用可能な価格で行われるとします。この場合、エントリーは体系的に悪化します。