Liquidity, spread and slippage in prediction markets
Why the displayed midpoint is not a fill price at size: worked order-book arithmetic for a 100-share buy and sell, timestamps, depth and break-even.
In this guide
The number on the screen is usually a midpoint, not an offer
On a prediction market, the single price shown for an outcome is often the midpoint between the best bid and the best ask. The best bid is the highest price someone is currently willing to pay. The best ask is the lowest price someone is currently willing to accept. The spread is the gap between them. If the best bid is 0.40 and the best ask is 0.44, the midpoint is 0.42 and the spread is 0.04. You cannot buy at 0.42 unless a seller actually posts that number. When the spread is wider than 0.10, the platform may switch the displayed figure to the last traded price instead, which can sit even further from any live quote. Before you reason about a trade, work out which of the 3 you are looking at: midpoint, last trade, or executable quote.
The second number that matters is depth, the quantity available at each price level. A tight spread backed by a handful of shares is a different market from the same spread backed by hundreds of shares. If you send an order larger than the quantity sitting at the best level, it will consume the next levels and your average fill price will be worse than the best quote. That gap is slippage: the cost of moving the book to accommodate your size, not a commission. Part of it comes from crossing the spread and part from walking past the best level into thinner prices.
A worked buy of 100 shares
Take an illustrative book: best bid 0.40, best ask 0.44, midpoint 0.42, spread 0.04. You want 100 shares. Suppose only 60 shares rest at 0.44 and the next ask is 0.48. The first 60 shares cost 60 times 0.44 = 26.40. The remaining 40 cost 40 times 0.48 = 19.20. Total before fees is 45.60, and your average fill is 45.60 divided by 100 = 0.456. The displayed midpoint was 0.42, so the combined gap between midpoint and average fill is 0.456 minus 0.42 = 0.036 per share. Split that gap: 0.44 minus 0.42 = 0.02 is the spread between midpoint and best ask, and 0.016 is depth slippage from walking past the best ask to 0.48. Those figures are constructed to show the arithmetic; they are not a report of any live fill.
Now sell those 100 shares straight back. With the best bid still at 0.40 and enough size to fill you, the sale recovers 100 times 0.40 = 40.00 before fees. Your round trip runs from 45.60 paid to 40.00 received, an illustrative loss of 5.60. Most of that loss, 4.00, is the 0.04 spread crossed on entry and exit: 2.00 going from midpoint 0.42 up to ask 0.44, and 2.00 coming back from bid 0.40 up to that midpoint. The remaining 1.60 is the extra entry slippage beyond the best ask, when the last 40 shares filled at 0.48 instead of 0.44. Had the bid side also been thin, the recovery would have been lower still.
| Step | Price | Shares | Cash flow |
|---|---|---|---|
| Buy: first level | 0.44 | 60 | -26.40 |
| Buy: second level | 0.48 | 40 | -19.20 |
| Average fill | 0.456 | 100 | -45.60 |
| Sell at best bid | 0.40 | 100 | 40.00 |
| Round-trip result | 0.056 per share | 100 | -5.60 |
Same book, 2 order sizes
It helps to see how size alone changes the outcome on an unchanged book. A buyer of 60 shares pays only 26.40, an average of 0.44, exactly the best ask. A buyer of 100 shares pays 45.60, an average of 0.456. Nothing about the market changed between the 2 decisions; only the quantity did. This is why a quote can be honest and still misleading at your size.
The same logic applies to exits. If your holding period is short, the bid you receive later governs your result, and if depth is thin your exit sells into worse levels. If you intend to hold until settlement, the exit spread matters less, but the entry slippage still raises your effective cost and therefore the probability you need to break even.
| Buyer | Shares | Cost before fees | Average fill |
|---|---|---|---|
| Small order | 60 | 26.40 | 0.44 |
| Larger order | 100 | 45.60 | 0.456 |
Timestamps and the fields that describe a market
A price without a timestamp is a weak input to a decision. The midpoint, the last trade, and the order book are 3 separate observations that can drift apart quickly, especially when the spread widens. When you compare 2 markets, compare quotes captured at the same moment and record that moment alongside the number.
A market data endpoint may return fields such as question, outcomes, outcomePrices, clobTokenIds, activity, closure, order acceptance, liquidity, and volume. These describe different things. Volume is cumulative trading activity. Liquidity is a measure of available depth. Weak volume does not by itself make a market bad, and high volume does not guarantee a tight spread at the instant you want to trade. Arrays are sometimes serialized as strings, so parse them before comparing numbers, and treat a missing or stale value as unknown rather than as zero. Public market data is often readable without authentication, while trading and some account endpoints require it, so check what you can actually verify before you commit. Keep the observation date with every price you write down.
Fees and resale move the break-even line
The example above ignored fees. Many platforms charge on entry, on exit, or both, and the schedule can differ by market and by settlement route. Read the actual fee rules for the specific market you are trading rather than assuming a headline rate covers every order type. With an average entry of 0.456, the bid you eventually sell into has to clear 0.456 plus fees per share before you are level. A wider spread pushes that threshold higher, and a per-trade fee that looks small matters more when the spread is already wide.
Resale at the price you see now is never promised. The bid that exists when you decide to sell may have moved, or its size may have shrunk. If you must exit before settlement, you depend on someone else accepting your price, and a wide spread with thin depth is costly to leave. If you plan to hold to settlement, the quality of reliable resale matters less, but the entry arithmetic still sets your real cost.
Turning displayed prices into fill prices for an expected value estimate
Expected value is a probability-weighted average of outcomes. It only becomes useful once you feed it the price you expect to pay rather than the price you were shown. Say you judge an outcome worth 1.00 if it happens and 0.00 otherwise and your probability is even at 0.50. At an average fill of 0.456, expected profit before fees is 0.50 minus 0.456 = 0.044 per share. At an average fill of 0.52, the same estimate leaves you at negative 0.02 per share before fees. Your probability view did not change; only the fill did. That is the trap of computing an expected value against a midpoint you cannot get filled at, so price your estimate against the average fill you expect at your intended size.
A simple habit before ordering: note the midpoint, the best executable quote, and the average fill you expect given visible depth. If the average you expect sits far from the midpoint, make the decision on the average. If you cannot estimate depth, size down and watch what you actually get. This is a decision protocol, not a promise that any trade will pay.
What this example leaves out
The construction uses round numbers and a 2-level book. Real books can hold many levels, hidden interest, and fast changes, and the example ignores fees, rebates, and settlement mechanics. It asserts nothing about any platform's current quotes or about how a 100-share order would fill in practice. What it demonstrates is a method: cost each visible level, sum the costs, divide by the total shares, and compare that figure with the displayed price. Run that method on current data from wherever you trade, and do not read the numbers here as a forecast.
Data can be stale, missing, or formatted differently across platforms. A liquidity figure returned by an endpoint is not the same as a live book snapshot, and volume is not liquidity. Because conditions move, an observation date is part of the number, not a footnote. This arithmetic will not tell you which market suits you; it only helps you read the quotes in front of you without mistaking a midpoint for a fill. Treat any price that arrives without depth or a timestamp as a rough reference, not something you can trade against.
Before your next order
Work through 4 questions. Is the displayed figure a midpoint, a last trade, or an executable quote? How wide is the spread, and what depth sits at the first few levels? What average fill does your intended size imply once you walk those levels? After subtracting fees, does that average still leave the trade worth doing against your own probability estimate? If the gap between midpoint and expected fill is large, size down, wait for depth, or set the trade aside. If you intend to exit early, price the bid you might get on the way out as well, and check the quality of that exit before you rely on it.
Sources & verification
Sources checked
Sources checked
PolyZeno. Automated review with DeepSeek V4.1 Flash.