Intra-market binary arbitrage explained
How and why YES + NO < $1.00 happens on Polymarket, how to size opportunities, and practical ways to buy both legs through the CLOB.
Intra-market binary arbitrage explained
Short summary: intra-market binary arbitrage occurs when the best-ask prices for the YES and NO outcomes on the same Polymarket binary sum to less than $1.00. When that happens you can buy both legs and lock a mathematical spread equal to $1.00 minus the two asks, but you must account for fees, slippage, partial fills, resolution risk, and settlement timing before calling it profitable.
Key takeaways
- "YES + NO < $1.00" is the simple condition that creates an intra-market arbitrage edge.
- The raw edge is 1.00 − (bestAsk(YES) + bestAsk(NO)), but fees, slippage, and fills often erode it.
- Execute both legs through the CLOB; FAK (market) orders are the common operational tool because they prioritize immediate fills.
- Size conservatively for available depth and always account for taker fees and tick size.
Why YES + NO can fall below $1.00
Market microstructure and human behaviour produce transient inconsistencies. Common causes include:
- Fragmented liquidity: different participants place asks on different sides without a matching counter on the other side.
- Latency and stale orders: order updates propagate through the CLOB and WebSocket at different rates; best asks can diverge briefly.
- Tick-size discretization: tick sizes (usually $0.01, tightening to $0.001 near extremes) force prices to round in ways that create tiny gaps.
- Fee variation and incentives: maker fees are zero while taker fees vary; aggressive takers will route fills differently, sometimes leaving one side thinner.
- Human errors and manual market making: misplaced large limit asks on one side create exploitable gaps on the other.
Quantifying the raw edge
The arithmetic is simple: Edge = 1.00 − (bestAsk(YES) + bestAsk(NO)). Edge > 0 => theoretical arbitrage.
- Example: bestAsk(YES) = 0.46, bestAsk(NO) = 0.52 → Edge = 0.02 (2 cents or 2% of $1).
- But this is "raw edge" before fees, slippage, and execution risk.
Costs that turn raw edge into realised P&L
Always subtract or otherwise account for:
- Taker fees: variable on Polymarket (0% up to 1.8% depending on category). If you pay taker fees on both legs, they can eat the edge.
- Slippage / partial fills: the best ask may only be available for a small size; filling more consumes deeper, worse-priced offers.
- Tick-size rounding: when tick size is $0.01, the effective best ask is quantised; that changes depth curves.
- Settlement timing & resolution risk: UMA disputes can delay or change settlement.
- Smart-contract and operational risk: CTF operations, relayer behaviour, and wallet state can add friction.
Sizing an opportunity: practical rules
- Start from available depth at the displayed best asks. Use the order-book depth view to see cumulative size at best price and next price levels.
- Calculate net edge after fees. If taker fees apply to both legs, estimate net edge = Edge − fee(YES) − fee(NO).
- Apply a slippage buffer. Conservatively assume you can only take the currently displayed size at best ask; beyond that size, assume the next price is +tick or worse.
A simple sizing workflow you can use:
- Query bestAsk and visible depth for both outcomes.
- Compute raw edge and net edge after fees.
- Determine maximum symmetric size S such that buying S of each side consumes only price levels you expect to accept.
- If net edge × S exceeds your minimum target, the trade may be worth executing.
Execution methods on Polymarket
Two practical execution patterns exist on the CLOB:
- Market (FAK) orders for both legs: createMarketOrder-style FAKs attempt immediate fills and cancel any unfilled remainder. FAK is the most common approach for fast, guaranteed-immediacy execution, but you pay taker fees and risk partial fills.
- Limit-in-the-book crossing: place limit bids at the displayed best ask or slightly more aggressive to encourage fills. This can convert you to maker (zero fees) if your order rests and a taker hits it, but it is slower and exposes you to being picked off.
Why FAK is often used
FAK enforces immediacy. When you detect a small, fleeting edge and you want the simplest operational path, placing two FAKs (one for YES, one for NO) gets you either filled or partially filled and leaves no outstanding exposure beyond the fills. Remember that FAKs execute as taker orders and therefore usually pay taker fees.
A minimal TypeScript sequence (conceptual)
This example sketches the sequence; adapt to your SDK and credentials. Replace the placeholders with your environment values.
// Pseudocode-like sketch using a CLOB client
// 1. Read best asks for both outcomes via CLOB read endpoints
const yesAsk = await clob.getBestAsk(marketId, 'YES')
const noAsk = await clob.getBestAsk(marketId, 'NO')
// 2. Compute edge and decide size
const edge = 1.0 - (yesAsk.price + noAsk.price)
if (edge <= minimumNetEdge) throw new Error('No edge')
// 3. Place FAK market orders for both legs
await clob.createMarketOrder({side: 'buy', outcome: 'YES', size: size})
await clob.createMarketOrder({side: 'buy', outcome: 'NO', size: size})
Note: trading endpoints in the CLOB surface require API key + HMAC for order placement. Reads are public. Do not assume synchronous fills; always check post-order book state and trade receipts.
Post-trade: managing the position
After fills you hold both YES and NO outcome tokens. Two settlement paths are typical:
- Immediate merge and split economics aren’t available for binaries; you simply hold both outcome tokens. When the market resolves, you will be able to redeem the winning token for $1.00 via CTF redeem.
- If you need to free capital early, you can list one or both outcomes back on the CLOB; often the remaining liquidity and spreads determine whether you can unwind at profit.
Risk checklist — why "mathematical" is not the same as risk-free
Never call an intra-market arbitrage trade risk-free without enumerating the risks. Key risks to record before execution:
- Resolution risk: UMA disputes can delay or change settlement.
- Slippage and partial fills: you may not be able to fill both legs at the advertised prices.
- Fees: taker fees can eliminate the edge.
- Smart-contract/operational risk: relayer failures, wallet deployment issues, or SDK bugs can interrupt execution.
- Geo and compliance constraints: Polymarket blocks new orders from a number of jurisdictions; do not attempt VPN workarounds.
How this affects your trading
For active traders the playbook is straightforward: automate monitoring of bestAsk(YES) and bestAsk(NO) and depth, compute net edge after fees and slippage, and size to the smaller available depth. Use FAK orders when you prioritise immediacy and are prepared to pay taker fees; consider limit placement when you can patiently seek maker fills. Always log fills and reconcile tokens on-chain against your expected exposures.
Closing paragraph
Intra-market binary arbitrage is one of the cleanest microstructure edges on Polymarket: the condition is simple (YES + NO < $1.00) and execution patterns are well understood. That simplicity does not remove real operational, fee, and resolution risks — you must include those in sizing and execution decisions.
Frequently asked questions
What exactly counts as the "edge" in intra-market binary arbitrage?
Edge is 1.00 − (bestAsk(YES) + bestAsk(NO)). It is the raw, pre-fee difference between $1.00 and the sum of the two best asks on a binary market. Realised profit must subtract taker fees, slippage, and other execution costs.
Should I always use FAK orders to execute both legs?
FAK orders prioritise immediacy and are commonly used, but they pay taker fees and risk partial fills. If you can tolerate waiting for maker fills to avoid taker fees, placing limit orders can be cheaper but slower.
How do I size an arb to avoid being left with a one-sided position?
Size to the smaller available depth at the acceptable price levels on each side. Compute cumulative depth at the best asks and the next few ticks, then choose a symmetric size that consumes only those levels you accept. Conservative sizing reduces the chance of partial unmatched fills.
Do tick-size changes matter for this strategy?
Yes. Polymarket usually uses $0.01 ticks, tightening to $0.001 near extreme prices. Tick discretisation affects depth and can create or eliminate small edges, so factor the current tick size into your sizing and slippage model.
Are maker fees ever applied to these trades?
Maker fees on Polymarket are zero. If your limit order rests and is later taken, you can avoid taker fees. However, resting limits expose you to time and pick-off risk.
Referenced terms
Related guides
Educational only. Not financial, legal or tax advice. Polymarket may not be available in your jurisdiction.