TL;DR
- 期待値 (EV) プラスでも、賭け金率と variance によって破産確率は急上昇する
- Risk of Ruin (RoR) は bankroll units、edge、bet size の関数として計算可能
- 制御手段: Fractional Kelly、bet size cap、drawdown stop、per-bet liability cap
- 「edge があるから勝てる」は long-run の漸近性質。有限資金では時間切れリスクが先に来る
Hook
edge +1% (期待リターン 1%) のベットを毎日 1 つ、1 年続けたらどうなるか? 直感的には「期待値プラスだから資産は増える」と思える。
ところが、「資金の何 % を賭けるか」を変えるだけで結果は劇的に変わる。例えば賭け金率 50% (= ハーフベット) で +1% edge を回すと、theoretical 期待値はプラスだが、破産確率は 50% を軽く超える。
期待値が支配する世界と、variance が支配する世界の違いを直視する必要がある。
Risk of Ruin — 破産確率の古典数理
Gambler’s ruin (古典確率論) の文脈から始まる。simple random walk で starting bankroll から absorption (破産点) に到達する確率は閉形式で書ける。
賭け金率 f、edge e (= prob 上回り)、bankroll units N の単純化したケースで:
RoR ≈ ((1 - f·e) / (1 + f·e))^N
(approximation、正確な式は Vince の Money Management や Wikipedia “Gambler’s ruin” 参照)
感度
| パラメータ | RoR への影響 |
|---|---|
| edge e 増加 | RoR 急減 |
| bet size f 増加 | RoR 急増 (Over-Kelly で発散) |
| bankroll units N 増加 | RoR 減少 |
つまり、edge を上げる以上に、bet size を抑えることが RoR を下げる効率的手段 (特に Over-Kelly 領域では破壊的)。
Kelly Criterion との接続
記事 1 で扱った Kelly Criterion は、対数効用最大化と等価で、長期で複利成長最大化の最適解 f* を与える。だが Full Kelly は variance が大きすぎて、有限資金では破産前に長期に到達できない。
Fractional Kelly (f = f* / k、典型 k = 4) を使うと:
- 期待成長率は Full Kelly の 7/16 まで落ちる (k=4 の場合)
- variance は 1/16 まで縮む
- RoR は劇的に下がる
長期成長率を諦めて RoR を下げる、という trade-off。
Over-Kelly の非対称性 (再訪)
Kelly 公式の感度を強調しておく。期待成長率 g(f) は f* で最大、両側で減少だが:
- f < f* (Sub-Kelly) 側は緩やかに減少
- f > f* (Over-Kelly) 側は急激に減少
- f = 2f* では g(f) = 0、それ以上では g < 0 (期待値プラスのゲームが期待値マイナス運用に転落)
edge 推定を倍に間違えただけで、運用は破綻方向に転じる。Over-Kelly は Sub-Kelly よりはるかに悪い。
Risk of Ruin の Monte Carlo
閉形式が複雑な場合、Monte Carlo で簡単に推定できる。
import numpy as np
def simulate_ror(p, b, f, bankroll_units, n_trials=10_000, n_bets=10_000):
rng = np.random.default_rng(42)
bust = 0
for _ in range(n_trials):
br = bankroll_units
for _ in range(n_bets):
if br <= 0:
bust += 1
break
stake = f * br
if rng.random() < p:
br += b * stake # 勝ち
else:
br -= stake # 負け
return bust / n_trials
# 例: p=0.55, b=1 (Kelly fraction 10%)
# Full Kelly (f=0.10) と Half Kelly (f=0.05) の比較
ror_full = simulate_ror(p=0.55, b=1, f=0.10, bankroll_units=1) # bankroll units で正規化
ror_half = simulate_ror(p=0.55, b=1, f=0.05, bankroll_units=1)教科書的な数値感覚: 50,000 ベット程度回すと、Full Kelly は drawdown 50% を 1 回以上経験する確率がほぼ 100%。Half Kelly では 30% 程度に落ちる。
variance を抑える戦術
実務で使える variance 制御の手段。
1. Fractional Kelly
f = f* / k (typical k=4)。最も古典的で標準。
2. Bet Size Cap (絶対上限)
f を計算しても、絶対 bet size が bankroll * X% を超えたら X% で cap。Over-Kelly の暴走を機械的に防ぐ。
3. Drawdown Stop
累積 drawdown が -Y% に到達したら運用停止 → 仕切り直し。「破産する前に降りる」明示ルール。
4. Per-Bet Liability Cap
1 ベットあたりの最大潜在損失を絶対額で cap。ポジションサイズではなく liability で制限する。
5. Diversification
相関の低い複数 edge に分散。1 つの edge が崩壊しても portfolio が生き残る。
Long-Run vs 有限資金 — 哲学的 trade-off
Kelly の最適性は 長期で複利成長最大化 という性質。だが:
- 「長期」とは何百年? 何千ベット? 死ぬまで?
- 有限資金で時間切れ (= 破産) になる前に「長期」に到達できなければ、最適性は無意味
- 短期の large drawdown は「精神的に運用継続不可能」を引き起こす → 長期前提が崩れる
つまり、理論最適 ≠ 実運用最適。「破産しないこと」が最優先で、その制約下で成長を狙う、というのが実務の発想。
「first rule of compounding: never interrupt it unnecessarily」 (Buffett 風に言えば)
破産は最大の中断。それを variance management で防ぐのが戦略運用者の仕事。
個人的経験
backtest で edge 数値を見て「+X% なら勝てる」と楽観的になったが、Risk of Ruin を計算すると、対応する bet size では破産確率が無視できない値だった、という経験がある。期待値だけで意思決定すると variance に殺される。
具体的な liability 上限と Fractional Kelly の組み合わせで RoR を管理する、というのが実務的な処方箋。Bet sizing は「edge を最大限活かす」ではなく「RoR を許容範囲に抑えながら edge を取る」という制約最適化問題。
まとめ
- 期待値プラスは「勝つ」を意味しない
- variance + bet size + bankroll で破産確率が決まる
- Fractional Kelly + bet cap + drawdown stop の組み合わせが実務解
- Kelly 公式は対称ではない: Over-Kelly は Sub-Kelly より遥かに悪い
- 「破産しないこと」が最優先。それから edge を追求する
次回は連載総括。Marcos Lopez de Prado の バックテスト罠 10 選 を整理する。
参考文献
- Vince, R. (1992). The Mathematics of Money Management. Wiley.
- MacLean, L.C., Thorp, E.O., Ziemba, W.T. (Eds.) (2011). The Kelly Capital Growth Investment Criterion. World Scientific.
- Thorp, E.O. (2008). The Kelly Criterion in Blackjack, Sports Betting, and the Stock Market. In Handbook of Asset and Liability Management.
- Wikipedia, “Gambler’s ruin”.
- Wikipedia, “Risk of ruin”.