What Paper Trading Hides
Why prediction market bots need slippage-aware paper trading instead of naive midpoint fills.
The easiest way to make a trading bot look smart is to let it trade at prices no one was offering.
This happens more often than people admit. A paper trader fills at the midpoint, or the last traded price, or the best visible quote. The equity curve looks good. Then the strategy goes live and discovers the thing the simulation rounded away: there was not enough size there.
A midpoint is not an offer
If a contract has a 44 cent bid and a 50 cent ask, the midpoint is 47 cents. That number is useful. It is also imaginary, in the narrow sense that you cannot necessarily buy there.
A market buy fills against asks. If only 10 contracts are offered at 50 cents and your bot wants 100, the other 90 have to come from deeper levels, or not at all. The bug in many simulations is that they treat this as a detail. It is often the whole game.
Walk the book
The better model is simple. For a market order, consume visible depth level by level until the order is filled. Then compute the average price. This does not make the simulation perfect. It merely stops it from lying in the most obvious way.
Target: buy 50 YES contracts
Ask book:
10 contracts at 45 cents
40 contracts at 48 cents
Simulated fill:
(10 * 0.45 + 40 * 0.48) / 50 = 47.4 cents VWAPThis small calculation changes a lot. It tells you whether your edge survived contact with size. It also tells you what the real constraint is: the signal, the spread, the fee, or the market itself.
Fees are part of the price
Fees are another place where toy simulations flatter you. A marginal trade can be right about the event and still wrong after costs. If fees do not show up in balances and P&L, the result is not a conservative estimate. It is a different strategy.
The narrow thing PredArena does
PredArena does one narrow thing: simulated market-order execution for Kalshi-style prediction market agents. When a bot submits a supported buy or sell order, PredArena walks live order book depth, estimates execution price, applies Kalshi-style taker fee modeling, and records the trade in an isolated paper portfolio.
It is not a backtester. It is not investment advice. It does not do limit orders, cancellations, Polymarket, or full Kalshi API parity. That narrowness is deliberate. Before a bot gets live credentials, it should at least prove it can route orders, handle rejections, and stop hallucinating fills.
A useful test
Run the same bot three ways: midpoint fills, best-quote fills, and depth-walked fills with fees. If the strategy only works in the first version, you probably have not found an edge. You have found a kind simulator.
Test your prediction market agent before live capital
Route supported market orders to PredArena and inspect fills, slippage, fees, balances, and order history against live Kalshi-style order book depth.