過学習の数学的定義:なぜ「順位反転」に着目するのか

多くのトレーダーは、「過学習=将来勝てなくなること」と漠然と考えています。しかし、将来負けた理由が「相場の根本的なルール変更(レジームシフト)」なのか、それとも「過去のバックテストのやり方が悪かった(過学習)」のかを区別できなければ、改善のしようがありません。

David H. Bailey, Jonathan Borwein, Marcos López de Prado, Qiji Jim Zhu (2017) は、過学習を極めてクリアに定義しました。

過学習(Overfitting)のクオンツ的定義

訓練データ(In-Sample)において、多数の候補の中から「最も優れたパフォーマンスを示した勝者戦略」を選んだとき、その勝者がテストデータ(Out-of-Sample)において「全候補戦略の中央値(上位50%)にすら入れず、下位半分に転落してしまう現象」を過学習と呼ぶ。

もし戦略に真の優位性(エッジ)が存在するならば、相場環境が多少変わったとしても、ISで1位だった戦略はOOSでも上位20%や30%といった「上位グループ」に留まるはずです。ところが、ISで1位だった戦略がOOSで下位50%(中央値以下)に沈んでしまうとすれば、ISでの輝かしい成績は「真の実力」ではなく、「過去の特定期間のランダムノイズを完璧に記憶(オーバーフィット)しただけの偽物」だったことの動かぬ証拠になります。

候補×期間の収益行列 \(R\) の構築

PBOを計算するための第一歩は、あなたが探索・比較したすべての候補戦略の時系列リターンを、1つの大きな行列に格納することです。これを収益行列(Performance Matrix) \(\mathbf{R}\) と呼びます。

\mathbf{R} = [r_{t,m}] \in \mathbb{R}^{T imes M} \quad (t = 1, \dots, T; \quad m = 1, \dots, M)

※\(T\) は観測時点数(日次リターン数など)、\(M\) は比較した全候補戦略の数(グリッドサーチの組み合わせ数など)。

勝者だけを残してはいけない

多くの人が「最も成績の良かった1つのEA」のリターン系列しか保存しません。しかし、PBOを計算するためには、「ボツになった負け組・中位組の戦略を含む全 \(M\) 個のリターン系列」が絶対に必要です。勝者単体からは「順位の変動」が計算できないためです。

CSCV(対称組合せ交差検証)の分割構造

第5回のCPCVでは任意の \(k\) 個をテストに選びましたが、PBOの原論文ではCSCV(Combinatorially Symmetric Cross-Validation:組合せ対称交差検証)という対称分割を用います。

時系列を偶数 \(S\) 個の連続ブロック \(G_1, G_2, \dots, G_S\) に分割し、そのちょうど半分の \(S/2\) 個を訓練(IS)、残り半分の \(S/2\) 個をテスト(OOS)に割り当てます。このとき、可能なすべての分割の組み合わせ数 \(C_{ ext{splits}}\) は以下になります。

C_{ ext{splits}} = inom{S}{S/2} = rac{S!}{((S/2)!)^2}

※例えば \(S = 16\) 分割の場合、\(inom{16}{8} = 12,870\) 通りのIS/OOS対称分割が生成されます。

各分割 \(c \in \{1, \dots, C_{ ext{splits}}\}\) において、以下のステップを実行します。

  1. 全 \(M\) 個の戦略について、IS期間の目的関数スコア(シャープレシオ等) \(J_{ ext{IS}, c}(m)\) を算出する。
  2. IS期間で最もスコアが高かった「IS勝者戦略」 \(m^*_c\) を特定する:
    m^*_c = rg\max_{m=1,\dots,M} J_{ ext{IS}, c}(m)
  3. そのIS勝者戦略 \(m^*_c\) の、OOS期間におけるスコア \(J_{ ext{OOS}, c}(m^*_c)\) を測定する。

OOS相対順位 \(\omega\) と Logit変換 \(\lambda\)

次に、IS勝者 \(m^*_c\) のOOSスコアが、「他の全 \(M\) 個の戦略のOOSスコアの中で第何位だったか」を調べます。最下位を1位、最高位を \(M\) 位とする順位を \(r_c \in \{1, 2, \dots, M\}\) とします。

この順位を \(0\) から \(1\) の範囲の実数に正規化した相対順位 \(\omega_c\) を算出します。

\omega_c = rac{r_c}{M + 1} \in (0, 1)

ここで、\(\omega_c = 0.5\) は「ちょうど全候補の中央値(真ん中)」を意味します。\(\omega_c > 0.5\) なら上位半分に食い込んでおり、\(\omega_c < 0.5\) なら下位半分に沈んだことを意味します。この境界を明確にするため、統計学の標準手法であるLogit(ロジット)変換を適用します。

\lambda_c = ext{logit}(\omega_c) = \ln\left( rac{\omega_c}{1 - \omega_c} ight)
Logit変換 \(\lambda_c\) の物理的意味
  • \(\omega_c > 0.5 \iff \lambda_c > 0\):IS勝者はOOSでも上位を維持(過学習していない健全な分割)。
  • \(\omega_c = 0.5 \iff \lambda_c = 0\):IS勝者はOOSでちょうど中央値。
  • \(\omega_c < 0.5 \iff \lambda_c < 0\):IS勝者がOOSで下位半分に転落(過学習が発生した分割!)。
