How Much Estimation Error Does It Take to Break Full Kelly?
A 300,000-slate simulation measuring when probability-estimation error causes full Kelly to fall behind fractional and capped staking.
Abstract
Kelly staking tells you how much to risk once you know the probability of winning. Nobody knows the probability. This measures what that costs.
We simulated a bettor choosing from a pool of 20 candidate bets priced at -110, staking everything that looks profitable, with a true edge of 1.0 point and estimation error swept from 0 to 3 percentage points. Outcomes are drawn from the true probabilities, not the believed ones. 300,000 slates at every error level, seeded and reproducible.
Three numbers come out of it:
- Between 1.1 and 1.2 points of estimation error, full Kelly loses its lead. At 1.1 points its difference from half Kelly is indistinguishable from zero. At 1.2 points half Kelly leads.
- At 2.1 points, full Kelly's growth turns negative, on slates where the bettor still holds a real 1-point edge. Every fractional and capped rule tested stays positive across the entire range.
- The mechanism is selection, not noise. Because the bettor only takes bets that look profitable, unbiased error does not cancel out. At 3 points of error, the bets actually taken carried a believed edge of 3.07 points against a true edge of 1.42.
That last one generalizes past betting. Your estimation errors can be unbiased overall and still be biased in the subset you select.
Why this question
Two things get repeated about staking, usually as if they are in tension. The first is that full Kelly maximizes long-run growth. The second is that half Kelly is the sensible choice because it trades a little growth for much less variance.
Both assume the probability going in is correct. The first is a theorem about known probabilities. The second is normally argued from variance, as though the cost is a smoother ride for slightly less money.
Neither answers the question a bettor actually has: how wrong do my numbers have to be before full Kelly is not just bumpier but worse. That is measurable, so we measured it.
Method
The bet
Every candidate is priced -110 on both sides. Net payout on a winner is 10/11 of the stake, so the break-even probability is 52.38%.
The bettor
Each slate presents a pool of 20 candidates. For each candidate:
- A true probability is drawn as 52.38%, plus the true edge, plus normal noise with a standard deviation of 1.5 points. That noise is dispersion in the pool itself: some offered bets are genuinely better than others.
- The bettor's believed probability is the true probability plus independent normal error, with a standard deviation set by the condition. This is the only number the bettor ever sees.
- Both are clamped to the range 2% to 98%.
Selection
The bettor stakes every candidate whose believed probability is above 52.38%, and skips the rest. That is 12 to 15 bets out of 20 across these conditions. This step is what makes the experiment realistic, and it is also what does the damage, because the candidates that survive the filter are disproportionately the ones the bettor's error flattered.
Staking
Stakes are computed from the believed probability, as a fraction of bankroll, under seven rules:
| Rule | Definition |
|---|---|
| full Kelly, uncapped | the textbook fraction |
| half Kelly, uncapped | half of it |
| quarter Kelly, uncapped | a quarter of it |
| full Kelly + 3% per-bet cap | no single stake above 3% of bankroll |
| full Kelly + 15% total cap | stakes scaled down together if the slate totals more than 15% |
| full Kelly + 3% bet + 15% total | both |
| flat 1% per selected bet | ignores the estimate entirely, for reference |
Resolution and scoring
Each selected bet resolves independently against its true probability. The bankroll starts at 1 each slate and is settled once. The score is the mean log wealth change per slate. A bankroll driven to zero or below is floored at 1e-9 and counted as a ruin event.
Every staking rule sees the same slates and the same win and loss draws, so comparing two rules is a paired comparison. Confidence intervals below are computed on the per-slate difference between two rules, which is much tighter than differencing two independent averages, and it is what decides whether a crossover in the chart is real or an artifact of the seed.
Parameters
300,000 slates per error level. Pool size 20. True edge 1.0 point. Seed 12345, mulberry32. Error swept on a half-point grid from 0.0 to 3.0, refined to 0.1-point steps through 1.0 to 1.5 and 2.0 to 2.5, the two regions where a rule changes hands. The committed figures were produced on Node 24.12.0.
Result 1: where full Kelly breaks
Growth is the mean log wealth change per slate (x 1e-4).
| Error | full Kelly | half Kelly | quarter Kelly | full Kelly + 3% cap | Best rule |
|---|---|---|---|---|---|
| 0.0 | 115.34 | 87.26 | 50.91 | 88.51 | full Kelly |
| 0.5 | 109.58 | 86.57 | 51.08 | 85.36 | full Kelly |
| 1.0 | 87.25 | 81.15 | 49.68 | 78.84 | full Kelly |
| 1.1 | 84.43 | 81.25 | 50.09 | 75.88 | full Kelly |
| 1.2 | 75.39 | 78.88 | 49.38 | 75.08 | half Kelly |
| 1.5 | 49.72 | 72.21 | 47.39 | 67.38 | half Kelly |
| 2.0 | 5.62 | 64.24 | 46.35 | 60.64 | half Kelly |
| 2.1 | -3.07 | 63.39 | 46.70 | 59.55 | half Kelly |
| 2.5 | -52.47 | 55.79 | 45.95 | 56.58 | full Kelly + 3% cap |
| 3.0 | -146.01 | 42.33 | 43.71 | 51.48 | full Kelly + 3% cap |
The full grid, including the 0.1-point steps, is in the reproduction output.
Full Kelly's lead ends between 1.1 and 1.2 points of error. Paired against half Kelly on the same slates, full Kelly is ahead by 6.10 at 1.0 point (95% CI 2.92 to 9.28). At 1.1 points the gap is 3.18 in full Kelly's favor, but the interval runs from -0.06 to 6.43 and straddles zero, so the two rules are indistinguishable there. At 1.2 points half Kelly leads by 3.49 (95% CI 0.14 to 6.83), and that lead grows monotonically to 188.34 at 3 points.
The grid resolves the handover to a 0.1-point window and no further. The crossover is somewhere in it, and this experiment does not say where.
Full Kelly turns negative at 2.1 points. On slates carrying a genuine 1-point edge, while half Kelly returns 63.39 and a 3% per-bet cap returns 59.55 on the exact same bets.
The negative result is not ruin. At 3 points of error, ruin occurred on 0.011% of slates, 33 of 300,000. At a floor of log(1e-9) those 33 slates contribute -22.80 of the -146.01. Strip them entirely and the figure is about -123. The collapse is ordinary overbetting on inflated numbers.
Result 2: the bets get worse while they look better
| Estimation error | Believed edge | True edge |
|---|---|---|
| 0 pts | 1.64 | 1.64 |
| 1.0 pts | 1.87 | 1.60 |
| 1.5 pts | 2.11 | 1.55 |
| 2.0 pts | 2.40 | 1.51 |
| 2.5 pts | 2.73 | 1.46 |
| 3.0 pts | 3.07 | 1.42 |
The two lines move in opposite directions. As the bettor's estimates get worse, the bets they choose look better to them and are in fact slightly worse.
The error itself is unbiased. Every candidate's believed probability is its true probability plus noise with a mean of zero, so across repeated samples the errors average to zero. But the bettor does not bet the whole pool. They bet the ones that cleared a threshold, and clearing the threshold is correlated with having been flattered by the noise. The filter that makes a bettor selective is the same filter that concentrates their mistakes.
The estimation process is unbiased. The bias is manufactured by the act of choosing.
That is why full Kelly fails here rather than merely getting noisier. Full Kelly sizes in proportion to believed edge, and believed edge is exactly the quantity the selection has inflated. It bets hardest where the error was largest. A cap breaks that link, which is why a single 3% per-bet limit outperforms every uncapped rule once error passes 2.5 points.
What this does not show
This is not a test of KellyIQ's optimizer. The simulation uses textbook Kelly fractions, while KellyIQ uses a different allocation model. No result on this page measures KellyIQ's performance. The research is about what estimation error does to staking rules when the inputs are uncertain.
The error model is unbiased. The simulated bettor is right on average. Systematic bias, a bettor whose estimates are consistently too high or too low, was not tested and is a separate question from the one measured here.
Bets are treated as independent. Every outcome resolves on its own probability, with no correlation between bets on the same slate. Correlated outcomes are a real feature of real slates and nothing here speaks to them.
One price, one pool size, one horizon. Everything is -110 with a pool of 20, and each slate settles from a fresh bankroll rather than compounding across a season. The crossover points would move at different prices, pool sizes and dispersions. The 1.2 figure belongs to this setup, not to betting in general.
A methodology note, included because it nearly cost us a different result. In a related run comparing constrained staking rules, the baseline representing a careful person with a spreadsheet was implemented as a Euclidean simplex projection, subtracting a constant and flooring at zero. That made the naive baseline perform worse than plain proportional scaling, which should have been impossible. Uncaught, it would have produced a published advantage of 25.72% that was entirely an artifact of a strawman comparison. It was caught by reproducing the naive baseline as a sanity check before trusting the result. Any comparison of this kind should do the same, and we would rather say so here than have someone else find it.
Summary
Full Kelly is the fastest way to grow a bankroll when you know the probabilities. Somewhere between 1.1 and 1.2 percentage points of estimation error is enough to cost it that title, in this setup, and a shade over 2 points is enough to turn it negative on bets that are genuinely profitable.
The reason is not that Kelly is aggressive, though it is. The reason is that a bettor who only takes what looks profitable is running a filter that selects for their own errors. Unbiased estimates become biased the moment you choose which ones to act on, and full Kelly sizes on the inflated number.
Reproduce it
No dependencies, Node 18 or later. Every run is seeded, so the output matches the figures on this page.
- estimate-error.mjs
The four headline conditions.
- estimate-error-sweep.mjs
The error sweep behind the charts. Writes estimate-error-sweep.json.
- make-charts.mjs
Turns that JSON into the two charts on this page.
- estimate-error-sweep.json
The sweep's own output, so make-charts.mjs runs without waiting for the sweep.
- estimate-error-output.txt
Committed output of the first script, to diff against your own run.
- estimate-error-sweep-output.txt
Committed output of the sweep.
KellyIQ is a modeling tool. It produces allocation outputs under user-defined assumptions and does not recommend, advise, or predict any wagering outcome. For entertainment; 21+, US only. If gambling is a problem, call 1-800-GAMBLER.