バックテストは、トレードにおいて最も説得力のある嘘である。資産曲線は右肩上がりに傾き、勝率は健全に見え、ドローダウンも耐えられそうに感じられる。ところが実際にライブでトレードしてみると、そのエッジは静かに消え去ってしまう。これは運が悪かったわけではない。バックテストは、体系的かつ予測可能な形でライブパフォーマンスを過大評価するのであり、その失敗のパターンを知ってしまえば、もう驚かなくなる。

この記事は、あなたがすでにバックテストの実行方法を知っていることを前提としている。もしまだであれば、まずはトレード戦略のバックテスト方法についての姉妹記事を読んでほしい。そこでは仕組みやサンプルサイズ、フォワードテストについて扱っている。ここではさらに踏み込んで、より難しい問いを掘り下げる。すなわち、なぜバックテストが示す数字は、実際にあなたが稼ぐことになる数字よりも、ほとんど常に良く見えるのか、という問いだ。

バックテストは推定値ではなく、最良のケースにすぎない

核心的な問題は、バックテストが中立的な測定ではないということだ。それは、あなたが数十もの小さな選択を行った結果として生まれた出力であり、その選択の一つひとつに、結果へ楽観をにじませる余地があった。あなたは市場を選び、期間を選び、指標を選び、パラメータを選び、エグジットを選んだ。それぞれの判断は、何がうまくいったかをある程度知った上で下されたものだ。その知識こそが、汚染源なのである。

統計的に言えば、あなたが手にする結果は、起こりうる結果の分布からのランダムな抽出ではない。それは、多数のノイズを含んだ抽出の中の「最大値」なのだ。100個のものの中から最良のものを選ぶとき、あなたが測定しているのはスキルではなく、運の上位の裾野なのである。以下に示すのは、その上方バイアスを生み出す仕組みの一覧だ。

バックテストがライブパフォーマンスを過大評価する5つの方法

バイアス結果をどう膨らませるか見抜き方対処法
サバイバーシップ今日まで生き残った資産だけをテストするユニバースがポイント・イン・タイムかどうかを確認する上場廃止銘柄を含むデータセットを使う
ルックアヘッドトレード時点では知り得ないデータを使用するすべてのシグナルをそのタイムスタンプまでさかのぼって追跡するデータにラグを設ける。次のバーで約定させる
オーバーフィッティング多数のチューニング済み実行の中の最良結果は、運によって素晴らしく見えるパラメータ数と試行回数を数えるパラメータを減らす。アウト・オブ・サンプルでのテスト
コストの見落としスプレッド、スリッページ、手数料を無視する実際のコストを差し引いてすべて再計算するトレードごとの往復コストをモデル化する
レジーム依存ある一つの市場時代を市場の法則として符号化してしまうテストしたレートとボラティリティのレジームを確認する強気相場、弱気相場、高ボラティリティを横断してテストする

数字が嘘をつく5つの方法

1. サバイバーシップバイアス:勝者だけをテストしている

単純なアイデアをバックテストするとしよう。S&P 500銘柄の押し目を買う、というものだ。今日時点の指数構成銘柄を取得し、その価格履歴をダウンロードして、10%の下落のたびに買うシミュレーションを行う。結果は素晴らしいものになる。なぜなら、この戦略は常に回復しているように見えるからだ。しかし実際はそうではない。そう見えるのは、あなたのテストに含まれるすべての企業が、今日の指数に生き残っているからにすぎない。

S&P 500は年間おおよそ20社から25社が入れ替わる。20年間のバックテストでは、あなたが決して目にすることのない数百件の構成銘柄変更が存在することになる。あなたのテストは、リーマン・ブラザーズやベア・スターンズ、エンロン、ワシントン・ミューチュアルの押し目を一度も買っていない。なぜなら、それらは下落し続け、上場廃止となり、指数から消し去られたからだ。この戦略は、敗者にさらされたことが一度もなかったのである。「押し目は必ず回復する」という結論は、データの中から発見されたものではなく、ユニバースの構築のされ方によって最初から組み込まれていたものなのだ。上場廃止銘柄を含むポイント・イン・タイムのデータこそが、唯一の誠実な解決策である。

