Prediction Market Liquidity: Is the Displayed Probability Actually Executable?
Check whether a prediction-market probability can be bought or sold at your size after spread, order-book depth, and fees, before you treat it as a price you can trade.
A displayed probability is not automatically an executable price. To test a specific order, identify the side, intended size, and price limit; walk the current asks for a buy or bids for a sell; calculate the size-weighted average; add applicable fees; and compare that all-in result with your own probability estimate. On Polymarket, the displayed number is normally the bid-ask midpoint, or the last trade when the spread is wider than $0.10.12 The buyer pays available asks and the seller receives available bids, so the executable price can differ materially from the headline number.
This guide focuses on checking size-specific executable prices before placing an order. It does not measure slippage on completed fills, which trading slippage and execution costs handles; decide how much edge must survive costs, which minimum edge after trading costs covers; or choose an order type, which market versus limit orders covers. It also does not evaluate whether your probability estimate is calibrated, which is the subject of prediction market probability calibration. The displayed probability is a market-implied reference, not an objectively correct forecast.
A practical pre-trade sequence
- Identify the contract and intended side.
- Record the displayed probability.
- Inspect the current bid and ask levels and their resting quantities.
- Set the intended size and maximum acceptable buy price or minimum acceptable sell price.
- Check how much depth exists inside that price limit.
- Calculate the snapshot-based estimated VWAP for the intended size.
- Add the applicable entry or selling fees.
- Compare the all-in buy cost, or net sell proceeds, with your own probability estimate.
- If an early exit matters, estimate liquidation proceeds separately from entry cost.
- Record the estimate and the eventual outcome for later review.
Not every trade needs every field or a full model. The point is to make size, price protection, and costs explicit when liquidity could change the decision.
What does the displayed probability actually represent?
On Polymarket, the displayed number is normally the midpoint of the best bid and best ask. If the best YES bid is 34 cents and the best YES ask is 40 cents, the page shows 37%, yet you would pay 40 cents to buy and receive 34 cents to sell.1 The midpoint is a summary of the two sides; it is not an executable quote.
The rule has a second branch that is easy to miss. When the spread is wider than 10 cents, Polymarket shows the last traded price instead.2 Suppose the best bid is 30 cents, the best ask is 42 cents, and the last trade was at 38 cents. The page shows 38%, the midpoint would be 36%, and the cheapest YES you can actually buy costs 42 cents. In a wide-spread market the headline can be a stale trade rather than a current quote, so it can be further from a tradeable price than a midpoint would be.
Venues also present the book differently. Kalshi’s API documentation explains that its order book returns only bids, because in a binary market a YES bid at price X is equivalent to a NO ask at $1 − X.3 The cheapest YES you can buy is therefore $1 minus the highest NO bid, and the number of contracts available at that price is the size of that NO bid. A reader who looks only at the YES list of such a book sees the bids they could sell into, not the offers they would buy from.
The displayed probability can be useful as a market-implied reference. It becomes misleading when it is used as though it were the entry price in an edge calculation. A trader’s probability estimate is a separate judgment, and probability estimation and calibration are outside this article’s primary scope.
How much liquidity is enough for my size?
Two properties of the book answer different questions. The best bid is the highest displayed buying price, and the best ask is the lowest displayed selling price. The bid-ask spread is best ask minus best bid. Order-book depth is the resting quantity at each price level and determines how the cost changes as size grows.
The spread is not simply the cost of trading the first contract. Relative to the midpoint, buying one contract at the ask is a half-spread difference in a symmetric comparison. An immediate buy-and-sell round trip against an unchanged one-level book loses the full quoted spread before fees. Once an order uses multiple levels, walking the book adds depth-related execution cost, also called book-walking cost. Reserve realized slippage for a difference between an explicitly defined benchmark and the actual fill.
Polymarket’s documentation states that its order book has no trading size limits, that large orders may move the price significantly, and that traders should check depth before trading in size.1 A marketable order there uses limit-order mechanics with a price derived from current liquidity.4 That does not make a snapshot a guarantee: liquidity can disappear or change before matching.
Separate four quantities before calculating. Intended size is what you want to trade. Full-size depth coverage means the current snapshot contains sufficient resting quantity within the chosen price limit. Estimated full-size execution means that the snapshot supports a VWAP calculation for the entire intended quantity. Actual full execution means that the submitted order has matched the complete intended quantity. Visible depth does not guarantee execution. A snapshot-based estimated VWAP describes the book you observed, while the realized VWAP is calculated from the fills you actually received.
For Polymarket marketable orders, the current documentation describes Fill and Kill (FAK) as filling available quantity immediately and cancelling the remainder, and Fill or Kill (FOK) as filling the entire order immediately or cancelling it.4 Order interfaces may expose different controls and defaults, so verify the venue and interface you are using. Price protection still matters: a buy can have a maximum price and a sell a minimum price; if the book moves, the order may fill partially or not at all.4
A compact calculation framework
For a buy order, let Q be the intended number of contracts and let each consumed level have quantity quantity_i and price price_i:
VWAP = SUM(quantity_i × price_i) / Q
All-in unit cost =
[SUM(quantity_i × price_i) + entry fees] / Q
p_subjective = trader's subjective probability, 0 ≤ p_subjective ≤ 1
Expected payout per share =
p_subjective × $1
Expected margin per share =
expected payout - all-in purchase cost
This framework assumes the full Q can be executed within the chosen price limit. If only part fills, report the partial quantity and its realized VWAP separately; do not divide the filled notional by the intended size and call it a full-size execution. For a sell order, calculate gross proceeds as SUM(quantity_i × price_i), subtract selling fees, and divide by the sold quantity to obtain net sale proceeds per share. Net sale proceeds are separate from expected settlement value if you hold to resolution: a snapshot-estimated sale is not a realized transaction; an executed sale realizes trading P&L relative to the position’s cost basis, after applicable costs, while a position held until resolution realizes its settlement outcome separately.
For a binary contract that pays $1 if YES resolves true and $0 otherwise, the expected margin above is dollars per share. It is model-based, not a guaranteed profit or proof that the probability estimate is correct.
A worked example: an 8-cent paper edge at 300 contracts
The book below is hypothetical and not from any real market. A trader believes the YES side is worth 50 cents and wants to buy 300 shares. In the Polymarket SDK, a market BUY amount is pre-fee USD notional, while market SELL shares is share quantity: a 300-share analytical target must not be entered as a $300 market-buy amount. maxPrice is a unit-price constraint; maxSpend is an all-in spending cap including applicable fees. Here, the target is 300 shares, estimated pre-fee notional is $135.80, illustrative fees are $3.7139, and estimated total expenditure is $139.5139. These are snapshot estimates, not guaranteed fills.4
| Side of the book | Price | Contracts resting |
|---|---|---|
| Ask (you buy YES here) | 44¢ | 120 |
| Ask | 45¢ | 80 |
| Ask | 47¢ | 100 |
| Ask | 52¢ | 400 |
| Bid (you sell YES here) | 40¢ | 200 |
| Bid | 39¢ | 100 |
| Bid | 35¢ | 500 |
The best bid is 40 cents and the best ask is 44 cents, so the displayed midpoint is 42%. Against a 50-cent belief, a midpoint-only calculation suggests an 8-cent margin. The order reaches exactly 300 contracts at or below a $0.47 maximum buy price:
Entry notional = (120 × $0.44) + (80 × $0.45) + (100 × $0.47)
= $52.80 + $36.00 + $47.00
= $135.80
Entry VWAP = $135.80 / 300
= $0.4526667 per contract
Illustrative entry fees at feeRate = 0.05:
120 × 0.05 × 0.44 × 0.56 = $1.4784
80 × 0.05 × 0.45 × 0.55 = $0.9900
100 × 0.05 × 0.47 × 0.53 = $1.2455
Total entry fees = $3.7139
All-in entry cost = ($135.80 + $3.7139) / 300
= $0.4650463 per contract
At a subjective YES probability of 50%:
Expected payout = 0.50 × $1
= $0.50 per share
Expected margin = $0.50 - $0.4650463
= $0.0349537 per share
Here, the expected payout and margin are expressed in dollars per share because a binary YES contract pays $1 if YES resolves true and $0 otherwise. They are model-based estimates, not guaranteed profit and not evidence that the trader’s probability estimate is correct. The midpoint-based margin of $0.50 − $0.42 = $0.08 overstates the size-specific margin because it ignores the ask, the deeper levels, and fees.
For comparison, buying 100 contracts would use only the first ask level and produce a $0.44 snapshot VWAP, or a $0.06 pre-fee difference from the $0.50 estimate. That is a different intended size, not proof that 300 contracts are available at the same price.
The assumptions are deliberate. The book is hypothetical. The 50% subjective probability is a placeholder. The 0.05 feeRate is illustrative and must be checked against the real market’s current fee parameters. The calculation is valid for a full-size estimate only because 300 contracts are shown within the $0.47 limit; a smaller limit would leave the order partial or unfilled. A real book can change before matching, so this is a snapshot estimate rather than a fill guarantee.
For a sell order, keep proceeds separate from entry cost. Gross proceeds are the sum of quantity times bid price. Selling fees are then deducted to obtain net proceeds, and net proceeds divided by the sold quantity is the net proceeds per contract. Do not combine a buy cost and a future sell proceeds estimate into one ambiguous “executable price.”
If an early exit matters, walk the bids separately. In this static snapshot, selling 300 YES contracts would receive:
Gross exit proceeds = (200 × $0.40) + (100 × $0.39)
= $80 + $39
= $119.00
Exit VWAP = $119 / 300
= $0.3966667 per contract
Gross round-trip loss before fees = $135.80 - $119.00
= $16.80
= $0.056 per contract
This is a static-snapshot illustration only; it does not imply that a future exit will occur at the current bids. If the same illustrative 0.05 taker rate applied to the exit, exit fees would be:
200 × 0.05 × 0.40 × 0.60 = $2.4000
100 × 0.05 × 0.39 × 0.61 = $1.1895
Total exit fees = $3.5895
Total entry and exit fees = $3.7139 + $3.5895
= $7.3034
Net round-trip loss = $16.80 + $7.3034
= $24.1034
≈ $0.0803 per contract
The first round-trip figure is before fees; the last is after the stated illustrative fees. Whether the entry margin is large enough for the intended trade is a separate question that minimum edge after trading costs addresses.
Which fees belong in the executable price?
Fees sit on top of the depth calculation and are part of the all-in cost or net proceeds. Polymarket’s current documentation gives the fee formula as:
fee = C × feeRate × p × (1 - p)
C is the number of shares and p is the share price.5 A feeRate of 0.05 is an illustrative coefficient applicable to certain categories, not a flat 5% fee on notional value and not a universal rate. Current documentation lists different rates by category and also identifies fee-free markets, so verify the market-specific parameters before using the formula.5 Because of the p × (1 - p) term, the dollar fee is largest near 50% and smaller toward the extremes.5 Fees are one component of the effective trading cost.
Kalshi is a separate venue with a separate fee schedule. Its current help documentation says that fees can differ by market and that some markets charge a maker fee when a resting order ultimately executes; the fee is shown in the order ticket before confirmation.6 Do not apply Polymarket’s formula to Kalshi. A maker order may have a different fee, but resting changes fill uncertainty and does not automatically produce a cheaper completed trade.
Treat every fee schedule as time- and market-specific. The 2025 arbitrage study discussed below excluded fees because Polymarket did not charge per-trade fees during its historical analysis,7 while the current Polymarket documentation describes taker fees on certain markets.5 Historical fee treatment cannot be substituted for the rate applicable to a live calculation.
Is an apparent arbitrage executable?
A displayed price can suggest a theoretical arbitrage. Suppose the cheapest YES costs 46 cents and the cheapest NO costs 51 cents in the same market. If the contracts are genuinely complementary and one of each pays $1 in all valid resolutions, the gross pair cost is $0.97 and the gross theoretical margin is $0.03. The execution and cost conditions below determine whether that theoretical margin can be realized.
- Fees. At an assumed 0.05 feeRate, the YES fee is
1 × 0.05 × 0.46 × 0.54 = $0.01242and the NO fee is1 × 0.05 × 0.51 × 0.49 = $0.012495. Total before rounding is $0.024915, leaving a residual theoretical, pre-rounding margin of$0.03 - $0.024915 = $0.005085per complete pair. Polymarket documents fee rounding to five decimal places, but these details do not establish fee-assessment granularity or tie-breaking, so $0.005085 is not exact realized profit.5 - Depth. The trade can be no larger than the thinner of the two price levels, and both legs must execute in the required quantities.
- Leg risk. The two orders are separate, so one can fill while the other misses or moves.
The Polymarket arbitrage study by Saguillo and coauthors reports an estimated $40 million of realized arbitrage profit across investigated strategies. The study analyzed historical data for markets that resolved between April 1, 2024, and April 1, 2025.7 That is a historical realized-profit estimate, not a current 2026 observation. The study distinguishes detected pricing discrepancies, theoretical opportunities, and opportunities that users actually executed; its result does not establish that a comparable opportunity exists today or that an individual trader could fill one at the desired size.
The paper used a five-cent-on-the-dollar opportunity-selection threshold in its analysis. That was a study parameter for focusing on higher-reward opportunities given non-atomic execution risk, not a minimum profitable edge for every trader.7 Its qualification remains important: because the legs are not atomic, one leg can succeed while the other fails.7 The residual also depends on any other applicable costs; an additional cost greater than the residual would eliminate it. For a gap between two different contracts or venues, verify that the contracts resolve on identical terms; prediction market price disagreement covers that equivalence question.
What if the order book is thin or stale?
A thin or stale book can show a wide spread, little available depth, or a last-trade reference that no longer reflects current bids and asks. The book can also change between observation and matching, so a snapshot-based VWAP may not be realized. Record the book, the time to resolution, the intended size, the price limit, and the outcome if you want to investigate how those variables interact. This article does not assert a general directional pattern of liquidity deterioration near resolution without directly relevant evidence.
How do you record the check so it can be reviewed?
A pre-trade check is only useful for review if it leaves a record. For each order you consider, log:
- Contract and intended side.
- Intended share quantity.
- Displayed probability.
- Best bid and ask.
- Available depth within the selected price limit.
- Maximum buy price or minimum sell price.
- Snapshot-estimated VWAP.
- Estimated applicable fees.
- All-in entry cost or net sale proceeds.
- Subjective probability estimate.
- Decision: execute, reduce, or skip.
At review, keep these fields distinct:
- Actual matched quantity.
- Actual realized VWAP.
- Actual fees.
- Partial-fill remainder.
- Final execution outcome.
Use the pre-trade estimate as a benchmark, not as a guaranteed execution result. Do not record a skipped trade as a fill or describe a partial execution as complete. The benchmark method in trading slippage and execution costs applies after the fill.
Common ways the check goes wrong
Treating the displayed price as the fill price. The midpoint or last trade is a summary, and the ask or bid is what you actually trade against.
Sizing off the best level only. The first price shows what a small order pays, and a larger order pays more on average, as the example above shows.
Ignoring the exit. An entry that looks good can be expensive to reverse. If you may sell before resolution, price that sale too.
Assuming a tight spread means a deep market. A narrow gap says nothing about how many contracts rest behind it.
Using an old fee assumption. Fee schedules change and vary by market, so read the current one.
Treating one snapshot as fixed. The book moves. The computed price is an estimate to size against, not a promise.
Reading a last-trade display as a current quote. In a wide-spread market the headline can lag the live book.
Where Costante fits
Costante’s role here is narrow. Its behavioral execution and review workflow supports planning, self-defined guardrails, pre-trade and in-session checks, low-friction logging, and review of behavioral drift. A prediction-market trader could keep the book snapshot, executable-price estimate, fee estimate, and decision in a spreadsheet or a journal with configurable fields; the trading journal app guide covers what to look for. Costante does not read order books, calculate executable prices or fees, connect to prediction-market exchanges, execute or route orders, or decide whether a contract is liquid enough. The size, price limit, probability estimate, and trading decision remain the trader’s own.
Frequently asked questions
Is the price shown on a prediction market the price I will pay?
Usually not. On Polymarket the displayed figure is the midpoint of the best bid and ask, or the last traded price if the spread exceeds 10 cents, while a buyer pays the ask and a seller receives the bid.1 For anything beyond the size resting at the best price, the average fill is worse still.
How do I know if a market is liquid enough for my size?
Walk the book. Add up the resting contracts at each price from the best ask until your size is covered, compute the average price, and compare it with the displayed price and with your own probability estimate. If the size cannot be filled at a price that still leaves a margin, reduce the size or skip the trade.
Does a tight bid-ask spread mean the market is deep?
No. The spread is the gap between the best ask and best bid; it says nothing about how many contracts rest behind those prices. Check the size at each price level as well.
Why does Kalshi’s order book list only bids?
Kalshi’s API response contains yes_dollars and no_dollars bid arrays, not separate ask arrays. For a binary contract, the best YES ask is $1 - highest NO bid, and the best NO ask is $1 - highest YES bid.3 A trader buying YES consumes liquidity implied by the NO bid side. For multiple levels, convert each relevant NO bid into the corresponding YES ask and carry over its quantity; the YES bid array alone does not contain both sides of the YES market.
Sources
Costante provides educational workflow tools, not financial advice. Trading involves risk.
Footnotes
-
Polymarket. Prices & Orderbook. Polymarket Documentation, accessed 19 September 2026. ↩ ↩2 ↩3 ↩4
-
Polymarket. How Are Prices Calculated? Polymarket Help Center, page dated 13 March 2026, accessed 19 September 2026. ↩ ↩2
-
Kalshi. Orderbook Responses. Kalshi API Documentation, accessed 19 September 2026. ↩ ↩2
-
Polymarket. Place Orders and Order Lifecycle, Polymarket Documentation, accessed 19 September 2026. ↩ ↩2 ↩3 ↩4
-
Polymarket. Trading Fees. Polymarket Documentation, accessed 19 September 2026. Fee rates are set per market category and may change. ↩ ↩2 ↩3 ↩4 ↩5
-
Kalshi. Fees. Kalshi Help Center, page dated 19 April 2026, accessed 19 September 2026. ↩
-
Saguillo, O., Ghafouri, V., Kiffer, L., & Suarez-Tangil, G. (2025). Unravelling the Probabilistic Forest: Arbitrage in Prediction Markets. In 7th Conference on Advances in Financial Technologies (AFT 2025), LIPIcs. Preprint: arXiv:2508.03474. ↩ ↩2 ↩3 ↩4