R²(決定係数)はどうすれば責任ある形でバックテストできる?
R Squared:バックテストの前に概念を定義する
R Squared(しばしばR²と表記されます)は、測定された結果の変動のうち、モデルや関係によってどれだけ説明できるかを示す統計量です。バックテストにおいて重要な責任は、R²をそれ自体を売買シグナルとして扱うことではなく、「何を何に回帰しているのか」、そして「説明されるアウトカム(explained outcome)」があなたのユースケースで何を意味するのかを正確に定義することです。
責任あるワークフローは、まず次を書き出すことから始まります:
- 従属変数(あなたが測定するアウトカム)
- 独立変数(あなたが使う特徴量(feature)やインジケーター値)
- 関係を計算する方法(たとえば回帰、または相関に近いアプローチ)
- 時間アラインメントのルール(どのタイムスタンプ/価格フィードを、どの期間のアウトカムに対応させるか)
これらの項目を正確に述べられない場合、バックテスト結果は独立に検証可能ではありません。
メカニクス:データ、仮定、コストを決める
バックテストは、データ準備のルールが明示されているときにのみ意味を持ちます。よくある責任には次が含まれます:
データ定義とサンプリング
一定の時間グリッド(たとえば各バーのクローズごと)を選び、欠損観測をどう扱うかを指定します。R²を計算するために使うルックバック期間(lookback window)を定義してください。ローリングウィンドウを使う場合は、その長さと、毎バーで更新するのか、ある特定のタイミングでのみ更新するのかを指定します。
時間アラインメントとリーク(漏洩)対策
よくある失敗パターンは先読みバイアス(look-ahead bias)です。これは、意思決定の時点では知り得なかった情報を使ってしまうことです。たとえば次のようなアラインメントルールを設けます:「時刻tまでのデータで計算されたインジケーター値を、tからt+1のアウトカムに対して評価する」。そしてコードでそれを強制し、日付をスポットチェックします。
コストと実行モデル
関係の統計量だけをテストしているとしても、多くのワークフローでは最終的にそれを意思決定へと変換します。そうするなら、重大な摩擦(frictions)をモデル化しなければなりません:
- ビッド/アスクのスプレッド仮定
- 手数料やフィー
- 市場インパクトや約定(order filling)によるスリッページ
責任あるバックテストでは、コストを「データからアウトカムへ」のパイプラインの一部として扱うべきで、後付けの考慮にしてはいけません。そうしないと、R²は強く見える一方で、実際にはコストを織り込んだアウトカムは弱くなったり、整合しない結果になったりします。
エビデンス:バイアス管理とアウト・オブ・サンプル確認を使う
「R²の効果」が単なるアーティファクトではないことを確かめるには、データの分離と厳格な評価を使います。
バイアス管理
少なくとも、主要なバイアスの源泉を制御します:
- 先読みバイアス(時間アラインメント)
- セレクションバイアス(結果を見た後で期間を選ぶこと)
- 過学習バイアス(パラメータをイン・サンプルの性能が最大になるように調整すること)
実務的なアプローチとしては、最終評価ステップの前に、あらゆるパラメータ選択(ウィンドウ長、前処理ルール、しきい値など)を固定しておくことです。
アウト・オブ・サンプルテスト
同じデータで定義した関係に対して計算されたR²は、信頼性を過大評価し得ます。次を使ってください:
- どんな選択(choices)を行うかを決めるためのトレーニング(イン・サンプル)期間
- ノイズに合わせているだけではないことを確認するためのバリデーション期間
- 最も保守的な評価のための最終的なアウト・オブ・サンプル期間
期間をまたいで関係が実質的に変化するなら、それは重要な発見です。
1つの重大な制限と、それがなぜ重要か
大きな失敗パターンは、過去の説明可能な関係が将来の安定性を保証しないことです。市場レジームは変わり得ますし、条件が変わると、特にコスト、流動性、実行品質が仮定と異なる場合には、統計的な適合(fit)が劣化します。
限界とリスク:説明できるべきこと
責任あるバックテストには、次に対処する明確な「限界(limitations)」セクションを含めるべきです:
- 非定常性(Non-stationarity): 関係は時間とともに変わり得ます。
- モデル仕様の感度: 入力やアラインメントを少し変えるだけで、R²が変わり得ます。
- 過学習リスク: イン・サンプルでの適合が高くても、実世界では弱い結果になる可能性があります。
- コスト感度: スプレッドやスリッページを無視すると、見かけの関係が錯覚になり得ます。
また覚えておいてください:R²は、アウトカム定義への適合度を測る指標です。あなたのアウトカム変数が不適切に選ばれていたり、実際の意思決定機会と整合していなかったりするなら、この統計量は誤解を招く可能性があります。
検証:次に独立して確認できること
責任あるR²バックテストを独立に検証するには、次を示せるべきです:
- 従属変数と独立変数の正確な定義
- 時間アラインメントのルールとウィンドウイング手法
- パイプラインで使われたコストと実行の仮定
- データ分割戦略(トレーニング/バリデーション/アウト・オブ・サンプル)と、調整されたパラメータ
- 少なくとも1つの失敗モード(たとえば、既知の日時シフトによるチェックで先読みバイアスを検出するなど)