2. ルックアヘッドバイアス:持っていなかった情報の使用

ルックアヘッドバイアスとは、シミュレーションがトレードの瞬間には入手できなかった情報を使用したことを意味する。よくある微妙なバージョンは、タイミングの誤りだ。あなたのルールが「日足の終値が50日移動平均を上回ったら買う」であり、バックテストがその同じ日の終値で買いを約定させたとしよう。実際には、セッションが終わるまで終値を知ることはできず、その時点で取引できる価格は次の始値のみであり、それはあなたに不利な方向にギャップする可能性がある。シグナル発生時の価格ではなく、次に取引可能な価格で約定させないと、実際には存在しないエッジを作り出してしまう。

もう一つの典型的なバージョンは、修正済みデータである。企業の決算は後から修正されることがある。もしあなたのバックテストが、今日データベースに残っている最終的な修正済みEPSの数値を使用しているなら、それはトレード当日にはまだ知られていなかった数字で取引していることになる。当時存在していたのは、最初に発表された数値だけだった。このルールは述べるのは簡単だが、破るのも簡単だ。あらゆる入力は、そのタイムスタンプ時点で知り得たものにラグをかけなければならない。

3. オーバーフィッティングと多重比較の罠

仕組みについてのガイドでは、基本的なカーブフィッティングについて扱っている。より深い問題は統計的なものだ。200のパラメータの組み合わせをテストし、それぞれを5%の有意水準で判定するなら、たとえどれにも実際のエッジがなかったとしても、単なる偶然によって、そのうちおよそ10個は「有意」に見えることになる。最も見栄えの良い実行結果を選ぶことは、優れたものを見つけることではない。最も運の良かったものを見つけることなのだ。

12個の最適化されたパラメータを持つ戦略は、ほぼどんな過去の価格系列にもフィットさせられるだけの自由度を持っている。それは市場に関する法則を学んだのではなく、あなたのサンプルの特定のノイズを暗記したにすぎない。ここから直接、誠実な経験則が導かれる。チューニングしたパラメータが多く、試した組み合わせが多いほど、その結果に適用すべき割引は大きくなるべきだということだ。一度だけテストされたシンプルな3パラメータのシステムは、千回の実行による最適化の勝者であった12パラメータのシステムよりも、より多くの信頼に値する。

4. 取引コストの見落とし

スプレッド、スリッページ、手数料はトレードごとに課されるため、頻度とともに複利的に積み重なる。コストをゼロと仮定するバックテストは、あなたの戦略をモデル化しているのではなく、無料で取引できる空想上のバージョンをモデル化しているのだ。往復トレードあたり0.10%というわずかなグロスエッジを持つ短期システムを考えてみよう。そして、スプレッド、スリッページ、手数料を加えると、現実的な往復コストは0.12%になる。以下のチャートは、取引回数が増えるにつれてグロスリターンとネットリターンがどう変化するかを、単純な合計リターンを使って分かりやすく示している。

同じ戦略、グロスとネット:わずかなエッジをコストが食い尽くす

何が起きているかを見てほしい。年間1,000トレードの水準では、グロスのバックテストは驚異的な100%のリターンを示す一方、実際のコスト調整後の結果はマイナス20%である。この戦略が取引すればするほど、バックテストは見栄えが良くなり、実際に失うお金は増えていく。なぜなら、トレードごとのエッジが、トレードごとのコストを一度も上回れていなかったからだ。これこそが、同じように魅力的なグロス40%の高頻度システムが、ネットでは確実にマイナスになりうる理由である。コストはまた、バックテストが報告するリスクリワード比率もひそかに歪める。なぜなら、支払われるすべてのスプレッドが、勝ちトレードごとの実際のリワードを縮小させるからだ。