Logit値 λ = ln(ω / (1-ω)) → 閾値 λ = 0 (OOS順位 50%ライン) 赤色面積 = PBO (λ ≤ 0: 過学習発生!) 健全領域 (1 - PBO) (λ > 0: OOS上位を維持)
図1:Logit変換されたOOS相対順位の確率密度分布と、PBO(ゼロ以下の面積比率)

PBO推定値の算出と診断基準

全 \(C_{ ext{splits}}\) 通りの分割のうち、\(\lambda_c \le 0\)(IS勝者がOOSで中央値以下に沈んだ)となった分割の割合を計算します。これがPBO(バックテスト過学習確率)の推定量です。

\widehat{ ext{PBO}} = rac{1}{C_{ ext{splits}}} \sum_{c=1}^{C_{ ext{splits}}} \mathbf{1}[\lambda_c \le 0] = rac{1}{C_{ ext{splits}}} \sum_{c=1}^{C_{ ext{splits}}} \mathbf{1}[\omega_c \le 0.5]

※\(\mathbf{1}[\cdot]\) は指示関数(条件を満たせば1、満たさなければ0を返す)。

PBO水準 判定ステータス 統計学的解釈とアクション
\( ext{PBO} < 0.10\) 極めて頑健(最優秀) ISで選んだ戦略が90%以上の分割でOOS上位を維持。真のエッジが存在する可能性が極めて高い。
\(0.10 \le ext{PBO} < 0.30\) 合格(実務許容圏) 当サイトの採用ゲートクリア。実運用への移行(デモ・フォワード)に進む。
\(0.30 \le ext{PBO} < 0.50\) 警戒(過学習の兆候) パラメータ数が多すぎるか、探索範囲が広すぎる。モデルの自由度を削減して再設計が必要。
\( ext{PBO} \ge 0.50\) 完全な過学習(即時破棄) コイン投げ以下。バックテストの右肩上がり資産曲線は100%過去ノイズの錯覚。即座にゴミ箱行き。

DSR・CPCV・PBOの完全比較マッピング

本コース(戦略評価の統計学)で登場した3大クオンツ検証手法の役割分担を整理しました。どれか1つで代用できるものではなく、3者が連携して過剰最適化を多角的に包囲します。

手法 提唱理論・背景 中心となる問い 出力される指標 当サイトの合格ゲート
DSR (第2回) 極値統計学(Bailey & López de Prado) 「\(N\) 回試行した探索量を考慮しても、このSRは偶然の産物ではないか?」 DSR値 \([0, 1]\) \( ext{DSR} \ge 0.95\)
CPCV (第5回) 組合せ交差検証(López de Prado) 「分割の切り方を変えたとき、OOS資産曲線はどのようにばらつくか?」 \( arphi\) 本のOOS資産曲線ファンチャート、最悪DD 下位10%でも \( ext{SR} > 0\)
PBO (本講) 順位統計・情報理論(Bailey et al.) 「ISで最も勝った戦略が、未知のOOSで平均以下に転落する確率は何%か?」 PBO確率 \([0, 1]\)(Logit分布) \( ext{PBO} < 0.30\)
次回への接続:時系列の一貫性を測る(SSR)

PBOによって過学習の確率を測定できるようになりました。しかし、仮にPBOが低くても、「全利益が特定のバブル期の3ヶ月間に集中していて、残り5年間は横ばい」という戦略は実運用に耐えられません。次回は、シャープレシオの「時間的一貫性・安定度」を測るSSR(Sharpe Stability Ratio)の設計に入ります。

ミニテスト

4問の理解度テストです。

Q1. PBOの原論文において、時系列データを半分ずつISとOOSに分けるために用いられる分割アルゴリズムはどれ?

正解はCです。PBOの厳密な推定には、偶数S個のブロックからS/2個を対称に選ぶCSCV(Combinatorially Symmetric Cross-Validation)を用います。

Q2. Logit変換された値 \(\lambda_c \le 0\) が意味する統計的事実はどれ?

正解はAです。\(\lambda \le 0\) は相対順位 \(\omega \le 0.5\) と同値であり、ISで選ばれた勝者がOOSで平均以下に沈む過学習の発生を意味します。

Q3. バックテストで極めて低いPBO(例: 0.05)が算出された場合、省略してもよい検証項目はどれ?

正解はBです。PBOは「順位の安定性」を測る相対指標であり、全員が大赤字の戦略群でもPBOが低くなることがあります。絶対的な収益力やコスト検証は別途必須です。

Q4. バックテストの診断結果として「\( ext{PBO} = 0.60\)」が得られた場合の正しい解釈はどれ?

正解はCです。PBOは将来の損益確率ではなく、過去データの分割において「最良戦略の選択が失敗した割合」を表します。60%は明らかな過剰最適化水準です。

学術文献・参考資料