Skip to content
Learn
Sign up

Quantitative Methods & RiskPosition Sizing & Capital Allocation

The Kelly Criterion (and Why Full Kelly Is Violent)

15 min read

The mathematically optimal bet size — and its sharp edges

Given a known edge, is there a single 'best' fraction of capital to bet? John Kelly answered yes in 1956: the fraction that maximizes the long-run growth rate of wealth — equivalently, the expected logarithm of wealth. The Kelly criterion is genuinely optimal for compounding, and it is also genuinely dangerous in practice, because it assumes you know your edge exactly (you don't) and it produces a wild, stomach-churning equity curve.

Formula

Kelly fraction (simple win/loss form)

f* = W − (1 − W) / b = (b·W − (1 − W)) / b

Kelly criterion

Term

The bet fraction f* that maximizes the expected logarithm of wealth, and hence the long-run geometric growth rate. Betting more than f* lowers growth AND raises risk — it is strictly worse. Betting f* itself produces the fastest compounding but an extremely volatile equity path.

Heads up

Full Kelly is brutal — expect ~50% drawdowns

At the full Kelly fraction, deep drawdowns are not a risk, they are a certainty: a full-Kelly bettor will, with high probability, at some point see the account cut roughly in half before recovering. Worse, Kelly assumes your estimated edge is exact. If you OVER-estimate your edge — which everyone does, because backtests overfit — you are effectively betting ABOVE full Kelly, where growth turns negative and ruin becomes likely. Almost nobody trades full Kelly.

Formula

Why over-betting Kelly is asymmetric

Growth rate g(f) is a concave curve peaking at f*
50/100 ×Kelly
10/100 ×Kelly200/100 ×Kelly

Betting 0.50× the Kelly fraction captures about 75% of the maximum long-run growth rate, while volatility scales roughly linearly with the fraction. You are at or under full Kelly. Fractional Kelly sacrifices a little growth for a large reduction in drawdown.

kelly.py
python
1def kelly_fraction(win_prob, reward_to_risk):
2 """Growth-optimal fraction. Negative => no edge, bet nothing."""
3 b = reward_to_risk
4 f = win_prob - (1 - win_prob) / b
5 return max(f, 0.0)
6
7full = kelly_fraction(0.55, 1.0) # 0.10 -> 10% at full Kelly
8half = full * 0.5 # 0.05 -> half-Kelly, far smoother
9print(f"full Kelly = {full:.0%}, half Kelly = {half:.0%}")
10# In practice traders use 1/4 to 1/2 Kelly because the true edge is
11# never known exactly and over-betting is punished asymmetrically.
Computing Kelly is trivial; the discipline is in deliberately betting a fraction of it. Treat full Kelly as a ceiling you stay well below, not a target.

Knowledge check

A bet wins 60% of the time at even money (1:1). What is the full Kelly fraction, and what would a cautious trader more likely use?