Polymarket CLOB vs AMM Prediction Markets: Which Wins on Liquidity?
Polymarket CLOB vs AMM: order book depth beats bonding curves on liquid markets, with real slippage math showing why spreads stay tighter.
A $5,000 market buy on a liquid Polymarket contract costs you roughly 0.3-0.5% in slippage. Push the same $5,000 through a constant-product AMM pool sized at $200k total value locked, and you're eating closer to 5%. That gap isn't a rounding error — it's the entire reason serious trading volume on prediction markets has concentrated on order-book venues, and it's worth understanding the mechanics before you build a bot against either one.
The book vs the pool: two different liquidity primitives
Polymarket runs a central limit order book. Orders are matched off-chain by an operator, then settled on-chain through the Gnosis Conditional Tokens Framework — the same primitive underpinning most binary outcome markets today (I go deeper on how that token structure works in the CTF breakdown). Azuro and Overtime, by contrast, price outcomes through automated market makers: liquidity providers deposit into a pool, and a bonding curve sets the price based on pool composition rather than resting bids and asks.
These aren't just implementation details. They produce fundamentally different liquidity curves.
How the CLOB fills an order
A CLOB fill walks the book. If the best ask is 1,200 shares at $0.552 and the next level is 2,000 shares at $0.555, your order consumes liquidity level by level until it's filled, and your average price only degrades as deep as your size forces it to. When market makers are actively quoting — and on Polymarket's top 50 markets by volume, they reliably are — the book stays thick near the mid, often with sub-cent spreads.
How AMM pools price the same risk
An AMM has no discrete levels. Price moves continuously along a curve as a function of pool reserves. The simplest version, a constant-product curve, prices every unit of size against the entire remaining pool — there's no such thing as "free" depth near the touch. Azuro's actual curve differs in details (their liquidity tree isolates risk per market rather than one global pool), but the core property holds: your fill price is a function of a formula, not a stack of resting orders, and size always moves you along that formula.
Walking a real order through both
Here's the arithmetic, using a standard constant-product model (x·y=k) for the AMM side, which is close enough to how most AMM prediction markets behave for illustration:
// AMM: constant-product price impact for a $dx buy
function ammSlippage(x, y, dxUsd) {
const k = x * y;
const yNew = y + dxUsd;
const xNew = k / yNew;
const tokensOut = x - xNew;
const avgPrice = dxUsd / tokensOut;
const spotPrice = y / x;
return avgPrice / spotPrice - 1; // slippage vs spot
}
// pool: $100k YES side, $100k NO side (200k TVL)
ammSlippage(100000, 100000, 5000); // ≈ 0.0513 → 5.1% slippage
// CLOB: walk the ask stack until the order is filled
function clobSlippage(asks, notionalUsd) {
let remaining = notionalUsd, cost = 0, filled = 0;
for (const [price, size] of asks) {
const levelUsd = price * size;
const take = Math.min(remaining, levelUsd);
cost += take; filled += take / price; remaining -= take;
if (remaining <= 0) break;
}
const avgPrice = cost / filled;
return avgPrice / asks[0][0] - 1;
}
clobSlippage([[0.552, 1200], [0.555, 2000], [0.560, 4000]], 5000);
// ≈ 0.0036 → 0.36% slippage
Same $5,000 notional, roughly a 14x difference in cost. That's not because Azuro's engineering is worse — it's a structural property of pricing against a curve instead of a book. A market maker running inventory-aware quoting, the kind of setup we build for clients through our Polymarket market-making service, can keep spreads under a cent on active markets precisely because a CLOB rewards active two-sided quoting with tighter prices, where an AMM's spread is baked into the curve regardless of who's providing liquidity.
Comparison at a glance
| Dimension | Polymarket CLOB | AMM (Azuro / Overtime) |
|---|---|---|
| Price discovery | Resting bids/asks, matched off-chain | Bonding curve on pool reserves |
| Slippage on size | Depth-dependent, near-zero when quoted tight | Grows continuously with trade size |
| Liquidity source | Active market makers | Passive LPs, always available |
| Thin-market behavior | Book can go empty, wide or no quotes | Pool always quotes, just wider |
| Gas/settlement | Off-chain match, on-chain settle via CTF | Fully on-chain, one tx |
| Capital efficiency for LPs | N/A — no passive LP role | Diluted across full outcome range |
| Best for | High-volume, actively traded markets | Long-tail markets nobody's quoting |
Where AMMs still win
The CLOB's weakness is the flip side of its strength: it needs someone quoting. Polymarket has thousands of long-tail markets — obscure political outcomes, niche sports props — where no market maker bothers to post size, and the book can sit empty or absurdly wide for hours. An AMM pool never has that problem. Reserves are always there, so a trader can always get filled, just at a worse price on size. If you're building a bot that needs guaranteed fill availability across hundreds of low-volume markets rather than best execution on a handful of liquid ones, an AMM venue is arguably the more predictable target.
This pricing gap is also exactly where arbitrage bots make their money: when Azuro's curve prices an outcome meaningfully away from where Polymarket's book and Kalshi's book agree, that's a spread worth capturing before it closes — something we cover in more detail when comparing Polymarket against Kalshi for systematic traders, and something our arbitrage bot builds are specifically designed to catch.
Where the CLOB breaks down
Don't mistake tight spreads on flagship markets for tight spreads everywhere. Depth evaporates fast outside the top tier of Polymarket markets, and resolution risk compounds the problem — if a market is heading toward a contested UMA resolution, quoting activity can dry up well before the deadline as market makers pull size to avoid getting caught on the wrong side of a dispute (worth reading if you haven't seen how UMA's optimistic oracle actually resolves Polymarket markets). A CLOB also gives sophisticated market makers an edge over retail flow that an AMM's flat curve doesn't — spread capture strategies live and die on being able to react to book imbalance faster than everyone else, which is the entire premise behind a dedicated spread-trading bot.
Verdict: which to build against
If your strategy trades the top 100-200 Polymarket markets by volume, build against the CLOB — the depth math above isn't close, and a well-tuned quoting bot will consistently out-earn passive LP yield on an equivalent AMM pool. If your edge is finding mispriced long-tail markets or cross-venue arbitrage where AMM curves lag book prices, you need exposure to both venues simultaneously, not a choice between them. The mistake is treating this as one-size-fits-all: pick the CLOB for execution quality, keep an AMM feed running for the arbitrage signal it generates against it.
If you're deciding how to architect a bot against Polymarket's order book, talk to us about building a market maker tuned to the specific markets you're trading.
Need a bot like this built?
We design, build and run trading bots on Solana, Hyperliquid and Polymarket.
Start a projectMore from the blog
Public vs Paid RPC: How to Run a Fair Benchmark
A fair comparison of public and paid RPC endpoints must account for quotas, workload, freshness and support guarantees.
Read articleRPC Benchmark Percentiles Explained: p50, p95 and p99
Why averages hide the latency spikes that break trading bots, wallets and production blockchain applications.
Read articleHyperliquid REST vs WebSocket Benchmark: What to Measure
A benchmark plan for Hyperliquid market data that separates request latency from streaming freshness and recovery.
Read article