Why Your Prediction Market Bot Loses Money on Execution
Your strategy backtests profitably. In live trading, the edge vanishes. Here's what's eating your P&L.
Quick Diagnostic
| If your bot… | Read this section |
|---|---|
| Backtests well, bleeds live | Slippage + Depth |
| Strategy works on BTC, not ETH (or reverse) | Asset Volatility |
| Profits on big markets, loses small ones | Liquidity Cliffs |
| Wins early, loses near expiry | Binary Squeeze |
| Makes money but fees eat edge | Fee Drag |
| Gets worse fills than manual trades | Timing + Queue |
| Loses on resolution despite correct directional read | Oracle-Source Latency |
| Backtest assumes impossible fills | Backtest Reality |
| Backtest looked great, live trading bleeds — and slippage alone doesn't explain it | Paper-vs-Live Divergence |
Can this backtest survive live prediction-market execution?
A profitable simulation is only useful if the assumed prices, fills, timing, market rules, and resolution source match what a trader could actually execute live.
Did the backtest use executable bid/ask depth, or did it assume midpoint/last-trade fills?
Prediction-market order books expose bids, asks, last trade price, tick size, and minimum order size; those are not interchangeable execution assumptions.
Does the simulation model partial fills, queue priority, resting orders, and one-leg-fills-before-the-other risk?
A strategy can be correct directionally and still fail if only part of the intended position fills or one venue updates before the other.
Was the market rule text, close time, expiration timing, and resolution source stored with the historical price snapshot?
A price history without rule context cannot prove the historical trade was the same bet the strategy thinks it was trading.
Does the backtest separate ordinary book depth from catalyst windows, near-expiry markets, and stale or closed markets?
The most attractive historical prices often appear when the live book is thin, stale, closed, or changing state.
Are fees, spread, slippage, capital lockup, failed fills, and withdrawal/account frictions kept separate from forecast accuracy?
P&L can fail because execution costs overwhelm a real forecast edge; that is a different diagnosis than a bad model.
What a backtest is not proof of
- It does not claim a bot, model, repository, or workflow is profitable.
- It does not publish backtest return percentages unless every input is source-backed and same-session verified.
- It does not cite community posts or affiliate pages as proof of mechanics.
- It does not imply PredictionMarkets.US executes, routes, brokers, clears, custodies, or places trades.
- It does not turn GitHub popularity into user-facing endorsement.
📉 Slippage in Thin Books
Most prediction markets have far less order book depth than equities or major crypto pairs. A few hundred dollars of order flow can move the price several cents in a thin market.
Backtests assume mid-price execution — the price you see on screen. Live fills happen at whatever the book will give you, and in thin prediction markets, that gap can be significant.
Example: Slippage eating a small edge
Backtest assumed fill: 52¢ Actual average fill: 54.3¢ Slippage cost: 2.3¢/contract × 200 = $4.60 Your "edge" was 3¢. Slippage ate 77% of it.
Illustrative example — actual slippage depends on market depth and order size.
📊 Asset Volatility & Bot Edge: BTC vs ETH Up-Down Markets Aren't the Same
BTC and ETH short-duration up-down markets share the same product surface — same payoff structure, same settlement window, same UI — but they don't share the same volatility regime. A bot strategy that backtests profitably on one asset may not generalize to the other.
Higher realized volatility in the underlying typically widens the spread between mid-price and execution-fill, amplifying slippage drag in thin books. Lower-volatility assets typically see narrower spreads and tighter book depth, which makes backtest mid-price assumptions more likely to survive contact with live execution.
This is a structural property of how order-book depth interacts with realized volatility — not a claim that one asset class is 'better' for bots. A strategy's live performance depends on capital sizing, latency, fee tier, time-of-day, and other factors that any single backtest can't fully capture.
What we are NOT saying
- We are NOT recommending ETH over BTC (or vice versa) for bot strategies.
- We are NOT citing specific volatility numbers — those rest on time-window assumptions we have not specified.
- We are NOT claiming asset-class superiority. The mechanism is order-book-depth meeting realized volatility, not which asset is 'better.'
- Past simulated performance is not indicative of future results.
🧊 Liquidity Cliffs on Event Markets
Prediction market liquidity evaporates around catalysts — not gradually, but in cliffs. Makers pull quotes before FOMC decisions, election results, court rulings, and other binary events.
The moment you most want to trade is when the book is thinnest. Unlike equities, there are no designated market makers obligated to provide continuous liquidity on prediction market exchanges.
This is the primary reason event-driven bot strategies fail in live trading. A strategy that looks brilliant in historical data was never exposed to the real-time book disappearing right when it needed to execute.
🔧 The Binary Squeeze Near Expiry
As contracts approach settlement, spreads widen because the downside of being wrong approaches 100%. A 95¢ contract with a 2¢ spread costs you 40% of the remaining upside.
Bots that chase apparently free money near expiry lose to spread drag, not to being wrong about the outcome. The math that looked like guaranteed profit in a backtest becomes a trap when execution costs are real.
Why 99¢ bets aren't free money →💸 Fee Drag on High-Frequency Strategies
At 10 trades per day, even small per-trade fees compound into meaningful drag. A strategy with a 2¢ edge per trade can lose its entire margin to fees alone.
Fee calculator →⏱️ Timing and Queue Priority
Prediction market exchanges use price-time priority. If your bot posts at the same price as another participant but arrives later, you're last in the queue.
API rate limits vary by platform. There is no co-location or direct market access on prediction market exchanges. Unlike crypto DEXes, you can't pay for transaction priority.
The result: your bot's fills are systematically worse than what a faster participant gets at the same price level, and that disadvantage is invisible in backtests.
🛰️ Oracle-Source Latency: A Resolution-Mechanics Edge, Not Order-Book Mechanics
The previous mechanisms on this page — slippage, liquidity cliffs, market-vs-limit, fee drag, queue priority — are all order-book mechanics. They describe how your order interacts with the book between submission and fill. Oracle-source latency is a different axis: it describes how the resolution mechanism interacts with the underlying real-world observation.
Some prediction markets resolve against third-party data providers — weather data, sports stats, economic releases — whose refresh cadence is set by the upstream source, not by the exchange. The market-implied probability can move on cleared sensor or news observations while the resolution oracle still references a stale upstream snapshot.
That gap between observable reality and oracle-state is a distinct mechanism from any of the order-book mechanics above. It has its own mitigation considerations and breaks the implicit assumption — present in slippage, liquidity, and queue analyses — that the resolution oracle is real-time.
What we are NOT saying
- We are NOT recommending oracle-latency arbitrage as a strategy.
- We are NOT naming any live prediction markets currently using a specific oracle.
- We are NOT claiming a specific lag duration — refresh cadence varies by oracle provider, market category, and event type.
- We are describing a structural property of how resolution-mechanism design interacts with upstream data feeds — not a trade instruction.
🪞 Paper-vs-Live Divergence: Why Your Backtest Looked Great and Live Trading Bleeds
This is a different axis from slippage. Slippage describes how the price moves against your order as it walks the book. Paper-vs-live divergence describes the gap between the displayed quote your backtest assumed it could fill against and the fillable quote that actually exists once every other participant's behavior is priced in.
A backtest typically assumes a 100% fill on the displayed top-of-book quote. Live execution sees something different: order-queue priority is time-ordered, counterparties skip stale quotes, mispriced quotes get swept by faster participants, and maker-rebate competition prices in any obvious edge before slower bots can capture it. The displayed quote and the conditionally-fillable quote are not the same number.
The structural result: backtests overstate edge by the fraction of quotes that would not have been fillable in adversarial real time. That gap is invisible in historical replay because the historical book did not have to react to your bot's specific order. Backtests cannot fully model the counterfactual where your participation changes other participants' behavior.
What we are NOT saying
- We are NOT claiming bots cannot make money on prediction markets.
- We are NOT claiming dry-run or paper-trading testing is useless — it remains the right starting point for any strategy.
- We are NOT claiming any specific platform's matching engine is unfair. Order-queue priority and adversarial fill-selection are structural features of price-time-priority order books generally.
- We are NOT citing a specific fill-rate or backtest-overstatement percentage. Those numbers depend on strategy, capital sizing, latency, and market conditions we have not specified.
Fee Comparison
Fee data sourced from each platform's published fee schedules. Check platform docs for the latest.
| Platform | Maker Fee | Taker Fee | Fee Summary |
|---|---|---|---|
| Kalshi | Price-based (varies by contract) | Price-based (varies by contract) | ≤1.75¢/contract (formula-based) |
| Polymarket | 0% (makers receive category-specific rebates: Sports 25%, Crypto 20%) | Probability-based, category-dependent (March 30, 2026): Sports 0.75% peak; Crypto 1.80% peak; Politics/Finance/Tech/Economics/Culture: 0.75%–1.80%; Geopolitics free. US venue (QCX LLC DCM) sports: 0.75% peak (probability-based), 25% maker rebate. | Sports 0.75% peak; Crypto 1.80% peak; Politics/Finance/Tech 1.00%; most fee-free at extremes |
| PredictIt | 10% on profits | 5% on withdrawals | 10% profit fee + 5% withdrawal |
Practical Adjustments
What actually reduces execution bleed:
- Use limit orders, not market orders. You control the price; the book comes to you.
- Size orders to 10–20% of visible book depth. Larger orders move the price against you.
- Avoid trading within an hour of known catalysts when liquidity is likely to thin.
- Build slippage into your backtest — 2–5¢ per side as a starting assumption, adjusted for the markets you target.
- Prefer markets with meaningful open interest. Thin markets amplify every cost driver on this page.
- Don't chase near-expiry contracts below 10¢ or above 90¢. The spread math is brutal.