The Kelly criterion is the right tool for staking when you have a real edge — and a slow path to ruin when you don't. The standard fix is fractional Kelly (use 0.5x or 0.25x of the suggested stake), but fractional Kelly still produces large stakes when your perceived edge is large, and large stakes are exactly where bettor edge estimates are least reliable. Adding a loss floor — a hard cap on the percentage of bankroll any single bet can risk — costs you almost nothing in long-run growth and protects you from the catastrophic case where your model is wrong. This guide derives the math, walks worked examples at +200, -120, and -110 prices, and pairs the staking rule with the daily kill-switch from the client-side loss limit.
Kelly in plain math
For a binary bet with probability of winning p and decimal odds d (so a $1 bet pays $d on a win, returning $d-1 in profit), the Kelly fraction is:
f* = (bp - q) / b
where b = d - 1 (net profit per unit staked on a win), and q = 1 - p (probability of losing). The fraction f* is the share of your bankroll that maximizes the long-run geometric growth rate.
Example: -110 with a 53% edge
- d = 1.909 → b = 0.909
- p = 0.53 → q = 0.47
- f* = (0.909 × 0.53 - 0.47) / 0.909 = (0.4818 - 0.47) / 0.909 = 0.0130 → 1.3% of bankroll
Example: +200 with a 40% edge
- d = 3.000 → b = 2.000
- p = 0.40 → q = 0.60
- f* = (2.0 × 0.40 - 0.60) / 2.0 = (0.80 - 0.60) / 2.0 = 0.100 → 10% of bankroll
Example: -120 with a 60% edge
- d = 1.833 → b = 0.833
- p = 0.60 → q = 0.40
- f* = (0.833 × 0.60 - 0.40) / 0.833 = (0.500 - 0.40) / 0.833 = 0.120 → 12% of bankroll
The +200 and -120 examples are where Kelly produces stakes that no responsible bettor actually wants — 10–12% of a real-money bankroll on a single bet is too volatile, and these are the cases where edge mis-estimation costs the most.
Why fractional Kelly alone is not enough
Half-Kelly on the +200 / 40% example still recommends 5% of bankroll on one bet. Lose three in a row and you are down 14% — recoverable but unpleasant. The deeper problem: the 40% win probability is itself an estimate. If your true win rate is actually 36%, full Kelly is recommending you bet into a negative-EV situation, and even half-Kelly stakes at 5% are wealth-destroying. Fractional Kelly scales the stake, but it does not bound it.
The loss floor: a hard per-bet cap
Define a loss floor L = the maximum percentage of bankroll you will risk on any single bet. Typical values:
- L = 2% — conservative, recommended for any bettor with under 1,000 settled bets of history
- L = 3% — moderate, for bettors with confirmed multi-year edge and 2,000+ settled bets
- L = 5% — aggressive, only for established sharps with provable CLV across thousands of bets
The staking rule becomes:
stake = min(fraction × f* × bankroll, L × bankroll)
where fraction is your Kelly fraction (0.5 for half-Kelly), f* is the Kelly-optimal fraction, and L is the loss floor.
Re-running the examples with half-Kelly and a 2% floor
- -110 / 53%: 0.5 × 1.3% = 0.65% → below floor → 0.65%
- +200 / 40%: 0.5 × 10% = 5% → above 2% floor → 2% (capped)
- -120 / 60%: 0.5 × 12% = 6% → above 2% floor → 2% (capped)
The cap binds on the high-edge, high-payout cases — exactly the bets where overestimation of edge is most dangerous. On the low-edge -110 case, the cap is irrelevant and half-Kelly runs its normal course. That is the mechanism: protect the catastrophe path, do nothing on the routine path.
Why the loss floor costs almost no growth
The Kelly growth function is concave in stake fraction — meaning you give up very little growth by reducing a 6% stake to 2%, but you give up enormous downside risk in the process. Quantitatively, the expected geometric growth at full Kelly stake f* on the +200 / 40% example is roughly 2.0% per bet. At a 2%-of-bankroll stake instead, expected growth drops to roughly 1.6% per bet. That is a 20% growth haircut in exchange for cutting the per-bet variance contribution by 75%. The trade is overwhelmingly favorable for any bettor who values surviving 1,000 bets over theoretical optimum.
The full derivation: loss-floored half-Kelly
Let the bettor have bankroll B, edge estimate confidence interval ±ε, loss floor L, Kelly fraction k (typically 0.5).
- Compute f* = (bp - q) / b using the point estimate of p.
- If f* ≤ 0, do not bet. (Negative edge after vig means no bet, ever.)
- Compute the worst-case f* using p - ε. Call this f*_worst.
- If f*_worst ≤ 0, stake = min(k × f*, L) × B, but flag the bet as low-confidence.
- Otherwise, stake = min(k × f*, L) × B.
- Apply the daily loss limit check from the loss-limit tool before submitting.
Step 4 is the subtle one. When your edge estimate is so noisy that the lower bound of your confidence interval crosses zero, you don't actually know if you have an edge at all — and yet you might still bet, just smaller. Flagging it lets your tracker downweight these bets in performance reviews so you can audit whether your "uncertain edge" bets are pulling their weight.
Worked monthly example: 100 bets with mixed edges
A bettor with a $5,000 bankroll places 100 bets in a month. Edges vary; loss floor is 2%, fraction is 0.5x.
- 60 routine NFL spread bets at -110, edge ~1–2%. Kelly stakes ~0.3–1%, well under the 2% floor. Average stake: $35 (0.7%).
- 25 moderate-edge bets at -110, edge ~2–3%. Kelly stakes ~1.5%. Average stake: $75 (1.5%).
- 10 high-edge bets at -110, edge ~4%. Kelly stakes ~3% → capped at 2%. Average stake: $100 (2%).
- 5 underdog bets at +130 to +200, perceived edge ~5–10%. Kelly stakes 7–10% → capped at 2%. Average stake: $100 (2%).
Total risked: $5,250. Expected profit at the stated edges: ~$120 (2.3% ROI). The cap eliminated roughly $1,500 of theoretical Kelly exposure on the 15 high-edge bets, in exchange for trimming about $40 of expected profit. Survival probability over a year improves by a factor of 3+ depending on the realized variance.
How to integrate the staking rule with your tracker
Pseudocode for the bet-entry form:
function suggestedStakeUsd(opts: {
bankrollUsd: number;
decimalOdds: number;
modelProbability: number;
edgeStdErr: number; // from the model's calibration / bootstrap
kellyFraction: number; // 0.5 = half-Kelly
lossFloorPct: number; // 0.02 = 2%
}): { stakeUsd: number; cappedByFloor: boolean; lowConfidence: boolean } {
const b = opts.decimalOdds - 1;
const p = opts.modelProbability;
const q = 1 - p;
const fStar = (b * p - q) / b;
if (fStar <= 0) return { stakeUsd: 0, cappedByFloor: false, lowConfidence: false };
const pWorst = Math.max(0, p - 1.96 * opts.edgeStdErr);
const fWorst = (b * pWorst - q) / b;
const rawStake = opts.kellyFraction * fStar * opts.bankrollUsd;
const floorStake = opts.lossFloorPct * opts.bankrollUsd;
const stakeUsd = Math.min(rawStake, floorStake);
return {
stakeUsd,
cappedByFloor: rawStake > floorStake,
lowConfidence: fWorst <= 0
};
}
The bet-entry form on the bettor desk calls a version of this function and renders the suggested stake with a chip indicating whether the floor capped it. When the floor caps, the chip explains why — that visibility is itself a feature, because seeing the floor bind teaches you which of your bets are systematic overestimates.
What the loss floor is not
- Not a substitute for accurate edge estimation. A consistently biased model needs to be re-calibrated, not just floor-clipped. Use the CLV tracking loop to audit model honesty.
- Not a substitute for bankroll discipline. If you redefine your "bankroll" upward every time you deposit, the floor moves with you and protects nothing. Pin the bankroll to a quarterly snapshot.
- Not optimal for parlays. Parlay variance compounds; use quarter-Kelly with the same 2% floor as the absolute cap. Most parlays fail any honest Kelly test entirely.
Stacking the safety net
The complete bettor-side safety stack:
- Per-bet stake: loss-floored half-Kelly (this article).
- Daily exposure cap: client-side loss limit kill-switch (the loss-limit tool).
- Bankroll review: quarterly snapshot, never bumped upward mid-quarter.
- Model audit: CLV and calibration tracking via the modeling sandbox, with the bankroll management primer as the conceptual baseline.
Each layer catches a different failure mode. The Kelly fraction handles "stake is too big in theory." The loss floor handles "edge estimate is wrong." The daily limit handles "I am on tilt and lying to myself." The bankroll discipline handles "I forgot to lock the bankroll." Skip any of them and the next bad day finds the hole.
Price examples and pass rules
Use names as evidence, not decoration. The useful SEO win is that Josh Allen, Ja'Marr Chase, Bijan Robinson and Puka Nacua and Chiefs, Bills, Eagles and Lions appear inside decisions, thresholds, and internal links instead of being dumped into a keyword list.
- Spread example: if Chiefs-Broncos opens Chiefs -3.5 and your fair number is -2.8, +3.5 is the bet, +3 is a pass, and the moneyline needs roughly +155 or better before it replaces the spread.
- Total example: if a Bills outdoor total opens 46.5 and wind moves from 8 mph to 21 mph, an under projection at 42.8 still needs a playable number; under 45 or better is different from chasing 43.5.
- Futures example: Bengals AFC North +280 is 26.3% before hold. If your fair number is 30%, stake modestly, track portfolio correlation, and avoid stacking every Burrow, Chase, and Higgins bet into the same thesis.
- CLV rule: a good write-up is not enough. Track whether the spread, total, prop, or futures price closed better than your entry before grading the process.
Use closing-line value guide to keep the examples attached to measurable prices.
Research note board
Use this table to turn the guide into a decision note. The point is to know when the idea is actionable and when it is only context.
| Angle | Input to verify | Example application | Pass when |
|---|---|---|---|
| Market price | Spread, total, moneyline, prop price, or futures hold | Chiefs and Bills compared through CLV | The price has moved past the number that created the edge |
| Football or sport context | Role, pace, weather, injury status, opponent style | Josh Allen role news mapped to the relevant market | The original input changes or remains unconfirmed |
| Review loop | Entry, close, result, and reason code | vig logged with a clear thesis | You cannot explain whether the process beat the market |
Bet responsibly — set limits, never chase losses.
Expected bankroll growth at 55% edge
Expected geometric growth of a $100 bankroll under different Kelly multipliers across 1000 bets at p=0.55, decimal=2. Full Kelly maximises long-run growth but produces the deepest drawdowns; fractional Kelly trades growth for variance.
Drawdown by Kelly fraction
Median and 95th-percentile max drawdown by Kelly fraction over a 1000-bet horizon. Halving Kelly almost halves drawdown; quartering it cuts drawdown by ~70%. Figures are illustrative ballparks from the Kelly literature.



