A Kelly-sized Polymarket bot stakes the fraction of bankroll that maximizes expected logarithmic growth, given three inputs: the probability it estimates, the price it can actually pay per share, and the 1.00 USDC that a correct share pays at resolution. For a YES share bought at executable price p, with estimated probability q, the full-Kelly fraction reduces to (q − p) / (1 − p). The formula is short, but its output is only as sound as those three inputs. This article covers the payoff model, the inputs that most often go wrong, and the controls a bot needs around the formula.
What Kelly sizing optimizes
Kelly’s criterion chooses the fraction of bankroll that maximizes the expected logarithm of wealth across a long run of repeated bets, assuming the bettor knows the probability of each outcome and the payoff of each bet. Maximizing log wealth rewards compounding and weighs large losses more heavily than a plain expected-value rule does.
As an Amazon Associate I earn from qualifying purchases.
Two limits apply before any arithmetic. First, the objective is defined over repeated decisions under a model. It does not say that a given Polymarket position will win, and a bot can lose on a single position that had positive modeled edge. Second, the formula is exact only when the probability fed into it is exact. The academic paper The Kelly Criterion: Implementation, Simulation and Backtest, from the Humboldt University repository, studies Kelly sizing with and without known process parameters and addresses the risk that arises when those parameters are estimated from finite data. It is not about Polymarket, but it describes the central problem a bot faces: the probability in the formula is an estimate.
Recommended Free Tools
Turning a Polymarket share into a payoff model
Polymarket’s FAQ states that outcome shares are priced between 0.00 and 1.00 USDC, that each paired YES and NO outcome is fully collateralized by 1.00 USDC, and that shares of the correct outcome pay out on resolution. The sentence that matters most for sizing is: “The shares representing the correct, final outcome are paid out $1.00 USDC each upon market resolution.” (Polymarket FAQ)
#1 Best Overall
That produces a binary payoff. A share bought at price p costs p per share. If its outcome resolves correctly, it pays 1.00, a net gain of 1 − p. If not, it pays nothing, a loss of p. Shares can also be sold before resolution, and then the result depends on the exit price rather than on the 1.00 payout. The Kelly calculation below assumes the position is held to resolution; a bot that plans to exit early needs a different model.
The sizing variables used in the formulas are:
- Bankroll: the USDC the strategy may deploy, net of capital already committed to open positions and resting orders.
- p: the executable price per share for your full intended order size, not the midpoint.
- q: your estimated probability that the outcome you are buying resolves correctly.
- f: the fraction of bankroll to stake. Dollar stake = f × bankroll; shares = dollar stake ÷ p.
Buying YES
Buying YES at price p, with estimated probability q, gives net odds b = (1 − p) / p per dollar staked. The full-Kelly fraction is f = (bq − (1 − q)) / b, which simplifies to:
f = (q − p) / (1 − p)
The result is positive only when your probability exceeds the price you pay. The formula excludes fees, which must be subtracted from the payoff before you compare q with p.
Free tools Windows power users keep installed
One-click scans. No signup required.
Rank #2
Buying NO
A NO share bought at price c, with estimated probability r = 1 − q that NO resolves correctly, follows the same structure: f = (r − c) / (1 − c). Read c from the NO order book you will trade against. Do not derive it by subtracting the YES price from 1, because executable prices on the two sides can differ, and the bot should size against the side it actually fills.
A worked example (illustrative arithmetic)
The following uses assumed inputs to show how the formula behaves. It is not a recommendation and not a backtest. Assume a bankroll of 1,000 USDC, a YES order whose average fill for the full intended size is 0.40, and an estimated probability of 0.55.
Full Kelly is f = (0.55 − 0.40) / (1 − 0.40) = 0.25, which calls for a 250 USDC stake, or 625 shares. Scaling by a fraction of full Kelly gives:
Rank #3
| Fraction of full Kelly | Share of bankroll | Stake (USDC) | Shares at 0.40 average fill |
|---|---|---|---|
| 1.00 (full Kelly) | 25.00% | 250.00 | 625.0 |
| 0.50 (half Kelly) | 12.50% | 125.00 | 312.5 |
| 0.25 (quarter Kelly) | 6.25% | 62.50 | 156.25 |
Two input changes show how sensitive the output is. If the true probability is 0.50 rather than 0.55, full Kelly falls to (0.50 − 0.40) / 0.60 = 16.7%, so a five-point overestimate of q raises the full-Kelly stake by half. If the average fill for the same order is 0.42 rather than 0.40, full Kelly falls to 0.13 / 0.58 = 22.4%.
Why the output is only as sound as its inputs
The probability estimate
Kelly treats q as known. In the YES formula, the stake is linear in q, so each percentage point of overstatement adds a fixed increment to the stake. At p = 0.40, one percentage point of overstatement in q adds about 1.67 percentage points of bankroll to full Kelly. An overconfident estimate therefore produces an oversized position in proportion to the error, and the formula gives no warning.
The bot needs two things the formula does not supply: a method for producing q, and a record of whether past values of q matched resolved outcomes. No particular forecasting method is prescribed here, and choosing one is strategy work. Whatever method is used, the sizing code should refuse to act on a probability that is missing, stale, or outside the range the bot has historically produced. Comparing past q values with the outcomes that followed is the basic test of whether q deserves the weight the formula gives it.
Rank #4
The execution price
The p in the formula is the price you pay, not the price on a screen. Three reference prices are easy to confuse. The community Polymarket CLOB API guide, which is not an official source, distinguishes them:
| Reference price | What it represents | Use in sizing |
|---|---|---|
| Midpoint | Halfway between the best bid and best ask | Reference only. It is not a price your order is guaranteed to receive. |
| Last trade | Price of the most recent matched trade | Reference only. It says nothing about how much size is available now. |
| Executable average | Average price to fill your full order size against the current book | Use as p. |
Book depth is the reason the distinction matters. Each price level holds a limited size, so a larger buy walks up the asks and its average price rises with size. The community guide notes that depth can change the average executable price for larger orders. Compute p for the full intended size, not for the first few shares, and recompute if the order partially fills, since the remaining size and the new average price replace the original plan.
Fees, tick sizes and order rules
Fees, tick sizes, spreads and order requirements are not part of the Kelly formula, but they change the edge. Polymarket’s Polymarket Institute data page directs readers to its pricing documentation for these values. Check them in that documentation for each market before trading. Subtract any per-share fee from the payoff before computing q − p; a fee larger than the modeled edge turns a positive Kelly fraction into a losing trade. Round the computed limit price to the market’s tick size, and rerun the sizing if rounding changes the price.
Best Value
Choosing a fraction: no setting is established as correct
Full Kelly maximizes modeled growth only if q and p are exact. Because they are not, a common response is to scale the output by a fraction. The available sources do not establish that a half-Kelly, quarter-Kelly, or any other fraction is best for Polymarket markets, and they do not establish the drawdown or ruin probability any given fraction would produce. A fixed fraction is a policy the operator chooses and should be able to defend, not a proven setting.
The trade-off is structural, and the worked example shows it:
- A smaller fraction scales every stake down, including a stake produced by an overstated probability. It limits exposure to estimation error, and under the model it gives up growth if the probability is accurate.
- A larger fraction pursues more modeled growth, but only when the probability and price inputs hold. Its exposure to estimation error rises by the same multiplier.
- The fraction should follow the measured reliability of q. A bot whose probabilities have a short, noisy track record has less reason to use a large fraction than one whose probabilities have been checked against many resolved markets.
Account-level risk controls around the formula
Kelly sizes one position under one model. A bot holding many positions needs controls the formula does not provide. Polymarket does not publish the limits below as platform rules; each is a design choice the operator sets in configuration.
Quick wins for a faster PC:
Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →Repair Windows errors before they cause bigger problemsFix Now →- Per-market cap. A maximum stake or share count in any one market, applied after the Kelly calculation. When the cap is lower than the Kelly output, the cap governs.
- Correlated exposure. Markets that resolve on the same underlying event, such as two questions about one announcement worded differently, should be grouped and their combined exposure capped. Sizing each market independently treats related bets as unrelated.
- Open orders. Resting orders that have not filled count toward exposure and committed capital. A bot that ignores them can exceed its intended limits when fills arrive together.
- Minimum edge. No order when q minus the executable price, after fees, falls below a threshold that covers estimation uncertainty.
- Stale-data guard. No sizing from an order book snapshot or probability older than a set age.
- Loss halt. A drawdown threshold, measured from a stated bankroll reference, that stops new orders until a person reviews the bot.
- Cancel path. A tested way to cancel all open orders without waiting for the normal trading loop.
Pre-trade sequence for each order
- Pull the current order book for the specific token you intend to buy, using the CLOB endpoints described in the community Polymarket CLOB API guide, and confirm you are reading the YES or NO side you plan to trade.
- Check fees, tick size, spread and order requirements for that market in the pricing documentation reached from the Polymarket Institute data page.
- Walk the asks to find the average price p for your full intended size.
- Subtract per-share fees from the payoff and compute the edge. Skip the order if the edge is below your minimum.
- Compute f = (q − p) / (1 − p) for a YES order, or (r − c) / (1 − c) for a NO order. Multiply by your chosen fraction and convert to dollars and shares.
- Apply the per-market cap, the correlated-exposure cap, and the open-order reservation, and use the smallest result.
- Round the limit price to the tick size, and recompute the stake if the rounded price changes the fill assumption.
- Submit the order and log the inputs (q, p, fraction, final size, timestamp) so the decision can be reviewed against the outcome later.
Monitoring and reconciliation
Polymarket’s Data API documentation covers wallet portfolios, trade and activity feeds, market state, and ranked boards. A bot can use these to confirm positions and fills against its own ledger. Three operational points matter:
- The documentation identifies 429 rate-limit responses. After a 429, back off with increasing delays rather than retrying in a tight loop, and treat a missed poll as missing data rather than as confirmed state.
- After each fill, and on a fixed schedule, compare the local position ledger with the portfolio and trade feeds. A mismatch in size, price or status should halt new orders until it is explained.
- Endpoint paths and response fields are external dependencies. Check the documentation version before deployment and pin the field mappings the bot reads, so a schema change fails loudly instead of silently misreading a position.
What this article does not establish
This article presents no backtest, live result, win rate or drawdown figure for any bot, and it does not claim that any Kelly fraction is optimal for Polymarket. The worked numbers are arithmetic on assumed inputs. Any performance claim about a particular bot needs its own evidence, including out-of-sample results on resolved markets. The article also does not address whether trading on Polymarket is permitted in a given jurisdiction; that depends on local rules and is outside its scope.
The Bottom Line
Kelly gives a stake for a payoff model you can defend. For a YES share, that means (q − p) / (1 − p), with p taken from the executable book rather than the midpoint. Treat the result as a ceiling that your fraction choice, calibration record and account caps can only reduce, not as the trade the bot should place.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




