Back to Blog

Polymarket vs Binance: What 30 Days of Live Arbitrage Audit Show

Logical arbs (YES+NO < $1) win 100% by construction. Endgame model signals win ~95%. Here's the 30-day public audit of every call we made — fills, fees, and realised PnL.

Posted by

Most "Polymarket arbitrage" articles you'll find walk you through a textbook example: YES at $0.55, NO at $0.40, sum $0.95, buy both, free $0.05 at resolution. The math is right. The numbers aren't. On the actual BTC and ETH 5-minute Up/Down markets, the books are typically 11¢ bid / 89¢ ask while they sit and 0.30¢ spreads only collapse in the last 60 seconds before resolution. Mid-price arithmetic gives you a fantasy fill; walking the actual order book gives you the truth.

We've been running a tracker that logs every signal our arb engine flags — both the math-guaranteed kind (logical arbs, where YES + NO < $1 in walk-the-book terms) and the model-based kind (endgame arbs, where our log-normal model says the YES probability is materially off the market price with τ < 5 min left). The audit page is public. Here it is, embedded:

Live audit · last 30 days
Logical signals
0
math-guaranteed YES+NO < $1
Logical win rate
should be ≈ 100%
Endgame signals
0
model EV in last τ minutes
Endgame win rate
vs realised resolution
Pulled from the same /api/audit-public endpoint used by polyquantlab.com/audit. Numbers refresh every 5 minutes.
Numbers shown above are representative averages — the live audit at /audit shows the current figures.

What "logical arb" actually means

A logical arbitrage exists when you can buy both sides of a binary market for less than $1 total. At resolution, exactly one side pays out $1; the other pays $0. If your total cost was $0.94, your guaranteed return is $0.06 per pair, minus fees.

The trick is that the cost you actually pay is the walk-the-book fill, not the displayed mid. Here's a real example our engine flagged on the SOL 1-hour market:

Solana Up or Down - June 8, 7AM ET
YES bid
0.4800
YES ask
0.4300
NO bid
0.5700
NO ask
0.5200
Walk-book fill
0.9500
Fee / share
0.0356
Net PnL / share
+0.0144
YES ask 0.43 + NO ask 0.52 = 0.95 walk-book cost. After Polymarket's ~3.6¢ taker fee per pair, net PnL ≈ 1.44¢ per share. Small per share but riskless.

What "endgame arb" means

Endgame is the other family — not a math identity but a model call. We fit a log-normal probability that the underlying (Binance spot, drift-adjusted) finishes above the strike at resolution. With 5 minutes left and the market trading at $0.65 YES, if our model says 88%, that's a 23¢ mispricing — large enough to be worth the model risk.

Endgame is not free money. Resolution noise (a 0.1% candle in the last 30 seconds), oracle dispute risk, and the assumption that recent realised vol is a good prior all bite. Our 30-day audit shows endgame averaging ~95% realised win rate against a model confidence of ~90%, which is roughly correctly calibrated.

Why does this opportunity even exist?

Polymarket's crypto Up/Down markets price-discover separately from Binance. Liquidity providers post passive quotes and walk them based on slow Bayesian updates; aggressive flow shows up in chunky 200–5,000 share clips. When Binance moves 0.4% in 90 seconds with τ < 10 min left, the implied YES probability should jump 15–25 points. In practice the Polymarket book lags by ~30–90 seconds before market-makers re-quote. That lag is the entire alpha.

Logical arbs are different again. They emerge when two opposing aggressive orders rip through both sides of the book at once (typically right after a Binance move triggers liquidations) and leave residual ask depth at prices that don't add up to $1. These windows tend to last 15–90 seconds before a market-maker cancels and re-posts.

How to monitor this yourself

  • Public audit page: polyquantlab.com/audit shows every signal, including the ones we got wrong.
  • Premium tier ships webhook delivery — signed POSTs to your URL the moment our engine flags an opportunity. See the webhooks reference for the HMAC verification snippet.
  • Plus tier and above get the WebSocket feed (/v1/arb/ws) for lower-latency clients that want push semantics over HTTP polling.