// QUANT STRATEGIES
Position sizing on binary contracts: Kelly and its discounts
2026-07-16 · Mithril
Binary contracts are the cleanest instrument the Kelly criterion was ever
applied to. Two outcomes, known payoffs, a price that is the market's
probability, and your model's probability on the other side. No volatility
estimation, no distribution assumptions — just p, the price, and a
formula.
Which is exactly why binaries are where over-betting does the most damage. The formula makes aggressive sizing feel rigorous, and the input it depends on — your probability estimate — is the thing you know least well. This post covers the formula, a worked example, and the three discounts that keep it from blowing you up: fractional Kelly, correlation adjustment, and hard caps.
The formula for binary payoffs
You buy YES at price c (in dollars, 0–1). If the event happens the
contract pays $1; if not, zero. Per dollar staked you win
b = (1 − c) / c on a win and lose 1 on a loss. Kelly says stake the
fraction of bankroll:
f* = (b·p − q) / b with q = 1 − p
which for a binary at price c simplifies to:
f* = (p − c) / (1 − c)
where p is your probability and c is the market's. The numerator is
your edge; the denominator scales it by the payout odds. Symmetrically, if
you think the market is too high, buy NO at 1 − c and the same formula
applies with p' = 1 − p and c' = 1 − c.
Worked example
A contract trades at 30¢. Your model — which you've actually calibrated, not just believed — says 40%.
f* = (0.40 − 0.30) / (1 − 0.30)
= 0.10 / 0.70
≈ 0.143 → 14.3% of bankroll
On a $50,000 bankroll that's ~$7,150 of premium: roughly 23,800 contracts at 30¢. Expected value looks great — you're buying 40% probability at a 30% price. But look at the loss branch: 60% of the time this position goes to zero and you lose 14.3% of the bankroll on one idea. Full Kelly is not a sizing suggestion; it's the theoretical growth-optimal edge of a cliff.
Note the practical adjustments before the formula even runs: c should be
your expected fill price including fees and slippage, not the screen
price. On Kalshi, add the taker fee
(0.07 × contracts × price × (1 − price), rounded up to the next cent) to
your cost basis; in a thin book, walking the ask can move c by several
cents and cut f* sharply. Sizing off the touch price in a book that can't
absorb your size is how a Kelly calculation turns into an over-bet before
you've made any modeling error at all — see
slippage in thin prediction markets.
Discount 1: fractional Kelly
Everyone who runs Kelly in production runs a fraction of it — half-Kelly and quarter-Kelly are the common choices. Three reasons:
- Estimation error. Kelly assumes
pis true. Yours is an estimate, and Kelly is brutally asymmetric to error: betting twice the true Kelly fraction gives zero long-run growth, and beyond that, negative. Since your measured edge is uncertain, shading down is the correct Bayesian response — if yourpis miscalibrated by even a few points, the "edge" in the numerator can be half illusion. - Variance. Full Kelly's growth-optimal path routinely visits drawdowns most humans (and most investors, and most risk committees) abandon strategies over. Half-Kelly gives up ~25% of the growth rate for ~50% of the variance — one of the best trades in finance.
- The payoff is asymmetric. Under-betting costs you a little expected growth. Over-betting past 2× Kelly costs you the bankroll. When the penalty function is that lopsided, you err low.
Our example at quarter-Kelly: ~3.6% of bankroll, ~$1,790. If the model is as good as claimed, you'll get to prove it across many bets instead of finding out on one.
Discount 2: correlated books
Kelly's formula is per-bet, but your risk is per-book. Ten "independent" quarter-Kelly positions that all secretly load on the same factor are one 2.5×-Kelly position wearing a disguise.
Prediction markets make this failure easy because correlation hides in the event structure:
- Five markets on different Fed meetings are all one bet on the inflation path.
- State-level election markets are massively correlated through the national swing.
- "Candidate X wins" and "Party of X wins" can be near-duplicates.
- The same event held on both Kalshi and Polymarket is correlation 1.0 — a cross-venue position is one bet, not two (unless it's a hedged arbitrage, which is the opposite trade).
The practical (if crude) toolkit: group markets by driver and apply your Kelly fraction at the group level, splitting it across the group's markets; treat mutually exclusive outcomes within one event as a single simultaneous allocation rather than independent bets; and haircut harder when you can't articulate why two positions would fail independently. Simultaneous-Kelly optimization across a correlated book is a real (convex) optimization problem — worth doing eventually, but grouping gets you most of the safety for none of the math.
Discount 3: hard caps as the backstop
Every discount above still flows from the same input: your model. The final layer must not. A hard cap — maximum notional per market, per event group, and in total — is deliberately dumb: it binds especially when the model is most confident, because "the model is extremely confident" and "the model is broken" look identical from inside the model.
Rules worth stealing:
- Per-market and per-event caps that no signal strength can override.
- A total-exposure cap well below the sum of the individual caps.
- Caps enforced outside the strategy code. A sizing bug, a bad data feed, or a fat-fingered probability of 0.97 instead of 0.397 should hit a wall that the buggy code cannot move.
That last point is an architecture decision, not a discipline decision. If the same process computes the size and enforces the limit, you don't have a limit — you have a comment. This matters double when the thing computing sizes is an automated system or an AI agent; it's the core argument in risk limits for AI trading agents. It's also why Mithril enforces notional caps, slippage bounds, and a kill switch server-side, on every order, regardless of what the client asks for — the strategy proposes, the risk layer disposes.
A sizing checklist
- Estimate
p; know your calibration error from tracked history. - Set
cto expected fill cost including fees and book depth. - Compute
f* = (p − c) / (1 − c). - Multiply by your Kelly fraction (start at ¼).
- Allocate at the correlated-group level, not per market.
- Clip against hard caps enforced outside your strategy.
Kelly tells you the most you should ever consider betting. Everything after the formula is about betting less than that, on purpose.
Fees and market rules change. Details above reflect public documentation as of July 2026 — always confirm against the venues' own docs before trading real money.
One API + MCP for Kalshi and Polymarket
Fee-aware routing, unified market IDs, and hard server-side risk limits — live today, free during beta.