5. レジーム依存

2010年から2021年にかけてバックテストされた戦略は、ほぼ完全に単一の市場レジームの中でテストされたことになる。ゼロ金利、量的緩和、低ボラティリティ、そして史上最長の強気相場だ。その世界では、押し目は回復し、トレンドは持続した。だから、そうした振る舞いを「学習した」平均回帰型あるいはトレンドフォロー型のシステムは、実質的にそのレジームを、まるで市場の恒久的な法則であるかのように符号化しているにすぎない。そして2022年が到来し、利上げ、弱気相場、そして高いボラティリティが訪れると、その戦略はこれまで一度も見たことのない状況に直面した。一つの時代に限定されたバックテストは、その戦略がその時代にどう機能したかを教えてくれるだけで、次の時代にどう対処するかについては、ほとんど何も教えてくれない。

バックテストをどれだけ割り引くべきか

このバイアスを完全に取り除くことはできないが、あらかじめ織り込んでおくことはできる。見出しの数字を上限として扱い、テストがどのように構築されたかに応じて割り引くのだ。プロセスが不透明であればあるほど、割引は深くなるべきである。

バックテストを信じる前に、どれだけ割り引くべきか

バックテストの特徴現実的な扱い理由
インサンプルのみ、単一の市場レジーム大幅な割引、あるいは破棄異なる世界を一度も見ていない
最適化されたパラメータが10個以上大幅な割引サンプルを暗記している可能性が高い
コストをゼロと仮定、または無視符号が反転しうる信じられるのはネットの数字だけ
サバイバーシップが排除されたクリーンなユニバース中程度の割引敗者が静かに取り除かれている
アウト・オブ・サンプル、ウォークフォワード、現実的なコスト軽度の割引、それでもライブで検証すべき誠実さに最も近い状態

実際に役立つこと

これらすべては、バックテストが無用だという意味ではない。バックテストとは、悪いアイデアを取り除くフィルターであって、良いアイデアであることを約束するものではない、ということだ。いくつかの実践によって、バックテストと現実とのギャップを有意に狭めることができる。モデルが一度も触れていないアウト・オブ・サンプルのデータを取っておき、ウォークフォワードテストを用いること。パラメータ数に応じて積極的に割り引くこと。異なるレジーム、特に見苦しいレジームを横断して意図的にテストすること。そして、バックテストが想定していた約定やポジションサイズを、実際のライブ執行で本当に達成できるのかを確認すること。なぜなら、完璧なエントリーにひそかに依存しているシステムや、あなたのポジションサイジングのルールを無視しているシステムは、実際のお金がかかった場面ではまったく違った振る舞いをするからだ。

最後のフィルターは、ペーパートレードであり、その後の小規模なライブトレードである。バックテストは、約定漏れも感情も驚きもない世界に生きている。実際の執行こそが、その三つすべてを含む唯一のテストなのだ。

重要なポイント

  • バックテストは多数のノイズを含んだ試行の中の最良のものであり、あなたがそれを読む前から、すでに上方にバイアスがかかっている。
  • サバイバーシップバイアスは生き残った資産だけをテストし、ルックアヘッドバイアスは持っていなかった情報で取引する。
  • オーバーフィッティングはパラメータ数と試行した組み合わせの数に応じて拡大するので、それに応じて割り引くこと。
  • コストはトレードごとに課され、大きなグロスリターンを確実にネットのマイナスへと転じさせうる。
  • 単一レジームのバックテストは、そのレジームを法則として符号化してしまい、レジームが変化すると破綻する。
バックテストは、ある戦略がうまくいっただろうということを教えてくれる。それがうまくいくだろうということは、決して教えてくれない。この二つの文の間にあるギャップこそが、ほとんどのトレード口座が死んでいく場所なのだ。

免責事項:本コンテンツは教育目的のみを意図しており、金融アドバイスを構成するものではありません。トレードには重大な損失リスクが伴います。過去の実績は将来の結果を保証するものではありません。