Half-Kelly¶
Summary¶
Half-Kelly is the practice of betting 50% of the mathematically optimal Kelly fraction. It is the industry standard for sports betting applications because it strikes a balance between growth maximization and risk management. The key insight is that full Kelly has very high volatility and risk of ruin — a full Kelly bettor has a ~33% chance of halving their bankroll before doubling it. Half-Kelly reduces this to ~11%.
The Kelly criterion mathematically maximizes long-term geometric growth rate, but it assumes perfectly accurate probability estimates. In practice, sports bettors' models are always somewhat wrong, making full Kelly too aggressive. Half-Kelly (and in some cases quarter-Kelly) is used as a safety buffer.
The client's spec explicitly calls for Half-Kelly implementation as the staking strategy.
Key Concepts¶
- Full Kelly risk: A Kelly bettor has 1/3 chance of halving a bankroll before doubling it
- Half Kelly risk: A half-Kelly bettor has only 1/9 chance of halving before doubling — dramatically safer
- Growth tradeoff: Half-Kelly grows wealth more slowly but with much lower variance and drawdown risk
- Quarter-Kelly: Some practitioners go even further (25%) for additional safety when model uncertainty is high
- ** Kelly fraction selection**: The fraction chosen should reflect confidence in the probability estimates — more uncertain models should use smaller fractions
- Fixed Kelly vs. dynamic: Some systems use a fixed fraction (e.g., always half-Kelly); others adjust the fraction based on model confidence or market conditions
Mathematical Comparison¶
Growth rate comparison (from Albion Research):
For a 60% win probability, even money bet (b=1):
- Full Kelly: f = 0.20, growth rate = 2.0% per bet
- Half Kelly: f = 0.10, growth rate = 1.2% per bet
- Quarter Kelly: f* = 0.05, growth rate = 0.7% per bet
The growth rate of half-Kelly is about 60% of full Kelly, while variance is about 25% of full Kelly — a favorable tradeoff for most bettors.
Risk of ruin comparison:
- Full Kelly: 33% chance of halving before doubling
- Half Kelly: 11% chance of halving before doubling
- Quarter Kelly: ~3% chance of halving before doubling
Implementation Notes¶
The key practical consideration for Half-Kelly in the World Cup model:
1. Model probabilities must be well-calibrated — if the model systematically overestimates win probabilities, half-Kelly will still overbet
2. The Kelly stake = 0.5 × f × bankroll, where f comes from the full Kelly formula
3. With a small number of bets (64 World Cup matches), actual results will deviate significantly from theoretical — don't overinterpret short-term results
4. The bankroll should be large enough relative to individual stake sizes that Kelly doesn't produce absurdly large bets (e.g., a $10,000 bankroll with a 20% Kelly bet = $2,000 per match — reasonable for World Cup but might be too large for most bankrolls)
Python Implementation¶
def half_kelly_stake(bankroll, model_prob, fair_odds, bookie_odds):
"""
Calculate half-Kelly stake for a value bet.
Args:
bankroll: Total betting bankroll
model_prob: Model's estimated win probability
fair_odds: De-vigged fair odds (1/model_prob if using model as truth)
bookie_odds: Bookmaker offered odds
Returns:
Dictionary with stake size and EV information
"""
b = bookie_odds - 1 # net odds received
# Full Kelly
q = 1 - model_prob
f_full = max((model_prob * b - q) / b, 0)
# Half Kelly
f_half = f_full * 0.5
# Stake
stake = bankroll * f_half
# EV of the bet
ev = model_prob * bookie_odds - 1
return {
'full_kelly_fraction': f_full,
'half_kelly_fraction': f_half,
'stake': stake,
'stake_pct': f_half * 100,
'expected_value': ev,
'edge': (bookie_odds / fair_odds) - 1 if fair_odds else None
}
# Example: Brazil 60% win prob, odds 1.80, $10,000 bankroll
result = half_kelly_stake(
bankroll=10000,
model_prob=0.60,
fair_odds=1/0.60, # 1.667
bookie_odds=1.80
)
print(result)
# {'full_kelly_fraction': 0.167, 'half_kelly_fraction': 0.083,
# 'stake': 833.33, 'stake_pct': 8.3%, 'expected_value': 0.08, 'edge': 0.08}
Notes¶
- The client explicitly requires Half-Kelly — this is the standard approach for sports betting models
- Kelly stakes are proportional to bankroll, so bankroll management is important: the model should track bankroll over time and adjust stake sizes
- For World Cup: 64 matches over ~2 weeks, with potentially multiple bets per match day — Kelly can produce very aggressive stakes early in a tournament when bankroll is largest relative to remaining matches
- Consider implementing a maximum stake cap (e.g., never more than 5% of bankroll on a single bet) to prevent overconcentration