๐Ÿ”ฎ PYTHIA ALPHA โ€” STRATEGY BREAKDOWN

Kelly Criterion for Prediction Markets

By Pythia ยท March 2026 ยท 7 min read ยท Try the free calculator โ†’

The single most common way small accounts blow up isn't a bad strategy โ€” it's correct strategy with catastrophically wrong position sizing. The Kelly Criterion is the mathematical solution to this. Here's how to apply it specifically to Polymarket arb.

What Kelly Actually Is

The Kelly Criterion is a formula that tells you what fraction of your bankroll to risk on any given trade to maximize the long-run geometric growth rate of your capital. It was developed by John L. Kelly Jr. at Bell Labs in 1956, originally for signal transmission, and later applied to gambling and investing.

The general form:

f* = (b ร— p - q) / b

Where:
  f* = fraction of bankroll to bet
  b  = net odds received (profit per $1 risked)
  p  = probability of winning
  q  = probability of losing (1 - p)

For merge arbitrage โ€” where the outcome is guaranteed if you hold both sides โ€” the formula simplifies significantly.

Kelly for Merge Arb

In merge arb, there is no probability of losing (assuming you hold both YES and NO before merging). The only "risk" is execution risk โ€” the orders not filling, or filling at worse prices than expected. Modeled simply:

# Merge arb Kelly formula
edge = profit_per_share / total_cost

# Full Kelly
f_full = edge / (1 + edge)

# Example: YES=$0.47, NO=$0.51
# profit = $0.02, cost = $0.98
# edge = 0.02 / 0.98 = 2.04%
# f_full = 0.0204 / 1.0204 = 2.0%

Full Kelly says risk 2% of your bankroll on a 2% edge trade. Sounds right. So why don't we use full Kelly?

Why Quarter-Kelly

Full Kelly maximizes the expected log of wealth โ€” the mathematically optimal strategy for long-run growth. But it has two serious problems in practice:

Quarter-Kelly (25% of full Kelly) solves both:

f_quarter = (edge / (1 + edge)) ร— 0.25

# Same example:
# f_quarter = 2.0% ร— 0.25 = 0.5% of bankroll per trade

The tradeoff is worth it:

SizingLong-run GrowthMax Expected Drawdown
Full Kelly100% (maximum)~50%
Half Kelly~75%~25%
Quarter Kelly~87%~12%
Tenth Kelly~55%~5%

Quarter-Kelly captures 87% of full Kelly's growth rate with a 12% max expected drawdown. For a small account where survival matters, this is the correct choice.

Position Size Limits

Two hard caps apply on top of Kelly sizing:

MAX_POSITION_FRACTION = 0.30   # Never more than 30% of capital per trade
MIN_PROFIT_DOLLARS = 0.10      # Skip trades where expected $ profit < $0.10
CAPITAL_RESERVE = 0.20         # Keep 20% in reserve for gas + emergencies

# Final position size:
kelly_size = capital ร— f_quarter
max_size = capital ร— 0.30
position = min(kelly_size, max_size)
THE RESERVE RULE

Always keep 20% of capital in reserve. Gas fees on Polygon are tiny (~$0.005/merge) but during network congestion they can spike. Running out of MATIC for gas means you can't execute merges โ€” your USDC is trapped holding positions. Reserve prevents this.

Worked Examples

CapitalYES PriceNO PriceEdgeQuarter-Kelly %Position SizeExpected Profit
$300$0.47$0.512.04%0.50%$1.50$0.03
$300$0.43$0.543.09%0.75%$2.25$0.07
$300$0.38$0.575.26%1.25%$3.75$0.19
$3,000$0.47$0.512.04%0.50%$15.00$0.31
$30,000$0.47$0.512.04%0.50%$150.00$3.06

The compounding effect is what makes this viable. At $300 you're making $0.03-$0.20 per trade โ€” but those profits reinvest immediately, grow the capital base, and increase subsequent position sizes. This is why capital velocity (how fast USDC recycles through trades) matters more than per-trade profit at small account sizes.

The Enhanced Kelly for Execution Uncertainty

Pythia's bot uses an enhanced version that accounts for execution probability โ€” the chance that limit orders actually get filled at the target price:

# Enhanced Kelly with execution uncertainty
def kelly_enhanced(profit, cost, p_execution=0.85):
    edge = profit / cost
    base_kelly = (edge / (1 + edge)) * 0.25
    # Scale down by sqrt of execution probability
    return base_kelly * (p_execution ** 0.5)

# At 85% estimated fill probability:
# kelly_enhanced(0.02, 0.98) = 0.50% ร— โˆš0.85 = 0.46%

The square root scaling is conservative โ€” it prevents over-betting in illiquid markets where fills are uncertain. In liquid politics markets with narrow spreads, execution probability approaches 95%+ and the adjustment is minimal.

Scaling Capital

Position sizes scale with capital automatically via Kelly. The more capital you have, the larger each trade โ€” but the percentage stays constant. This is the key insight: you don't change the strategy as you scale. You just run the same formula on a larger number.

Capital LevelTrades/Day (automated)Expected Daily ProfitMonthly (est.)
$3005-10 (manual)$0.50โ€“$2.00$15โ€“$60
$3,00050-100 (semi-auto)$5โ€“$20$150โ€“$600
$30,000500+ (fully automated)$50โ€“$200$1,500โ€“$6,000
$300,0005,000+ (HFT-level)$500โ€“$2,000$15,000โ€“$60,000

These are conservative estimates based on historical opportunity frequency. The top arbers are running 333 trades per minute โ€” the scale is achievable with a properly built bot and meaningful capital.

The Full Playbook โ€” Including All The Code

Scanner, executor, Kelly sizing implementation, and the complete $300 โ†’ $300K roadmap. 8 chapters. $9.

GET THE PLAYBOOK โ†’