バックテスト実務の限界
平易に言うと、バックテスト実務とは
バックテスト実務とは、取引アイデア(たとえば、ルールベースのエントリーと決済)を、過去の価格データに対して実行することで評価するプロセスです。目的は、同じルールを守っていたなら、そのアイデアが過去にどの程度の成果を出していた可能性があるかを推定することです。
バックテストには通常、(1) 過去データ、(2) そのデータからアクションを生成するルールまたはモデル、(3) 利益と損失、ドローダウン、勝ち/負けの頻度などのアウトカムを計算する方法、が含まれます。これらの計算は、各時間帯の中で何が起きたか(たとえば、記録されたデータ点の間で価格がどのように動いたか)や、取引の執行(たとえば、手数料、スプレッド、注文が約定したかどうか)についての前提に依存します。
バックテストが見た目ほど有用でない理由
重要な限界は、バックテストが未来を観察するものではなく、過去のシミュレーションであることです。過去の結果が強く見えても、歴史から学んだ関係が、新しい市場環境では再現されないことがあります。以下の限界は、よくある失敗パターンを説明します。
1) 過去データと市場のミクロ構造におけるギャップ
多くのバックテストは、記録された価格バーやティックを使いますが、実際の取引には、多くのデータセットが捉えきれていない以上の詳細があります。過去データが不完全である、価格の意味を変えるように調整されている、あるいは注文の約定をモデル化するのに必要な情報が欠けている場合、バックテストは、実際のライブ取引で起きることからズレる可能性があります。
また、記録された価格から起こり得る約定への対応は不確実です。たとえば、あるルールが特定の価格水準での約定を前提としていても、実際の市場では、注文が執行される前にその水準を通過していた可能性があります。その場合、シミュレーションは楽観的になります。
2) コスト、執行の質、スリッページの前提
戦略ロジックが正しいとしても、結果は取引コストと執行に関する前提に大きく左右されます。バックテストでは、簡略化したコストモデル(たとえば、一定のスプレッド、またはスリッページなし)を使ったり、注文が完全に約定すると仮定したりすることがあります。しかし実際には、スプレッドは拡大し、流動性は変化し、スリッページはボラティリティや時間帯によって変わり得ます。
小さなコスト差が多数の取引にわたって積み重なるため、これらの影響を無視したり過小評価したりするバックテストは、パフォーマンスを過大に示してしまうことがあります。
3) 過学習(オーバーフィッティング)とデータ・スノーピング
バックテストは、特定のデータセットのノイズを意図せず「当てはめてしまう」ことがあります。これは、過去の結果を改善したからという理由で、多くのパラメータを試して選び取ってしまうときに起こります。同じデータで「良さそうに見える」組み合わせを探せば探すほど、その見かけの優位性が、市場の一般的な性質というよりも、その期間に固有のものにすぎない可能性が高まります。
関連する問題がデータ・スノーピングです。多くのバリエーションを繰り返しテストして、そのうちの1つがうまくいっているように見えるまで続けてしまうことです。訓練期間とテスト期間を慎重に分けない限り、強い過去の結果は、再現可能なメカニズムを反映していないかもしれません。
4) 非定常な市場と変化する条件
市場は安定したシステムではありません。ボラティリティのレジームは変わり、参加者の構成は移り、流動性は動きます。ある環境で機能したルールは、スプレッド、ボラティリティ、相関が変わると、別の挙動を示すことがあります。
規制上または構造上の出来事がなくても、価格系列の統計的性質は変化し得ます。つまり、テストした期間の間に暗黙に「織り込まれていた」前提が、もはや成り立たない可能性があります。
5) 何がまさにテストされているのかの定義が曖昧
バックテストは、入力やルールが異なるため、比較が難しいことがあります。どの例でも、次のことを述べられるはずです:
- 使ったデータの頻度(たとえば、バーかティックか)。
- 指標や特徴量がどのように計算され、利用可能だった情報だけを使っているか。
- エントリーと決済がどのように決まり、注文の約定がどのようにモデル化されたか。
これらの詳細のいずれかが不明確なら、バックテストは意図したアイデアをテストしていない可能性があります。代わりに、選んだ実装に由来する「成果物(アーティファクト)」をテストしているだけかもしれません。
信頼性を高めるための検証
バックテストで、戦略が機能することを「証明」することはできませんが、結果が頑健である可能性を確認することはできます。
実務的な検証アプローチは、前提を明確に定義し、感度をテストすることです。たとえば、コストのパラメータを妥当な範囲で変化させる、あるいは異なる市場環境で異なる過去期間を使う、といった方法があります。さらに別に、アウト・オブ・サンプルのテストを行います。つまり、パラメータ選定に使わなかったデータに対してルールを評価します。
DOCUMENT END