なぜ単一のOOS(アウトオブサンプル)では危険なのか
従来のクオンツ実務で標準とされてきた「単一OOS検証(70%を学習、30%をテスト)」には、深刻な構造的欠陥があります。
- テスト期間の相場レジームへの依存:テスト期間(例えば直近2年間)が「一方的な円安トレンド相場」だった場合、単純なトレンドフォロー戦略は中身がガタガタでもOOSで大勝ちしてしまいます。逆にレンジ相場が得意な戦略は不当に不合格となります。
- データの浪費:テスト期間として切り離された30%のデータは、モデルの学習(インサンプル)に一切使用されず、貴重な相場経験値が失われます。
- 1回限りの運試し:1本のOOS資産曲線しか得られないため、その結果が「戦略の実力」なのか「たまたまその期間にノイズが噛み合った運」なのかを統計的に分離できません。
CPCVの分割数学:組合せ式とOOSパス本数
CPCVでは、過去の全時系列データをシャッフルせずに、時間順に並んだ \(N\) 個の連続したブロック(グループ) \(G_1, G_2, \dots, G_N\) に等分割します。各分割(Split)において、\(k\) 個のブロックをテスト(OOS)に割り当て、残りの \(N - k\) 個のブロックを学習(Train)に割り当てます。
1. 総分割数 \(S\)(モデルを学習させる回数)
\(N\) 個のグループからテスト用の \(k\) 個を選ぶ組み合わせの総数 \(S\) は、高校数学で学ぶ二項係数(コンビネーション)です。
2. 構成可能な完全OOS経路(パス)の本数 \(arphi\)
すべての分割において \(k\) 個のグループがテストされるため、テストグループが生成される総延べ回数は \(k imes S\) 回です。1本の「全期間を網羅する完全なOOS資産曲線」を組み立てるには、全 \(N\) 個のグループがちょうど1回ずつ必要となります。したがって、構築できる独立した完全OOS経路の本数 \(arphi\) は次のように厳密に導かれます。
| グループ数 \(N\) | テスト数 \(k\) | 学習比率 \( heta_{ ext{train}}\) | 総分割数 \(S = inom{N}{k}\) | 生成される完全OOS経路数 \(arphi = inom{N-1}{k-1}\) |
|---|---|---|---|---|
| \(N = 6\) | \(k = 2\) | \(66.7\%\) | 15 通り | 5 本(初歩的な診断に最適) |
| \(N = 8\) | \(k = 2\) | \(75.0\%\) | 28 通り | 7 本(計算負荷と精度のバランス良) |
| \(N = 10\) | \(k = 2\) | \(80.0\%\) | 45 通り | 9 本(標準的なクオンツ仕様) |
| \(N = 16\) | \(k = 2\) | \(87.5\%\) | 120 通り | 15 本(大規模データ・高頻度トレード向け) |
CPCVの完全実行アルゴリズム
CPCVを実行するプロセスは、以下の厳密なパイプラインに沿って行われます。
OOS資産曲線(エクイティパス)の再構成
CPCVが他の交差検証と決定的に異なるのは、単に「テスト精度の平均」を出すのではなく、「実運用で投資家が直面したかもしれない \(arphi\) 通りの現実的な資産曲線(エクイティカーブ)」を視覚的に描ける点にあります。
※\(\oplus\) は時系列の直接連結を表します。\(s_{j,p}\) は第 \(j\) グループをテストとして使ったSplitのID。
評価分布の読み方:平均値ではなく最悪シナリオに耐える
CPCVを実行した結果得られるのは、「単一の数字」ではなく「\(arphi\) 本のOOSパフォーマンスの確率分布」です。クオンツはこの分布から以下の項目を冷徹に監査します。
| CPCV評価指標 | 意味と計算方法 | 合格基準の目安 |
|---|---|---|
| OOSシャープレシオ中央値 | \(arphi\) 本のパスのSRの中央値。外れ値に引きずられない実力値。 | 中央値 \( ext{SR}_{ ext{med}} \ge 1.0\) |
| 下位10%(最悪ケース)SR | 最も相性の悪かった分割におけるSR。相場急変時の耐久力。 | 下位10%でも \( ext{SR} \ge 0.0\)(元本を死守できる) |
| 最大ドローダウン分布 | 各パスにおける最大DDの最大値(最悪ケースのドローダウン)。 | 最悪パスのMDDが許容リスク許容度(例: 20%)以内 |
| 失敗確率(破綻率) | SRがゼロ以下、または最大DDが基準を超えたパスの割合: \(p_{ ext{fail}} = rac{1}{arphi} \sum 1[J( ext{Path}_p) \le 0]\) |
\(p_{ ext{fail}} < 0.05\)(失敗するパスが5%未満) |
CPCVの理論的限界とウォークフォワードとの使い分け
CPCVは極めて強力な手法ですが、万能のタイムマシンではありません。以下の限界を認識しておく必要があります。
- 経路間の相互依存性:生成された \(arphi\) 本の資産曲線は、同じ歴史的データを共有しているため、数学的に完全な「独立試行」ではありません。
- 計算コストの爆発:\(N=16, k=2\) では120回のモデル学習とパージングが必要になります。ニューラルネットワークなどの重いモデルでは計算時間が膨大になります。
- ウォークフォワードとの併用:実際の運用では「過去のデータだけを使って逐次再学習する」ため、実運用の更新リズムを忠実に再現するにはウォークフォワードが適しています。一方、「バックテスト過学習の確率(PBO)を測定する」目的にはCPCVが世界標準です。
CPCVによって複数のOOSパフォーマンスが得られました。これを使って、いよいよ「このバックテスト結果が過剰最適化(カーブフィッティング)である確率」を0〜100%の数値として算出するPBO(Probability of Backtest Overfitting)を導出します。次回、過学習の最終審判を下す数理に迫ります。
ミニテスト
4問の理解度テストです。
Q1. 時系列データを \(N=6\) 個のグループに分割し、テストグループ数を \(k=2\) としたCPCVにおける総分割数 \(S\) はいくつか?
正解はCです。二項係数の公式より、\(S = inom{6}{2} = rac{6 imes 5}{2 imes 1} = 15\) 通りとなります。
Q2. \(N=6, k=2\) のCPCVにおいて、構成可能な「全期間を網羅する完全OOS資産曲線」の本数 \(arphi\) はいくつか?
正解はAです。公式 \(arphi = inom{N-1}{k-1} = inom{5}{1} = 5\) 本となります。(または \(rac{k}{N} imes S = rac{2}{6} imes 15 = 5\))
Q3. CPCVの各分割(Split)において、情報漏洩を防ぐために絶対に行わなければならない処理はどれ?
正解はBです。テスト期間の未来情報が学習データに漏れるのを防ぐため、各分割ごとにPurgingとEmbargoを適用し、前処理スケーラーもTrain内だけで適合させます。
Q4. CPCVによって生成された \(arphi\) 本のOOS資産曲線(エクイティパス)に関する正しい認識はどれ?
正解はCです。CPCVは新しい相場データを生み出すわけではなく、過去データの分割の偶然性に依存するリスクを暴くための頑健性診断ツールです。
学術文献・参考資料
- Marcos López de Prado (2018), Advances in Financial Machine Learning, Wiley, Chapter 12: "Cross-Validation in Finance: CPCV".
- David H. Bailey, Jonathan Borwein, Marcos López de Prado, Qiji Jim Zhu (2017), "The Probability of Backtest Overfitting", Journal of Computational Finance, Vol. 20, No. 4, pp. 39-69.