バックテストとフォワードテスト
バックテストは過去のデータで戦略がどのような成績を残したかを示すものであり、フォワードテストはそれをライブデータで検証するものです。そして、ライブでの結果は、バックテストが約束したものよりほぼ常に劣ります。
過剰最適化バックテストの成績は急上昇する一方、実運用は伸び悩み、下落し始めます。
上のチャートをシンプルからオーバーフィットへとドラッグしてみてください。緑色のバックテスト曲線は完璧な滑らかな線へと変わっていく一方、赤色のライブ曲線は早い段階でピークを迎えたあと崩れていきます。このギャップには名前があります。過剰最適化です。そして、その危険な側に落ち込まないようにすることこそ、このモジュールの本題です。ルールやモデルに1ドルでもリスクをさらす前に、それを検証する必要がありますが、正直な検証方法はちょうど2つしかない一方で、自分を騙す方法はいくらでもあります。このモジュールでは、その両者を見分ける方法を扱います。良い検証は、悪いアイデアからあなたを救ってくれることがあります。不正な検証は、たいていは意図せず不正になったものですが、その逆の働きをします。つまり、猛スピードで損失を出す自信をあなたに与えてしまうのです。このモジュールを終える頃には、信頼に値するバックテストの実行方法、負ける戦略を金のなる木のように見せかけるトリックの見抜き方、そしてテストが示す数字が現実には決して届かない上限である理由がわかるようになります。
バックテスト:過去に戦略を再生する
バックテストとは、戦略が過去にどのような成績を残していたかを推定するために、過去のデータに対して戦略を実行することを意味します。自分のルールを取り、数年分の価格履歴に適用し、その履歴を「トレード」させることで、資産曲線がどのような形になるかを確認します。
これは必須の作業です。過去のデータで負けている戦略は、実際の資金でトレードする価値がありませんので、バックテストはまずクリアしなければならない最低ラインです。しかし、その最低ラインをクリアすることは、上限に到達することとは違います。バックテストは、その戦略がリアルタイムでは決して稼げなかったはずの結果を示すように、簡単に不正操作されてしまうことがあり、しかもほとんどの場合、誰も意図的に不正をしているわけではありません。ミスは静かに忍び込んでくるのです。
したがって、良好なバックテストは、調査を続けてよいという許可証として扱うべきであり、利益が出る証拠として扱ってはいけません。このモジュールの残りの部分では、一見きれいに見えるバックテストがあなたを欺く方法を一覧にしていきます。
ルックアヘッドバイアス:明日の新聞でカンニングする
ルックアヘッドバイアスとは、シミュレーション上の意思決定の時点では実際にはまだ手に入らなかった情報を、検証の中で使ってしまうことです。テストは、実際のトレーダーがまだ知り得なかったはずのことを「知っている」状態になっており、そのため、実際のトレーダーには決してできなかったはずの意思決定を下してしまいます。
典型的な例を2つ挙げます。
- その日の終値を使って、同じ朝の「寄り付き」で発注したことにするトレードのトリガーとする。実際には、その日が終わるまで終値はわかりません。
- 検証対象の日付から数週間後になって初めて公表された修正後のファンダメンタルズを使う。
未来の情報がわずかに漏れ込むだけでも、平凡な戦略が滑らかで労せず稼げる幻想へと変わってしまうことがあります。資産曲線が見事に見えるのは、バックテストがひそかに明日の新聞を読んでいるからです。バックテストがあまりにもきれいで簡単すぎるように見える場合、まず疑うべきはルックアヘッドバイアスです。
カーブフィッティングと、イン・サンプル/アウト・オブ・サンプルによる対策
2つ目の大きな罠がカーブフィッティングです。過去の曲線が完璧に見えるまで戦略のパラメーターを調整し続けたとしても、本物のエッジを見つけたことにはなりません。二度と繰り返されないランダムなノイズも含め、過去の細かな凹凸に合わせて戦略を成形してしまっただけです。その曲線が美しいのは、まさにその一区間の過去に合わせて形作ったからにほかなりません。
この対策の標準的な方法がイン・サンプルとアウト・オブ・サンプルの検証であり、これは名前から想像するよりも単純です。
- 過去のデータを2つの区間に分割します。
- イン・サンプル:最初の区間で、好きなだけ戦略を調整します。
- ルールを凍結します。それ以上の調整は行いません。
- アウト・オブ・サンプル:凍結したルールを、戦略が一度も見たことのない2つ目の区間で実行します。
アウト・オブ・サンプルでも成績が維持されるなら、そのエッジは本物である可能性があります。成績が崩れるなら、あなたはノイズに合わせていたということであり、それを実際の資金を投じる前に知っておくほうがよいのです。覚えておく価値がある経験則があります。数十個のパラメーターを持ち、不自然なほど滑らかな曲線を描く戦略は、無実が証明されるまでは疑わしいと考えるべきです。
フォワードテスト:正直なリハーサル
フォワードテストは、ペーパートレードとも呼ばれ、実際の資金をリスクにさらさずに、戦略をリアルタイムデータ上でライブに実行することを意味します。これがバックテストを補う正直な手段である理由は一つです。未来をのぞき見ることができないからです。データは実際のトレードとまったく同じように、ティックごとに1つずつ届くため、ルックアヘッドバイアスやひそかなデータスヌーピングが隠れる余地はありません。
フォワードテストはまた、バックテストが見落としがちな地味な部分、つまり注文タイプ、タイミング、そして市場が動いているときに約定が実際にどう振る舞うかについても検証します。こうした執行に関する前提こそ、多くの「完璧な」バックテストが崩れる原因です。
これを、実際の資金を投じる前の最後の関門だと考えてください。これを省略することが、美しいバックテストが見苦しいライブ口座へと変わる原因になります。
ライブがバックテストより常に劣る理由
ここに一つの居心地の悪いパターンがあります。バックテストとライブの結果の間のギャップは現実のものであり、予測可能であり、そしてほぼ常に同じ方向に働きます。ライブのほうが劣るのです。これには3つの要因があります。
| 要因 | 内容 | バックテストが見落とす理由 |
|---|---|---|
| コスト | 手数料、ビッド・アスク・スプレッド、ファンディング | 単純なバックテストは、多くの場合コストをゼロと仮定してしまいます |
| スリッページ | 想定していた価格と実際に約定した価格との差 | バックテストが「穏やか」として扱う速い相場や薄い市場で拡大します |
| レジームの変化 | データを生み出した市場環境がすでに失われていること | 過去のデータには、まだ起きていない市場を含めることができません |
このため、資金を投じる前に、多数のトレードと少なくとも1回の市場環境の変化を確認できるだけの期間、フォワードテストを行ってください。数えるべきはカレンダー上の日数ではなく、トレード数と経験した環境の幅です。速い戦略なら数週間で足りるかもしれませんし、遅い戦略では数か月を要することが多いでしょう。問うべきは「どれだけの期間動かしたか」ではなく「どれだけのことを生き延びたか」です。
コストの計算がひそかにバックテストを殺す仕組み
あるバックテストでは、10,000ドルの口座で年間300回トレードし、見事な滑らかな曲線を描きながら年率+40%を稼ぐ戦略が報告されているとします。このバックテストはコストをゼロと仮定していました。ここに現実を加えてみましょう。
1回の往復トレードあたり、手数料とスプレッドで取引額のおよそ0.1%のコストがかかるとします。300回のトレードでは、300 x 0.1% = 約30%の回転高がコストに食われる計算になります。さらに、値動きの速い場面でのトレードごとのスリッページ数ベーシスポイントを加えると、状況はさらに悪化します。
コストを織り込んで再計算すると、+40%だったそのバックテストは、ライブでは現実的には+8%から+10%程度に近づく可能性があります。平凡に見えていただけの戦略が、コストを正直に計上した途端に純損失へと転じることもあります。ロジックは何も変わっていません。唯一の違いは、バックテストが無視していたコストを数えに入れたことだけです。だからこそ、興奮する前に現実的なコストとスリッページを差し引く必要があり、コストを避けられないフォワードテストこそが本当の証明の場となるのです。
イン・サンプルとアウト・オブ・サンプルをより厳密に分ける方法
基本的な分割(1つ目の区間で調整し、2つ目の区間で凍結したまま検証する)だけでも、ほとんどのカーブフィッティングを見抜くには十分です。さらに厳密にしたい場合は、アウト・オブ・サンプルの区間を本当の意味で封印しておいてください。
- 分割は、結果を見る前に決めておき、後から決めないようにします。
- アウト・オブ・サンプルのデータでの検証は1回だけにします。何度ものぞき見て、調整し、再検証を繰り返していると、その「未知」だったはずの区間も徐々にイン・サンプル化してしまい、対策の効果がすべて失われてしまいます。
- 片方の区間では目を見張るが、もう片方では不安定な戦略よりも、両方の区間でそこそこ良い成績を維持する戦略を優先してください。一度も見たことのないデータに対する一貫性こそ、本当に求めるべきシグナルです。
フォワードテストの「十分な期間」とはどれくらいか
決まった日数というものはありません。2つの戦略がまったく異なる速度でトレードすることがあるからです。正直な尺度は多様な状況にどれだけさらされたかです。
- 十分な数のトレードがあり、まぐれの連勝が記録を実際以上に良く見せることがないようにします。十数回のトレードではほとんど何もわかりませんが、数百回になれば意味を持ち始めます。
- 少なくとも1回の環境の変化を経験していることです。これにより、戦略がレンジ相場でもトレンド相場でも、穏やかな局面でも急変時でも、たまたま始めた時の一つの相場つきだけでなく、機能するかを確認できます。
高頻度戦略であれば、数週間で両方の条件を満たすかもしれません。ゆっくりとしたスイング戦略では、数か月を要することが多いでしょう。フォワードテストが一種類の相場しか経験していないのであれば、まだ本当の意味で検証したことにはなりません。
理解度チェック
バックテストが必要でありながら、それだけでは不十分なのはなぜですか。 戦略がトレードする価値を持つためには、少なくとも過去を生き延びる必要があるため、バックテストは最低ラインです。しかしバックテストは、ルックアヘッドバイアス、カーブフィッティング、無視されたコストによって容易に歪められるため、それに合格したからといって、ライブで利益が出ることの証明にはなりません。
ルックアヘッドバイアスとは何ですか。一つの例で説明してください。 意思決定の時点ではまだ手に入らなかった情報を検証の中で使うことです。例えば、その日の終値を使って「寄り付き」でのトレードをトリガーすることが挙げられますが、実際のトレーダーはその時点でまだそれを知り得ません。
ライブの結果がほぼ常にバックテストに届かないのはなぜですか。 バックテストが通常過小評価している3つの要因があります。コスト(手数料、スプレッド、ファンディング)、スリッページ(想定より不利な約定)、そしてレジームの変化(過去のデータを生み出した市場環境がすでに移り変わっていること)です。
出典
- CFA Institute、「Backtesting and Simulation」、成績を推定するために過去のデータで戦略を検証することの定義。
- arXiv(学術論文)、「Look-Ahead-Freedom as Temporal Non-Interference」、シミュレーション上の意思決定時点では手に入らなかった情報を使うこと。
- Notices of the AMS(学術論文)、「Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance」、根底にある関係性ではなくノイズを説明してしまうカーブフィッティングと、新しいデータへの汎化に失敗すること。
- CME Group、「About the Trading Simulator」、実際の資金を投じる前に、リアルタイムデータ上で資金をリスクにさらさずに行うフォワードテスト。