A profitable bet can still make you go bust.
Positive expected value answers the wrong question when your bankroll compounds. Kelly's criterion starts with the path of wealth—and shows why too much confidence can destroy a real edge.
The attractive bet
Imagine the same independent bet is offered repeatedly. For every €1 staked:
Win €1
Lose €1
Its expected profit is positive: 0.55 × €1 − 0.45 × €1 = €0.10 per euro staked. It looks like an obvious bet. But “take it” is not a position size.
The failure hidden by expected value
If you stake the entire bankroll each time, one loss reduces wealth to zero. With repeated play, that loss eventually arrives. The edge was genuine; the sizing rule caused the ruin.
A good forecast plus a bad exposure can still be a bad strategy.
Make wealth multiplicative
Let f be the fraction of current wealth staked on each round. A win multiplies wealth by 1 + f; a loss multiplies it by 1 − f. Long-run compound growth is summarized by expected log growth:
For this even-money bet, maximizing that expression gives f* = 0.10: ten percent of current wealth—not the whole bankroll.
| Fraction staked | Expected log growth / round | Interpretation |
|---|---|---|
| 5% | +0.00375 | Underbet |
| 10% | +0.00501 | Full Kelly |
| 25% | −0.00673 | Positive EV, negative growth |
| 50% | −0.08891 | Severe overbetting |
| 100% | Ruin after first loss | Absorbing barrier |
What the clean formula still misses
Ten percent is not a universal recommendation. It is the answer inside this toy model. Real estimates are uncertain, outcomes can be fat-tailed, bets can be dependent, liquidity can disappear, and losses can be larger than the model permits. Those failures usually argue for less exposure—not more decimal precision.
- What event can make the loss larger than assumed?
- How uncertain are the probability and payoff estimates?
- What fraction still survives when the model is wrong?
Learn quant models through their failures.
The first Critical Quant labs are coming soon. Build the formula in small Python steps, then break the assumption that makes its output lie.
Get notified at launch