CSCV/PBO オーバーフィッティング検定レポート¶
レポート概要
日付: 2026-03-25 対象: ORATS 7年BT (2019-01 〜 2026-01) × 24シナリオ 結論: PBO = 15.4% (GOOD) — 戦略のパフォーマンスはオーバーフィッティングによる偶然ではなく、統計的に有意
CSCV/PBOとは何か¶
バックテストの「落とし穴」¶
バックテスト(BT)は過去のデータでトレード戦略をシミュレーションする手法です。しかし、過去データに「たまたま合う」パラメータを選んでしまうリスクがあります。これを オーバーフィッティング(過学習) と呼びます。
例えるなら、試験の過去問だけを丸暗記して本番に臨むようなものです。過去問では100点が取れても、本番では通用しない — これがオーバーフィッティングです。
CSCV (Combinatorially Symmetric Cross-Validation)¶
CSCVは「バックテスト結果がオーバーフィッティングかどうか」を定量的に判定する統計手法です。
手順:
- 月次リターンデータを16グループに分割する(各グループ約5ヶ月分)
- 16グループから8グループを選ぶ全組み合わせ(12,870通り)を列挙
- 各組み合わせで:
- 選んだ8グループを IS(In-Sample=学習用) とする
- 残り8グループを OOS(Out-of-Sample=検証用) とする
- ISで最も成績が良い戦略を特定し、その戦略のOOSでの順位を記録
- 全12,870通りの結果を集計する
全84ヶ月のデータ
┌──────────────────────────────────────┐
│ G1 │ G2 │ G3 │ ... │ G15 │ G16 │ ← 16グループに分割
└──────────────────────────────────────┘
↓ 12,870通りの分割を試行
┌─────────────┬─────────────┐
│ IS (8グループ) │ OOS (8グループ) │
│ 学習用データ │ 検証用データ │
└─────────────┴─────────────┘
↓
ISでベストの戦略は、OOSでも上位か?
PBO (Probability of Backtest Overfitting)¶
PBOは「ISで最良と判定された戦略が、OOSで中央値(全戦略の真ん中)以下になる確率」です。
| PBO | 判定 | 意味 |
|---|---|---|
| 0〜5% | EXCELLENT | オーバーフィッティングのリスクが極めて低い |
| 5〜15% | VERY GOOD | リスクは低い |
| 15〜25% | GOOD | 許容範囲 |
| 25〜40% | MODERATE | 注意が必要 |
| 40%超 | HIGH | オーバーフィッティングの可能性が高い |
PBOが低いほど、「BTで良い成績だった戦略は、未知の将来データでも良い成績を出す可能性が高い」と言えます。
テストの設計¶
対象シナリオ¶
24のパラメータ組み合わせを検証しました:
| パラメータ | 値の範囲 | 個数 |
|---|---|---|
| DTE (満期日数) | 10-45, 10-60 | 2 |
| TP (利確ポイント) | 0.35, 0.38, 0.41, 0.44 | 4 |
| CR (最低クレジット比率) | 0.30, 0.35, 0.40 | 3 |
合計: 2 × 4 × 3 = 24シナリオ
BT条件(全シナリオ共通)¶
| 項目 | 値 |
|---|---|
| データソース | ORATS (Options Research & Technology Services) |
| 期間 | 2019-01-02 〜 2026-01-30 (7年間) |
| 初期資本 | $50,000 |
| 執行モデル | MID (bid-ask中間値) |
| 月次出金 | 30% (利益の30%を毎月引き出し) |
| 乱数シード | 0 (確定的再現) |
| ポジション上限 | 50 |
CSCV設定¶
| 項目 | 値 |
|---|---|
| グループ数 | 16 (各5ヶ月) |
| 組み合わせ数 | 12,870 (C(16,8)) |
| 評価指標 | Sharpe比 |
| 月次リターン点数 | 84ヶ月/シナリオ |
バックテスト結果¶
全24シナリオ一覧¶
DTE 10-45¶
| TP | CR | Total Wealth | Win Rate | MaxDD |
|---|---|---|---|---|
| 0.35 | 0.30 | $22,169,508 | 78.0% | 70.1% |
| 0.35 | 0.35 | $17,510,903 | 80.1% | 26.8% |
| 0.35 | 0.40 | $7,475,557 | 81.8% | 15.0% |
| 0.38 | 0.30 | $20,524,638 | 76.9% | 75.2% |
| 0.38 | 0.35 | $17,090,248 | 78.9% | 28.6% |
| 0.38 | 0.40 | $7,177,682 | 80.4% | 17.8% |
| 0.41 | 0.30 | $23,469,316 | 76.2% | 68.4% |
| 0.41 | 0.35 | $16,921,406 | 78.0% | 31.2% |
| 0.41 | 0.40 | $7,472,122 | 79.8% | 14.4% |
| 0.44 | 0.30 | $23,484,271 | 75.4% | 68.6% |
| 0.44 | 0.35 | $16,349,641 | 76.9% | 32.6% |
| 0.44 | 0.40 | $7,744,396 | 79.1% | 14.5% |
DTE 10-60¶
| TP | CR | Total Wealth | Win Rate | MaxDD |
|---|---|---|---|---|
| 0.35 | 0.30 | $33,852,242 | 81.1% | 55.1% |
| 0.35 | 0.35 | $31,299,738 | 82.7% | 20.6% |
| 0.35 | 0.40 | $14,417,097 | 82.9% | 19.1% |
| 0.38 | 0.30 | $32,767,752 | 79.9% | 59.9% |
| 0.38 | 0.35 | $31,792,177 | 82.0% | 20.4% |
| 0.38 | 0.40 | $15,187,792 | 82.3% | 19.2% |
| 0.41 | 0.30 | $29,114,108 | 78.6% | 71.3% |
| 0.41 | 0.35 | $31,338,822 | 80.8% | 21.6% |
| 0.41 | 0.40 | $15,167,841 | 81.4% | 20.5% |
| 0.44 | 0.30 | $31,191,513 | 78.0% | 63.3% |
| 0.44 | 0.35 | $31,403,294 | 80.0% | 22.3% |
| 0.44 | 0.40 | $15,719,289 | 80.8% | 21.4% |
CR=0.30の危険性
CR=0.30のシナリオはTW(総資産)は最大だが、MaxDDが55〜75%に達する。COVID暴落(2020年3月)で壊滅的な損失を被るため、実運用には不適切。
CSCV/PBO 結果¶
PBO = 15.4% (GOOD)¶
======================================================================
CSCV/PBO ANALYSIS RESULTS
======================================================================
PBO (rank-based): 0.154 (15.4%)
PBO (logit-based): 0.154 (15.4%)
Verdict: GOOD — acceptable overfitting risk
Strategies: 24
Combinations: 12,870
Groups: 16 × 5 months
Metric: sharpe
「学習データの1位」は未知データでも通用するか?¶
学習用データ(IS)で最も成績が良かった戦略が、検証用データ(OOS)で24戦略中何位になったかの分布です。もし戦略が本物なら上位に集中し、オーバーフィッティングなら全順位に散らばります。
Rank 1: 464 ( 3.6%) █
Rank 2: 822 ( 6.4%) ███
Rank 3: 789 ( 6.1%) ███
Rank 4: 718 ( 5.6%) ██
Rank 5: 2530 (19.7%) █████████
Rank 6: 804 ( 6.2%) ███
Rank 7: 893 ( 6.9%) ███
Rank 8: 1051 ( 8.2%) ████
Rank 9: 1165 ( 9.1%) ████
Rank 10: 498 ( 3.9%) █
Rank 11: 457 ( 3.6%) █
Rank 12: 702 ( 5.5%) ██
Rank 13-24: 少数 (<5%)
上位半分 (1〜12位) に入る確率: 84.7% — 学習データで選んだ戦略は、未知のデータでも84.7%の確率で上位半分に入る。偶然なら50%なので、明確に優位性がある。
どの戦略が「学習データで1位」に選ばれやすいか¶
12,870通りのデータ分割それぞれで「学習データ(IS)での1位」が決まります。 その1位が、未知データ(OOS)で24戦略中何位になるかを見ます。
| 戦略 | 学習データで1位になった割合 | 未知データでの平均順位 (24中) |
|---|---|---|
| DTE1045_TP035_CR040 | 33.8% | 6.2位 |
| DTE1060_TP035_CR040 | 33.4% | 5.8位 |
| DTE1060_TP041_CR040 | 9.9% | 8.6位 |
| DTE1060_TP035_CR035 | 5.0% | 11.6位 |
CR=0.40(最も厳しいフィルタ)が「学習データでの1位」を独占。ただしCR=0.40はTW(総利益)が低め($7-15M)で、リスク回避的な構成。
読み方
「学習データで1位になった割合」が高く、「未知データでの平均順位」が低い(1位に近い)ほど、その戦略は信頼できる。DTE1060_TP035_CR040は「学習でも検証でも安定して上位」。
考察¶
1. PBO 15.4%の解釈¶
PBO = 15.4%は「GOOD(許容範囲)」です。これは:
- 12,870通りのIS/OOS分割のうち、84.6%のケースでISベスト戦略がOOSでも中央値以上
- 完全なランダム(オーバーフィッティング100%)なら PBO = 50%
- 15.4%は偶然ではなく、戦略に実質的な優位性があることを示す
2. CR(最低クレジット比率)の役割¶
| CR | 特性 | リスク |
|---|---|---|
| 0.30 | TW最大($22-34M) | MaxDD 55-75%。COVID暴落で壊滅 |
| 0.35 | TW高い($17-32M)、DD適正(20-32%) | バランス最良 |
| 0.40 | DD最小(14-21%) | TW半減($7-16M) |
CR=0.35がリスク・リターンの最適点。CSCV的にはCR=0.40がIS-bestだが、OOS平均ランク5.8-8.6は「突出して良い」わけではない。実運用ではCR=0.35のバランスが優れる。
3. DTE拡大の効果¶
DTE 10-60はDTE 10-45に対して:
- TW: 1.5〜2倍(より多くのエントリー機会)
- WR: +2-3pp(選択肢が増えることで質の高いトレードを選べる)
- DD: CR=0.35で20-22%(DTE1045の27-33%より改善)
DTE拡大は明確に有利。
4. 25ヶ月PBOとの比較¶
| 期間 | PBO | 判定 |
|---|---|---|
| 25ヶ月 (2024-2026) | 32% | MODERATE |
| 7年 (2019-2026) | 15.4% | GOOD |
長期データでPBOが改善。これは戦略の優位性が短期の特殊環境ではなく、複数の市場局面(COVID暴落、2021-22上昇相場、2022ベア、2023-25回復)を通じて一貫していることを意味する。
5. 推奨構成¶
CSCV結果とBT結果を総合すると:
| パラメータ | 推奨値 | 根拠 |
|---|---|---|
| DTE | 10-60 | TW 2倍、DD改善 |
| CR | 0.35 | リスク・リターン最適。CR=0.30はDD危険、CR=0.40はTW半減 |
| TP | 0.35-0.38 | ISベスト頻度最大、OOSランク安定 |
Monte Carlo シミュレーション¶
Monte Carloとは¶
CSCV/PBOが「この戦略はオーバーフィッティングしていないか?」を検証するのに対し、Monte Carloシミュレーションは「この戦略で最悪どれくらい負ける可能性があるか?」を推定します。
手法: ブロックブートストラップ
- 7年間のバックテストから日次リターン(1,808日分)を抽出
- 日次リターンを「21日(約1ヶ月)のブロック」に切り分ける
- このブロックをランダムに並べ替えて、架空の7年間を合成
- これを10,000回繰り返し、各回のMaxDD(最大下落率)を記録
- 10,000回の結果から「95%のケースではDD何%以内か」「99%では?」を統計的に推定
元の日次リターン (1,808日)
┌──┬──┬──┬──┬──┬──┬──┬──┬──┐
│B1│B2│B3│B4│B5│B6│...│B85│B86│ ← 21日ブロックに分割
└──┴──┴──┴──┴──┴──┴──┴──┴──┘
↓ ランダムに並べ替え (×10,000回)
┌──┬──┬──┬──┬──┬──┬──┬──┬──┐
│B42│B7│B85│B3│B61│B12│...│B55│B29│ ← 架空の7年間 #1
└──┴──┴──┴──┴──┴──┴──┴──┴──┘
↓ equity curve再構築 → MaxDD算出
↓ ×10,000回 → MaxDD分布を得る
なぜブロック単位か?
日次リターンには短期的な相関(数日連続の下落など)がある。1日ずつバラバラにシャッフルするとこの相関が壊れてしまい、現実より楽観的な結果になる。21日ブロックで並べ替えることで、短期的な連続性を保持したまま順序をランダム化する。
テスト条件¶
| 項目 | 値 |
|---|---|
| 対象シナリオ | DTE1045_TP035_CR035 |
| BT期間 | 2019-01-02 〜 2026-01-30 (1,808日) |
| 初期資本 | $50,000 |
| シミュレーション回数 | 10,000 |
| ブロックサイズ | 21日(約1ヶ月) |
| 月次出金率 | 30% |
| 破産判定 | equity < $1,500 (初期資本の3%) |
結果¶
破産確率¶
0.00% (0 / 10,000) — 10,000回のシミュレーションで1度も破産しなかった。
MaxDD(最大下落率)分布¶
MaxDDは「ピークから最大何%下がるか」を表す。数値が小さいほど安全。
| パーセンタイル | MaxDD | 解釈 |
|---|---|---|
| 中央値 (50th) | 24.7% | 半分のケースはこれ以下 |
| 75th | 28.4% | 4回に3回はこれ以下 |
| 90th | 33.0% | 10回に9回はこれ以下 |
| 95th | 35.8% | 20回に19回はこれ以下 |
| 99th | 42.1% | 100回に99回はこれ以下 |
| 最悪 | 61.4% | 10,000回中の最悪ケース |
解釈
95%の確率でMaxDDは35.8%以内に収まる。つまり\(50,000で始めた場合、ピークからの最大下落は\)17,900が95%上限。99%でも\(21,050。破産(\)1,500以下)には一度も到達しない。
最終Equity分布¶
7年後にいくら持っているかの分布(30%月次出金後の残額):
| パーセンタイル | 最終Equity | 解釈 |
|---|---|---|
| 最悪5% (p5) | $682,405 | 最悪でも13.6倍 |
| 中央値 | $2,063,593 | 典型的には41倍 |
| 最良5% (p95) | $6,790,938 | 好調なら136倍 |
| 最大 | $36,765,785 | 最良ケース |
最低到達Equity¶
シミュレーション期間中で最もequityが低くなった瞬間の値:
| パーセンタイル | 最低Equity | 解釈 |
|---|---|---|
| 平均 | $48,299 | 平均的には初期資本付近が底 |
| 5th | $42,408 | 初期資本の85% |
| 1st | $38,462 | 初期資本の77% |
| 最悪 | $27,014 | 初期資本の54%(10,000回中1回) |
日次 vs 月次の精度比較¶
同じシナリオで日次データ(1,808点)と月次データ(84点)でMCを実施した結果の比較:
| 指標 | 日次 (1,808点) | 月次 (84点) | 差分 |
|---|---|---|---|
| 破産確率 | 0.00% | 0.00% | — |
| MaxDD 中央値 | 24.7% | 18.8% | +5.9pp |
| MaxDD 95th | 35.8% | 28.4% | +7.4pp |
| MaxDD 99th | 42.1% | 34.8% | +7.3pp |
| 最終Equity中央値 | $2.06M | $2.05M | ≈同等 |
日次データの方がMaxDDが7-8pp高い。これは月次データでは月内の変動が平均化されてしまうため。日次データの方が現実に近い保守的な推定値となる。
資本別Monte Carlo(正確版)¶
簡易版($50Kのequity curveをスケーリング)ではMaxDD%が全資本で同一になってしまう。正確版では各初期資本でBTを実行し直し、capital scalingの違いを反映した日次equity curveでMCを実施。
- シナリオ: DTE1045_TP035_CR035(CSCV検定と同一)
- BT期間: 2019-01-02 〜 2026-01-30(7年間、1,808取引日)
- 条件: det/seed0/MID/30%月次出金、workers=12
BT結果(資本別)¶
全数値は30%月次出金込み。Total Wealth = 最終Equity残高 + 出金済み総額。
| 初期資本 | Total Wealth | 最終Equity | 出金済み総額 | MaxDD | WR | Trades |
|---|---|---|---|---|---|---|
| $50,000 | $17,510,903 (350x) | $11,860,032 | $5,650,871 (113x) | 26.8% | 80.1% | 3,274 |
| $32,000 | $14,755,625 (461x) | $10,056,662 | $4,698,963 (147x) | 26.8% | 80.1% | 3,274 |
| $13,000 | $7,271,884 (559x) | $5,020,215 | $2,251,669 (173x) | 25.9% | 80.2% | 3,249 |
括弧内は初期資本に対する倍率
\(13Kは倍率では最大(559x)だが、絶対額では\)50Kの42%。capital scalingの式 min(30 × equity/base, 50) により、初期のmax_positionsが小さく($13K→約12ポジション)、複利効果の立ち上がりが遅い。Trades数が25少ないのは、ポジション枠不足でエントリーを見送ったケースがあるため。
MC結果比較(10,000シミュレーション)¶
全数値は30%月次出金込みのEquity残高(出金済み分は含まない)。
MaxDD分布:
| パーセンタイル | $50K | $32K | $13K | 解釈 |
|---|---|---|---|---|
| 中央値 | 24.7% | 24.7% | 25.9% | 半分のケースはこれ以下 |
| 75th | 28.4% | 28.5% | 30.0% | 4回に3回はこれ以下 |
| 90th | 33.0% | 33.2% | 34.5% | 10回に9回はこれ以下 |
| 95th | 35.8% | 35.9% | 37.1% | 20回に19回はこれ以下 |
| 99th | 42.1% | 42.1% | 44.4% | 100回に99回はこれ以下 |
| 最悪 | 61.4% | 62.1% | 62.9% | 10,000回中の最悪ケース |
| 破産確率 | 0% | 0% | 0% | 10,000回中の破産回数 |
最終Equity分布(7年後の残高、30%出金後):
| パーセンタイル | $50K | 倍率 | $32K | 倍率 | $13K | 倍率 | 解釈 |
|---|---|---|---|---|---|---|---|
| 最悪 | $181,827 | 4x | $122,530 | 4x | $38,715 | 3x | 10,000回中の最悪 |
| 最悪5% | $682,405 | 14x | $524,996 | 16x | $230,467 | 18x | 悲観シナリオ |
| 25th | $1,292,955 | 26x | $1,005,230 | 31x | $462,788 | 36x | やや不調 |
| 中央値 | $2,063,593 | 41x | $1,618,690 | 51x | $744,432 | 57x | 典型的なケース |
| 75th | $3,358,305 | 67x | $2,600,776 | 81x | $1,209,971 | 93x | やや好調 |
| 最良5% | $6,790,938 | 136x | $5,219,271 | 163x | $2,418,102 | 186x | 楽観シナリオ |
| 最大 | $36,765,785 | 735x | $26,176,681 | 818x | $11,395,704 | 877x | 10,000回中の最良 |
倍率の逆転現象
$13Kは絶対額では最小だが、倍率では最大(中央値57x vs $50Kの41x)。小資本ほど初期の1ドルあたりの複利効果が大きい。ただしこれは同じリターン分布を仮定した場合であり、実際にはcapital scalingの制約でリターンが劣後する。
最低到達Equity(シミュレーション期間中の底値):
| パーセンタイル | $50K | $32K | $13K | 解釈 |
|---|---|---|---|---|
| 平均 | $48,299 | $30,907 | $12,503 | 平均的な底値 |
| 5th | $42,408 | $27,171 | $10,808 | 悲観的な底値 |
| 1st | $38,462 | $24,590 | $9,866 | かなり悪いケース |
| 最悪 | $27,014 | $16,599 | $6,520 | 10,000回中の最悪 |
$13KのMaxDDリスク
\(13Kは\)50K/\(32Kに比べてMaxDDが**1.2〜2.3pp高い**。capital scalingの立ち上がりが遅く、初期に少数ポジションに集中するため、特定銘柄の急落がポートフォリオ全体に大きく影響する。最悪ケースの底値\)6,520は初期資本の50%で、心理的にかなり厳しい。ただし破産確率は依然として0%。
結論
- \(50Kと\)32KはほぼMC結果で変わらない(MaxDD差0.1pp以内)。\(32Kで始めても\)50Kと同等のリスクプロファイル
- $13Kは1-2pp MaxDDが高いが、破産確率0%で実運用に耐える
- いずれの資本でも95th MaxDD < 38%、99th < 45%で堅牢
- 中央値で初期資本の41〜57倍(30%出金後の残高のみ。出金分を含めると実質リターンはさらに大きい)
未検証事項・今後の課題¶
- Polygonデータでのクロス検証 — ORATSとは異なるデータソース(Polygon bid/ask)で同一パラメータのBTを行い、データソース依存性を確認。quotes enrichment完了後に実施予定
参考文献
- Bailey, D.H., Borwein, J.M., López de Prado, M., & Zhu, Q.J. (2017). The Probability of Backtest Overfitting. Journal of Computational Finance.
- CSCV手法の原論文。本レポートの実装はこの論文の手法に基づく。