Files
2025-11-30 08:38:26 +08:00

495 lines
12 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Kelly Criterion Deep Dive
Mathematical foundation for optimal bet sizing under uncertainty.
## Table of Contents
1. [Mathematical Derivation](#1-mathematical-derivation)
2. [Formula Variations](#2-formula-variations)
3. [Fractional Kelly](#3-fractional-kelly)
4. [Extensions](#4-extensions)
5. [Common Mistakes](#5-common-mistakes)
6. [Practical Implementation](#6-practical-implementation)
7. [Historical Examples](#7-historical-examples)
8. [Comparison to Other Methods](#8-comparison-to-other-methods)
---
## 1. Mathematical Derivation
### The Core Question
**Problem**: What fraction of your bankroll maximizes long-term growth?
**Why it matters**: Bet too little → Leave money on the table. Bet too much → Risk ruin, high variance.
### Logarithmic Utility Framework
**Key insight**: Maximize expected logarithm of wealth, not expected wealth.
**Why log utility?**
- Captures diminishing marginal utility ($1 matters more when you have $100 vs $1M)
- Makes repeated multiplicative bets additive: log(AB) = log(A) + log(B)
- Geometric mean emerges naturally (what matters for repeated bets)
- Prevents betting 100% (avoids ruin)
### Derivation for Binary Bet
**Setup**:
- Current bankroll: W
- Bet fraction: f
- Win probability: p, Loss probability: q = 1 - p
- Net odds: b (bet $1, win $b net)
**Outcomes**:
- Win (probability p): New wealth = W(1 + fb)
- Lose (probability q): New wealth = W(1 - f)
**Expected log utility**:
```
E[log(W_new)] = p × log(1 + fb) + q × log(1 - f) + log(W)
```
**Objective**: Maximize g(f) = p × log(1 + fb) + q × log(1 - f)
### Finding the Optimum
**Take derivative**:
```
dg/df = pb/(1 + fb) - q/(1 - f)
```
**Set equal to zero and solve**:
```
pb/(1 + fb) = q/(1 - f)
pb(1 - f) = q(1 + fb)
pb - pbf = q + qfb
pb - q = f(pb + qb) = fb(p + q) = fb
f* = (pb - q) / b = (bp - q) / b
```
**The Kelly Criterion**:
```
f* = (bp - q) / b
Where:
f* = Optimal fraction to bet
b = Net odds received
p = Win probability
q = 1 - p
```
### Alternative Form
**Edge** = Expected return per dollar bet = bp - q
**Kelly formula**: f* = Edge / Odds = (bp - q) / b
**Example**: p = 60%, b = 1.0 (even money)
- Edge = 0.6 × 1 - 0.4 = 0.2
- f* = 0.2 / 1 = 20%
### Optimality
**Second derivative**: d²g/df² < 0 at f = f* → Maximum confirmed
**Growth rate**: G(f*) maximizes long-run geometric growth
**Comparison**:
- f < f*: Lower growth (too conservative)
- f > f*: Lower growth (too aggressive, variance dominates)
- f > 2f*: Negative growth (eventual ruin)
---
## 2. Formula Variations
### Converting Market Odds
**Decimal odds** (e.g., 2.50): b = Decimal - 1 = 1.50
**American odds**:
- Positive (+150): b = 150/100 = 1.50
- Negative (-150): b = 100/150 = 0.667
**Fractional odds** (3/1): b = 3.0
**Implied probability**: Market p = 1/(b + 1)
### Multi-Outcome Bet
**Horse race**: Multiple options, bet on any with positive Kelly
**Formula for outcome i**:
```
f_i* = (p_i(b_i + 1) - 1) / b_i
If f_i* > 0: Bet f_i* on outcome i
If f_i* ≤ 0: Don't bet
```
### Continuous Outcomes (Merton's Formula)
**Stock market application**:
```
f* = μ / σ²
Where:
μ = Expected return (drift)
σ² = Variance of returns
```
**Example**: μ = 8%, σ = 20% → f* = 0.08/0.04 = 2.0 (200%, use leverage)
**Reality**: Too aggressive, use fractional Kelly → 50-100% more reasonable
---
## 3. Fractional Kelly
### Why Fractional Kelly?
**Problems with full Kelly**:
1. **Extreme volatility**: Wild swings, can lose 50%+ in bad runs
2. **Model error**: If probability estimate wrong, full Kelly overbets dramatically
3. **Practical ruin**: 20% chance of 50% drawdown before doubling
4. **Non-ergodic**: Most can't bet infinitely many times
### Formula
```
Fractional Kelly = f* × Fraction
Common choices:
- Half Kelly: f*/2
- Quarter Kelly: f*/4 (recommended)
- Third Kelly: f*/3
```
### Growth vs. Variance Trade-off
| Strategy | Growth Rate | Volatility | Max Drawdown |
|----------|-------------|------------|--------------|
| Full Kelly | 100% | 100% | -50% |
| Half Kelly | ~75% | 50% | -25% |
| Quarter Kelly | ~50% | 25% | -12% |
**Key**: Half Kelly gives 75% of growth with 25% of variance → Better risk-adjusted return
### Robustness to Error
**Example**: You think p = 0.60, true p = 0.55, even money bet
**Full Kelly** (f = 20%):
- Growth rate = 0.55×log(1.20) + 0.45×log(0.80) ≈ 0 (breakeven!)
**Half Kelly** (f = 10%):
- Growth rate = 0.55×log(1.10) + 0.45×log(0.90) ≈ 0.005 (still positive)
**Lesson**: Overbetting much worse than underbetting. Fractional Kelly provides buffer.
### Recommended Fractions
| Situation | Fraction | Reasoning |
|-----------|----------|-----------|
| Professional gambler | 1/4 to 1/3 | Reduces career risk |
| High model uncertainty | 1/4 or less | Error buffer crucial |
| High confidence | 1/2 to 2/3 | Can use more aggression |
| Institutional | 1/4 to 1/3 | Drawdown = career risk |
**Default**: Quarter Kelly (1/4) for most real-world situations
---
## 4. Extensions
### Multiple Simultaneous Bets
**Matrix form** (N assets):
```
f* = Σ⁻¹ × μ
Where:
Σ = Covariance matrix
μ = Expected returns vector
```
**Key insight**: Correlated bets reduce optimal sizing
**Heuristic**: Adjusted Kelly = Individual Kelly × (1 - ρ/2), where ρ = correlation
**Example**: ρ = 0.6, Individual Kelly = 15%
- Adjusted: 15% × (1 - 0.3) = 10.5%
### Correlated Outcomes
**Common correlations**:
- Political: Presidential + Senate races
- Sports: Team championship + Player MVP
- Markets: Tech stock A + Tech stock B
**Extreme cases**:
- ρ = 1 (perfect correlation): Only bet on one
- ρ = -1 (negative correlation): Bets hedge, can bet more
- ρ = 0 (independent): No adjustment
### Dynamic Kelly
**Problem**: Probability changes over time (new information)
**Process**:
1. Start with p₀, bet f₀*
2. New information → Update to p₁ (Bayesian)
3. Recalculate f₁*
4. Rebalance (adjust bet size)
**Consideration**: Transaction costs limit rebalancing frequency
---
## 5. Common Mistakes
### Mistake 1: Full Kelly Overbet
**The error**: Using full Kelly in practice
**Why wrong**: Assumes perfect probability estimate (never true)
**Impact**: Bet 2×f* → Negative growth rate
**Fix**: Always use fractional Kelly (1/4 to 1/2)
### Mistake 2: Ignoring Model Error
**The error**: Treating probability as certain
**Adjustment**:
```
Uncertain Kelly = f* × Confidence
Example: f* = 20%, 80% confident → Bet 16%
```
**Better**: Use fractional Kelly (implicitly adjusts)
### Mistake 3: Neglecting Bankruptcy
**Reality**: Finite games + estimation error → real ruin risk
**Drawdown stats** (full Kelly, p=0.55):
- 25% chance of -40% before recovery
- 10% chance of -50% before recovery
**Practical bankruptcy**: Client fires you, forced liquidation, can't maintain discipline
**Fix**: Use fractional Kelly, set stop-loss (if down 25%, pause)
### Mistake 4: Ignoring Correlation
**Example disaster**:
- 10 bets, each Kelly 10%
- All highly correlated (same theme)
- Bet 100% total → Single adverse event → Large loss
**Fix**: Measure correlations, use portfolio Kelly, diversify themes
### Mistake 5: Misestimating Odds
**Common confusion**:
- Decimal 2.0: b = 1.0 (not 2.0)
- "3-to-1": b = 3.0 ✓
- American +200: b = 2.0 (not 200)
**Fix**: Always convert to NET payout (b = total return - 1)
### Mistake 6: Static Bankroll
**Problem**: Calculate once, never update
**Fix**: Recalculate before each bet using current bankroll
---
## 6. Practical Implementation
### Step-by-Step Process
**1. Convert odds to decimal**:
```python
# Decimal odds: b = decimal - 1
# American +150: b = 150/100 = 1.50
# American -150: b = 100/150 = 0.667
# Fractional 3/1: b = 3.0
```
**2. Determine probability**: Use forecasting process (base rates, Bayesian updating, etc.)
**3. Calculate edge**:
```python
edge = net_odds * probability - (1 - probability)
```
**4. Calculate Kelly**:
```python
kelly_fraction = edge / net_odds
```
**5. Apply fractional Kelly**:
```python
fraction = 0.25 # Quarter Kelly recommended
adjusted_kelly = kelly_fraction * fraction
```
**6. Calculate bet size**:
```python
bet_size = current_bankroll * adjusted_kelly
```
**7. Execute and track**:
- Record: Date, event, probability, odds, edge, Kelly%, bet
- Set reminder for resolution
- Note new information
### Position Tracking Template
```
Date: 2024-01-15
Event: Candidate A wins
Your probability: 65%
Market odds: 2.20 (implied 45%)
Net odds (b): 1.20
Edge: 0.43 (43%)
Full Kelly: 35.8%
Fractional (1/4): 8.9%
Bankroll: $10,000
Bet size: $890
Resolution: 2024-11-05
```
---
## 7. Historical Examples
### Ed Thorp - Blackjack (1960s)
**Application**: Card counting edge varies with count → Dynamic Kelly
**Implementation**:
- True count +1: Edge ~0.5%, bet ~0.5% of bankroll
- True count +5: Edge ~2.5%, bet ~2.5% of bankroll
**Results**: Turned $10k into $100k+, proved Kelly works in practice
**Lessons**: Used fractional Kelly (~1/2), dynamic sizing, managed "heat" (detection risk)
### Princeton-Newport Partners (1970s-1980s)
**Strategy**: Statistical arbitrage, convertible bonds
**Kelly application**: 1-3% per position, 50-100 positions (diversification)
**Results**: 19.1% annual (1969-1988), only 4 down months in 19 years, <5% max drawdown
**Lessons**: Fractional Kelly + diversification = low volatility, dominant strategy
### Renaissance Technologies / Medallion Fund
**Strategy**: Thousands of small edges, high frequency
**Kelly application**:
- Each signal: 0.1-0.5% (tiny fractional Kelly)
- Portfolio: 10,000+ positions
- Leverage: 2-4× (portfolio Kelly supports with diversification)
**Results**: 66% annual (gross) over 30+ years, never down year
**Lessons**: Kelly optimal for repeated bets with edge. Diversification enables leverage. Discipline crucial.
### Warren Buffett (Implicit Kelly)
**Concentrated bets**: American Express (40%), Coca-Cola (25%), Apple (40%)
**Why Kelly-like**: High conviction → High p → Large Kelly → Large position
**Quote**: "Diversification is protection against ignorance."
**Lessons**: Kelly justifies concentration with edge. Still uses fractional (~40% max, not 100%).
---
## 8. Comparison to Other Methods
### Fixed Fraction
**Method**: Always bet same percentage
**Pros**: Simple, prevents ruin
**Cons**: Ignores edge, suboptimal growth
**When to use**: Don't trust probability estimates, want simplicity
### Martingale (Double After Loss)
**Method**: Double bet after each loss
**Fatal flaws**:
- Requires infinite bankroll
- Exponential growth (10 losses → need $10,240)
- Negative edge → lose faster
- Betting limits prevent recovery
**Conclusion**: **NEVER use**. Mathematically certain to fail.
### Fixed Amount
**Method**: Always bet same dollar amount
**Cons**: As bankroll changes, fraction changes inappropriately
**When to use**: Very small recreational betting
### Constant Proportion
**Method**: Fixed percentage, not optimized for edge
**Difference from Kelly**: Doesn't adjust for edge/odds
**Conclusion**: Better than fixed dollar, worse than Kelly
### Risk Parity
**Method**: Allocate to equalize risk contribution
**Difference from Kelly**: Doesn't use expected returns (ignores edge)
**When better**: Don't have reliable return estimates, defensive portfolio
**When Kelly better**: Have edge estimates, goal is growth
### Summary Comparison
| Method | Growth | Ruin Risk | When to Use |
|--------|--------|-----------|-------------|
| **Kelly** | Highest | None* | Active betting with edge |
| **Fractional Kelly** | High | Very low | **Real-world (recommended)** |
| **Fixed Fraction** | Medium | Low | Simple discipline |
| **Fixed Amount** | Low | Medium | Recreational only |
| **Martingale** | Negative | Certain | **NEVER** |
| **Risk Parity** | Low-Med | Low | Defensive portfolios |
*Kelly theoretically no ruin risk, but model error creates practical risk → use fractional Kelly
**Final Recommendation**: **Quarter Kelly (f*/4)** for nearly all real-world scenarios.
---
## Return to Main Skill
[← Back to Market Mechanics & Betting](../skill.md)
**Related resources**:
- [Betting Theory Fundamentals](betting-theory.md)
- [Scoring Rules and Calibration](scoring-rules.md)