候補×期間の成績行列

M個の戦略候補を同じT時点で評価し、コスト後収益行列R∈ℝT×Mを作ります。候補はパラメータ違い、特徴量違い、ルール違いを含みます。

R = [rt,m], t=1,…,T, m=1,…,M

すべての候補を同一期間、同一コスト、同一資本規約で並べます。勝者だけを保存してもPBOは計算できません。

CSCV分割

原論文のCombinatorially Symmetric Cross-Validation(CSCV)は履歴を偶数S個の連続グループへ分け、半分をIS、残り半分をOOSにする全組合せを使います。

Csplits = C(S, S/2)

各分割cで、全候補のIS評価JIS,c(m)とOOS評価JOOS,c(m)を計算し、IS最良候補m*cを選びます。

m*c = arg maxm=1,…,M JIS,c(m)

目的関数と同点処理は事前に固定します。PBOを下げるために指標や分割数を選び直せば、PBO自体を過学習させます。

IS順位OOS順位123候補A候補B候補C123候補B候補C候補AIS優勝者がOOS中央値以下へ落ちる分割を数える
順位反転が何度起きるかを、全対称分割で調べます。

OOS順位とlogit

IS勝者m*cのOOS成績を全M候補の中で順位付けします。1を最悪、Mを最良とし、順位rcを(0,1)へ正規化します。

ωc = rc / (M+1)λc = ln[ωc / (1−ωc)]

ωc<0.5、すなわちλc<0なら、IS勝者はOOSで中央値より下です。連続成績の絶対値ではなく、候補集合内の相対順位を見ています。

Probability of Backtest Overfitting

全分割のうちλ≤0となる割合がPBO推定値です。

PBÔ = (1 / Csplits) Σc=1Csplits 1[λc ≤ 0]

PBO=0.60なら、ISで選んだ勝者がOOSで中央値以下へ落ちた分割が60%あった、という意味です。「60%の確率で将来損する」ではありません。

絶対成績も必ず併記する

候補がすべて損失でも、順位が安定していればPBOは低くなり得ます。逆に、分散効果の高い危機対応戦略は順位が不安定でも役割がある場合があります。

DSR・CPCVとの違い

方法中心となる問い主な出力
DSR探索量を考慮してSharpeは十分か基準超過確率
CPCV分割が変わるとOOS経路はどう分布するか複数OOS経路
PBOIS勝者はOOSでも上位か順位反転の割合

CPCVとPBOは組合せ分割という発想を共有しますが、原論文のPBOはIS/OOSを半分ずつにするCSCV順位推定です。名称と手順を混ぜずに報告します。

限界と実務

保存すべき最小ログ
candidate_id, rule_version, parameter_vector
split_id, is_groups, oos_groups
J_is, J_oos, rank_oos, omega, logit_lambda
cost_model, trade_count, N_TRIALS

ミニテスト

4問で確認します。

Q1. PBOの原論文で使う分割は?

履歴グループを半分ずつIS/OOSへ分けます。

Q2. λ≤0が表すものは?

候補集合内の相対順位です。

Q3. PBOが低ければ確認不要になるものは?

順位安定と収益性は別です。

Q4. PBO=0.60の正しい解釈は?

分割における選択失敗の割合です。

参考資料

Bailey et al., The Probability of Backtest Overfitting