What Kelly actually maximises
Kelly does not maximise expected profit. If it did, the answer would always be "bet everything" for any positive-expectancy wager, and one loss would end the sequence. Kelly maximises the expected logarithm of wealth, which is the same thing as maximising the long-run compound growth rate.
The switch from arithmetic to logarithmic is the whole insight. Wealth compounds multiplicatively — a 50% loss followed by a 50% gain leaves you at 0.5 × 1.5 = 0.75, not back at 1.0 — so the quantity that adds up across trades is the log of each period's growth factor, not the percentage. The recovery asymmetry that makes this true is worked out in full in the drawdown recovery math guide.
After n bets, wealth W_n = W_0 × Π (1 + f × R_i)
Take logs: ln(W_n / W_0) = Σ ln(1 + f × R_i)
Divide by n and let n grow:
G(f) = E[ ln(1 + f × R) ] the per-bet growth rate
Kelly = the f that maximises G(f).
Deriving the discrete formula
Take the simplest case: risk fraction f of capital, win with probability p and receive b times what you risked, lose with probability q = 1 − p and lose the whole f. Write down G(f), differentiate, set it to zero.
G(f) = p · ln(1 + b·f) + q · ln(1 − f)
dG/df = p·b ÷ (1 + b·f) − q ÷ (1 − f) = 0
p·b·(1 − f) = q·(1 + b·f)
p·b − p·b·f = q + q·b·f
p·b − q = b·f·(p + q) = b·f since p + q = 1
f* = (p·b − q) ÷ b = p − (1 − p) ÷ b
That is the whole derivation. It is worth doing once by hand, because the shape of G(f) — rising steeply from zero, flattening at the top, then plunging — explains every practical rule that follows.
A worked example
A setup that wins 45% of the time and pays 2R on a win, taken from a journal with enough trades to estimate both:
p = 0.45, b = 2
f* = 0.45 − (1 − 0.45) ÷ 2
= 0.45 − 0.55 ÷ 2
= 0.45 − 0.275
= 0.175 → risk 17.5% of the account on this trade
Risking 17.5% of the account on one idea is not a plan, it is a countdown. The arithmetic is correct; the output is unusable. Understanding exactly why is the rest of this guide.
The full grid
Kelly is more legible as a surface than as a single number. Every cell below is f* = p − (1 − p) ÷ b, so it is the percentage of capital full Kelly says to put at risk on one bet:
| Win rate | b = 1R | b = 1.5R | b = 2R | b = 3R |
| 30% | −40.0% | −16.7% | −5.0% | +6.7% |
| 35% | −30.0% | −8.3% | +2.5% | +13.3% |
| 40% | −20.0% | 0.0% | +10.0% | +20.0% |
| 45% | −10.0% | +8.3% | +17.5% | +26.7% |
| 50% | 0.0% | +16.7% | +25.0% | +33.3% |
| 55% | +10.0% | +25.0% | +32.5% | +40.0% |
| 60% | +20.0% | +33.3% | +40.0% | +46.7% |
Two things fall straight out of that grid. First, the zero line is the break-even win rate: f* turns positive exactly when p exceeds 1 ÷ (1 + b) — 50% at 1R, 40% at 1.5R, 33.3% at 2R, 25% at 3R. Second, the positive numbers are absurd across the whole grid. Even a modest 40% at 2R produces a full-Kelly instruction to risk 10% of the account per trade, which is roughly ten times what a working position sizing rule would allow.
The growth curve, and why the peak does not matter
Plug fractions of f* back into G(f) for the same 45%/2R setup. The column that matters is the third one — how much of the theoretically available growth you actually keep.
| Sizing | Risk per trade | Growth per trade G(f) | % of max growth | Trades to double |
| 0.25× Kelly | 4.38% | 0.01314 | 44.9% | 53 |
| 0.5× Kelly | 8.75% | 0.02221 | 75.9% | 31 |
| 0.75× Kelly | 13.13% | 0.02751 | 94.1% | 25 |
| 1.0× Kelly | 17.50% | 0.02924 | 100.0% | 24 |
| 1.25× Kelly | 21.88% | 0.02753 | 94.2% | 25 |
| 1.5× Kelly | 26.25% | 0.02243 | 76.7% | 31 |
| 2.0× Kelly | 35.00% | 0.00185 | 6.3% | 374 |
Read the 0.5× and 1.5× rows together. They are the same distance from the peak and they keep almost the same growth — 75.9% versus 76.7% — but one of them roughly triples the variance of the other. If the curve is symmetric in growth terms and wildly asymmetric in risk terms, the correct side to be wrong on is obvious.
Then read the 2.0× row. Double the Kelly fraction and the growth rate collapses to 6.3% of the maximum; a little past that it goes negative and the strategy loses money despite a genuinely positive edge. Overbetting does not reduce your return proportionally, it destroys it. There is no equivalent cliff on the downside — underbetting is merely slow.
The return-based form, for trades that are not coin flips
Real trades do not produce two outcomes. They produce a distribution of R-multiples: a few big winners, a mass of small ones, some scratches, a stack of full stop-outs. The discrete p-and-b formula cannot represent that. For an arbitrary R distribution, maximise E[ln(1 + f·R)] directly, or use the second-order approximation, which is accurate for the magnitudes traders deal with:
f* ≈ E[R] ÷ E[R²]
E[R] = expectancy in R (mean of the R column)
E[R²] = mean of the SQUARED R column
Equivalently, in continuous form: f* ≈ μ ÷ σ²
Sanity-check it against the discrete case first. For p = 0.45 at b = 2: E[R] = 0.45(2) + 0.55(−1) = 0.35, and E[R²] = 0.45(4) + 0.55(1) = 2.35, so f* ≈ 0.35 ÷ 2.35 = 14.9% against the exact 17.5%. The approximation runs slightly conservative, which is the correct direction for it to err.
Now a realistic hundred-trade R distribution of the kind a trading journal actually produces, including the partial exits and scratches that the two-outcome model pretends do not exist:
| R result | Trades | Contribution to Σ R | Contribution to Σ R² |
| +3.0R | 12 | +36.0 | 108.00 |
| +1.5R | 18 | +27.0 | 40.50 |
| +0.5R | 15 | +7.5 | 3.75 |
| −0.3R | 20 | −6.0 | 1.80 |
| −1.0R | 35 | −35.0 | 35.00 |
| Total (100 trades) | 100 | +29.5 | 189.05 |
E[R] = 29.5 ÷ 100 = 0.295 R per trade
E[R²] = 189.05 ÷ 100 = 1.8905
f* ≈ 0.295 ÷ 1.8905 = 0.156 → 15.6% of capital
Quarter Kelly = 0.156 ÷ 4 = 3.9%
Win rate here is 45 of 100, and the expectancy is +0.295R —
a perfectly respectable system that still produces an
unusable full-Kelly number.
This form is worth using because it consumes the same data you already keep. If you record entry, stop, exit and the resulting R on every trade, you can compute both columns in one pass. Where those columns come from is covered in the R-multiple and expectancy guide.
Estimation error: how wide f* really is
Kelly treats p as known. You have an estimate from N trades, and the standard error of a proportion is √(p(1−p)/N). Push the confidence interval on p through the Kelly formula and see how much of it survives:
| Trades measured | Std error of p | 95% CI on win rate | 95% CI on f* at b = 2 | Range |
| 50 | 0.0704 | 31.2% to 58.8% | −3.2% to +38.2% | Includes zero — no usable answer |
| 100 | 0.0497 | 35.3% to 54.8% | +2.9% to +32.1% | 11× wide |
| 400 | 0.0249 | 40.1% to 49.9% | +10.2% to +24.8% | 2.4× wide |
| 1,000 | 0.0157 | 41.9% to 48.1% | +12.9% to +22.1% | 1.7× wide |
At 50 trades — which is more than most retail traders have per setup — the Kelly fraction for a 45%/2R system is somewhere between "do not trade this" and "risk 38% of the account". At 100 trades, the plausible range still spans a factor of eleven. And that interval assumes the win rate is stationary, which it is not.
This is the actual argument for fractional Kelly, and it is stronger than the usual one about nerves. You are not shading a known optimum down for comfort; you are sizing against the bottom of a confidence interval because the point estimate is nearly meaningless. Quarter Kelly on the 100-trade point estimate is 4.4%, which sits comfortably inside even the pessimistic end of that interval. Full Kelly on the point estimate does not.
What each fraction costs in drawdown
For a continuously-rebalanced Kelly bettor at fraction k of full Kelly, the probability of ever seeing wealth fall to a fraction α of its starting value has a clean closed form: α^(2/k − 1). It is an idealisation — real trades are discrete and gap — but the ordering it produces is right, and the full-Kelly row is the number people find most surprising.
| Sizing | Exponent 2/k − 1 | P(ever −25%) | P(ever −50%) | P(ever −80%) |
| 0.25× Kelly | 7.00 | 13.3% | 0.8% | 0.001% |
| 0.5× Kelly | 3.00 | 42.2% | 12.5% | 0.8% |
| 1.0× Kelly | 1.00 | 75.0% | 50.0% | 20.0% |
| 1.5× Kelly | 0.33 | 90.9% | 79.4% | 58.5% |
At full Kelly the chance of halving your account at some point is 50%. Not a tail event — a coin flip, on a strategy with a genuine positive edge, sized exactly optimally. Pair that with the growth table above and the trade becomes obvious: dropping to half Kelly costs 24% of the growth rate and takes the halving probability from 50% to 12.5%.
Costs shrink Kelly faster than they shrink expectancy
Slippage does not just trim the winner, it also deepens the loser. With a win paying a and a loss costing c, the generalised optimum is f* = p/c − q/a. Charge a fixed slippage per side against a nominal 2R setup and watch what happens:
| Slippage per side | Net win a | Net loss c | Kelly f* | Change vs frictionless |
| 0.00R | 2.00R | 1.00R | 17.50% | — |
| 0.05R | 1.90R | 1.10R | 11.96% | −32% |
| 0.10R | 1.80R | 1.20R | 6.94% | −60% |
| 0.15R | 1.70R | 1.30R | 2.26% | −87% |
A tenth of an R per side — perfectly ordinary on an illiquid name or a fast open — removes 60% of the optimal bet size. Expectancy over the same range falls from +0.35R to +0.15R, a 57% cut, but the compounding penalty lands harder because Kelly is quadratic in the edge. Any Kelly number computed on frictionless backtest fills is roughly double the honest one. The cost assumptions that produce this are discussed in the walk-forward testing guide.
Correlation forces a portfolio-level cap
Kelly assumes one bet resolves before the next begins. Swing trading violates that constantly: five positions open at once, four of them semiconductors. For n simultaneous positions of equal edge with pairwise correlation ρ, the per-position Kelly fraction falls to f_single ÷ (1 + (n − 1)ρ).
f_i = f_single ÷ (1 + (n − 1)·ρ)
Starting from the 17.5% single-bet answer above:
| Positions | Correlation ρ | Divisor | Per position | Total capital at risk |
| 1 | — | 1.00 | 17.50% | 17.5% |
| 4 | 0.0 | 1.00 | 17.50% | 70.0% |
| 4 | 0.3 | 1.90 | 9.21% | 36.8% |
| 4 | 0.6 | 2.80 | 6.25% | 25.0% |
| 4 | 0.9 | 3.70 | 4.73% | 18.9% |
| 4 | 1.0 | 4.00 | 4.38% | 17.5% |
| 6 | 0.6 | 4.00 | 4.38% | 26.2% |
The last four-position row is the sanity check that makes the table land: at ρ = 1.0 the four positions collapse into exactly the single 17.5% bet, because that is what they are. The row above it says that four names at ρ = 0.9 — four US large-cap semiconductors on the same macro headline is not far off that — should each carry a quarter of the size you would give them standing alone.
In practice nobody estimates ρ per pair in real time. The workable substitute is a hard cap on total open risk plus a cluster rule: count a correlated group as one position sized at the group's combined risk. Portfolio heat caps and cluster rules are covered properly in the position sizing guide.
When Kelly says zero
This is the output people ignore and it is the most valuable one. f* goes non-positive whenever p ≤ 1 ÷ (1 + b), and the formula is then not saying "be careful" — it is saying there is no position size at which this trade makes money. A negative Kelly fraction on a long setup does not mean go short, either, unless you have separately shown the inverse has an edge after costs.
- b = 1R needs better than a 50% win rate. Most "I take profits at 1R to feel good" systems fail here.
- b = 1.5R needs better than 40%.
- b = 2R needs better than 33.3%.
- b = 3R needs better than 25%.
- Push the numbers from the costs table through this and the break-even win rate rises, because c grows while a shrinks.
Run this check per setup tag rather than on the account as a whole. An account can be profitable while two of its four setups are negative-Kelly and are being subsidised by the other two. That decomposition is the single most useful thing a journal produces, and it is why the setup tag is a required field rather than a nice-to-have.
How the fixed-percent rule compares, numerically
Take the same 45%/2R setup and price a plain 1% rule against it. 1% is 0.057 of the 17.5% full-Kelly fraction — roughly one-seventeenth Kelly, far below even the quarter-Kelly convention.
| Rule | Risk per trade | As a fraction of Kelly | % of max growth | Trades to double |
| Fixed 1% | 1.00% | 0.06× | 11.6% | 205 |
| Fixed 2% | 2.00% | 0.11× | 22.4% | 106 |
| Quarter Kelly | 4.38% | 0.25× | 44.9% | 53 |
| Half Kelly | 8.75% | 0.50× | 75.9% | 31 |
| Full Kelly | 17.50% | 1.00× | 100.0% | 24 |
So a 1% rule genuinely does cost a lot of theoretical growth — about 88% of it. The honest counter is the estimation-error table: the 17.5% input has a 95% confidence interval running from +2.9% to +32.1% at 100 trades, so "100% of max growth" is a number computed from a quantity you do not actually know. The 1% rule buys robustness against being wrong about p, and it is the only column here that survives the case where your true win rate is 38% rather than 45%.
The practical reading: if your Kelly fraction says 17.5% and your rule says 1%, the rule is not being timid — it is pricing in the fact that you do not really know p. Use Kelly as a ceiling, not a target. If a fixed rule ever exceeds quarter Kelly on your measured edge, that is a real signal you are oversized.
A workable default
- Compute E[R] and E[R²] from your own journal, per setup tag, not for the account as a whole.
- Get f* ≈ E[R] ÷ E[R²]. If it is zero or negative, the setup is not tradeable at any size — stop there.
- Recompute it with realistic slippage baked into both the winner and the loser. Expect the answer to fall by a third to a half.
- Put a confidence interval on the win rate and recompute f* at the lower bound. That is your honest ceiling.
- Take at most a quarter of that, and cap the result at whatever your fixed rule allows — typically 0.5% to 1.5%.
- Divide again for correlated positions, or apply a total-portfolio-heat cap instead, which is simpler and errs the right way.
- Re-derive the whole thing every 50 to 100 closed trades. Edges decay, and a stale p is worse than no p.
The free risk toolkit computes the Kelly fraction alongside expectancy, break-even win rate, and a Monte Carlo risk-of-ruin simulation, so you can watch all four move together as you change the inputs. TradeLog produces the E[R] and E[R²] columns from trades you have actually taken, which is the only way to stop guessing at p. And before any of this is worth doing with real money, the honest sequencing problem is in going from paper to live.
Educational content, not financial advice. No live profit-and-loss figures are claimed anywhere on this site; backtest and walk-forward results are always labelled as such. Full terms: /terms.html
Tools referenced in this guide