Cross-venue prediction-market arbitrage
Buy YES on one venue and NO on another for the same event. When the two prices add up to less than a dollar, the difference is yours at resolution. A month of live trading between Polymarket and outcome.xyz, fees included.
- Target APY
- 10–25%
- Risk
- Moderate
- Complexity
- Advanced
- Min. capital
- $10k–$100k
- Where it runs
- DeFi
- Chain
- Hyperliquid, Polygon
- Status
- Active
Published Sep 28, 2026. 10 min read, 18 min to listen.
What a locked pair looks like
The $70,000 pair, from the day both legs filled to resolution. Bitcoin never came close, so the Polymarket YES leg decayed to nothing while the outcome.xyz NO leg climbed to a dollar — and the two moves cancelled each other out to the cent. What is left is the line that starts below zero, because the fees are paid up front, and ends at the locked edge. Drag across the chart to see any day.
gross edge +2.9%fees −1.2%
| Day | Polymarket YES leg | outcome.xyz NO leg | Net: locked edge |
|---|---|---|---|
| 0 | −0.0% | +0.0% | −1.2% |
| 6 | −9.6% | +9.9% | −0.8% |
| 12 | −15.3% | +16.2% | −0.2% |
| 18 | −17.2% | +19.1% | +0.7% |
| 24 | −17.6% | +20.6% | +1.8% |
The same event often trades on two venues at once. When YES on one venue and NO on the other add up to less than a dollar, you can buy both and hold a position that pays exactly $1 whichever way the event goes. The gap is your profit, fixed the moment both legs fill. No view, no hedge to maintain, no liquidation — but also no way out before resolution, and fees large enough to eat most of the edge if you take them carelessly.
This is the live version of prediction-market arbitrage. Everything below comes from one month of trading between Polymarket and outcome.xyz, 7 to 28 September 2026. Positions have been scaled to a $10,000 book; prices, edges, fees and returns are exactly as traded.
How the trade works
Both venues price the same binary outcome between $0 and $1, and pay $1 to the winning side. Buy YES on the cheap venue and NO on the expensive one in equal share counts, and the two legs cover both outcomes:
| Leg | Venue | Price | If BTC dips to $70k | If it doesn't |
|---|---|---|---|---|
| Buy YES | Polymarket | $0.1757 | $1.00 | $0 |
| Buy NO | outcome.xyz | $0.7958 | $0 | $1.00 |
| Total | $0.9715 | $1.00 | $1.00 |
You pay 97.15¢ for a dollar that arrives at resolution: 2.85¢ of gross edge per pair, or 2.94% on the cash you put up. Nothing about that changes if Bitcoin doubles or halves. The position is complete the moment both fills confirm, and the only remaining question is whether both venues agree on what happened.
Matching the event, not the headline
The two legs of that trade were listed as "Will Bitcoin dip to $70,000 in September?" on one venue and "BTC dips to 70,000 by 2026-10-01 00:00 UTC" on the other. Those are the same event — but only because I checked, not because the titles matched.
Read the rule texts and three differences show up, each of them a small live exposure.
The price source. Polymarket resolves from Binance BTC/USDT one-minute candles, using the candle's High, and states that prices from other exchanges, pairs or spot markets don't count. outcome.xyz resolves from its own BTC-USDC mark price, counting a touch when the one-second TWAP reaches the level. A one-second average is harder to spike than a one-minute high, so a thin wick on Binance can resolve Polymarket YES while the TWAP never registers it.
The window. Polymarket runs from 00:00 ET on the first of the month to 23:59 ET on the last, which in September means 04:00 UTC on the 1st to 03:59 UTC on 1 October. outcome.xyz ends at 00:00 UTC on 1 October and only counts touches after its market was deployed. The two windows differ by about four hours at the close, and by however many days the outcome market was listed after the month started.
When it pays. outcome.xyz can settle as soon as a touch happens. Polymarket waits for the month to end and resolves through UMA's optimistic oracle, with a challenge window. Expect the two payouts on different days.
Both differences lean the same way: Polymarket resolves YES more readily than outcome.xyz. That makes the direction of your pair, not just its price, part of the risk:
| Your pair | If the level is touched only inside the gap | Payout |
|---|---|---|
| Polymarket YES + outcome.xyz NO | Polymarket pays out; outcome.xyz already settled NO | $2.00 |
| Polymarket NO + outcome.xyz YES | Polymarket pays the YES side; outcome.xyz settled NO | $0.00 |
The same mismatch is a windfall one way round and a write-off the other. In this book $8,285 of the $10,000 sat on the windfall side and $1,715 on the losing side — not by design, which is the point: until you check, you don't know which way your pairs lean.
Where the fees go
This is what decides whether the trade is worth doing. Polymarket charges takers on crypto markets:
fee = shares × 0.07 × p × (1 − p), with makers paying nothing.
My fills match that formula to the cent. Because it uses p × (1 − p), the fee per share is identical on both sides of the same market, and it peaks at 50¢:
| Share price | Fee per share | As a share of what you paid |
|---|---|---|
| $0.02 | 0.14¢ | 6.9% |
| $0.09 | 0.57¢ | 6.4% |
| $0.18 | 1.03¢ | 5.7% |
| $0.30 | 1.47¢ | 4.9% |
| $0.50 | 1.75¢ | 3.5% |
Read that against a 2–3¢ edge and the problem is obvious: one taker fill on a cheap Polymarket leg can cost more than a third of the gross edge. outcome.xyz charges on notional instead — the schedule I trade is roughly 0.15% taker and 0.09% maker — which on an 80¢ share is about 0.12¢, an order of magnitude less.
The cheap leg is the expensive one
The instinct is that buying a 12-cent share must be cheaper than buying a 97-cent one. On Polymarket it is the reverse, because p × (1 − p) is a curve that peaks in the middle:
| Polymarket leg | Fee per share |
|---|---|
| 10¢ | 0.63¢ |
| 15¢ | 0.89¢ |
| 17.57¢ | 1.01¢ |
| 82.43¢ | 1.01¢ |
| 96.72¢ | 0.22¢ |
| 97.26¢ | 0.19¢ |
Both sides of the same market cost the same — 17.57¢ and 82.43¢ are a matched pair at 1.01¢ — but a long-shot event priced at 3¢/97¢ is five times cheaper to trade than one priced at 15¢/85¢. My cheapest fills were the two pairs where the Polymarket leg was the 96–97¢ side. Pick pairs by where the fee curve puts them, not by which side looks cheap.
So the $70k pair really looked like this, per pair of shares:
| Amount | |
|---|---|
| Gross edge (100¢ − 97.15¢) | +2.85¢ |
| Polymarket taker fee (0.07 × 0.1757 × 0.8243) | −1.01¢ |
| outcome.xyz taker fee | −0.12¢ |
| Net | +1.72¢ = 1.8% on 97.15¢ |
Three ways to execute
Taker on both legs. Cross both spreads, get filled in seconds, pay both fees. This is the only style that reliably captures a wide, fast-moving edge — the edges above 2% in my data lasted an average of 24 seconds — and it needs roughly 1.5% of gross edge before it clears costs.
Maker on Polymarket, taker on outcome.xyz. Post the Polymarket leg at the touch, pay zero fees there, and hedge immediately on outcome.xyz when it fills. This is the best risk-adjusted version: it removes the largest cost from the trade. The price is queue risk — your quote may sit unfilled while the edge disappears, or fill exactly when the other side moves away, which is how you end up with an unhedged leg.
Maker on both. Best economics, rarely achievable: both quotes must fill while the gap still exists, and until the second one does you are directionally exposed.
A month, scaled to a $10,000 book
Five matched pairs open at the end of September, all resolving 1 October:
| Event | Pairs | Entry (YES + NO) | Capital | Gross | Fees | Net | Return |
|---|---|---|---|---|---|---|---|
| BTC dips to $70k | 7,061 | 0.9715 | $6,860 | $201.24 | $77.47 | $123.77 | 1.80% |
| BTC dips to $65k | 1,336 | 0.9865 | $1,318 | $18.04 | $9.81 | $8.22 | 0.62% |
| BTC dips to $60k | 1,118 | 0.9924 | $1,110 | $8.50 | $2.52 | $5.98 | 0.54% |
| BTC reaches $90k | 612 | 0.9887 | $605 | $6.92 | $4.67 | $2.25 | 0.37% |
| BTC reaches $90k | 108 | 0.9855 | $107 | $1.57 | $0.61 | $0.96 | 0.90% |
| Total | $10,000 | $236.27 | $95.08 | $141.19 | 1.41% |
Held about 22 days on average, 1.41% works out to 23% a year on deployed capital. Counting the cash sitting idle between opportunities — roughly 30% of the book — the whole account returned 18% annualised.
Two honest caveats. First, this is locked, not banked: it pays out when both venues resolve, and the figure assumes they resolve identically. Second, one pair is barely worth having. The $65k pair earned 0.62% net against 1.37% gross, because fees took more than half of a thin edge. At 20 days held, that is 11% a year for the same operational risk as the pair that paid 28%.
The same book with maker fills on every Polymarket leg — same events, same entry prices, same days held — keeps the $95 that went to taker fees:
| Fees | Net | Return on capital | Annualised | |
|---|---|---|---|---|
| As traded, mostly taker on Polymarket | $95.39 | $140.87 | 1.41% | 23.4% |
| Maker on the Polymarket leg | $10.22 | $226.04 | 2.26% | 37.5% |
That gap — 14 percentage points of annual return — is the whole argument for patience in execution. It is also the ceiling rather than a forecast: quotes that always fill at the touch, on both venues, in size, do not exist. Somewhere between the two rows is what a careful operator actually earns.
Step-by-step execution
- Build the pair list. Match markets across venues by event, then verify the rule text, price source, threshold and cutoff by hand. I track 109 pairs; the list changes weekly as markets expire.
- Quote both books continuously. The edge is the sum of the two best asks against $1. It appears and vanishes in seconds, so polling every few minutes finds nothing.
- Set an entry threshold above your costs. I enter as taker at 1.5% gross edge and as maker at 1%, because below that the fee table above eats the trade.
- Size the smaller book first. Capital is split across two venues, and the leg that can't fill is the one that decides your size. Cap each pair — mine is $2,500 — so one event can't absorb the whole book.
- Hedge the second leg immediately, and treat failure as an emergency. If the hedge doesn't fill, either complete it at a worse price or unwind the first leg. Do not "wait for it to come back".
- Reconcile daily. Compare share counts on both sides per event. Mine tolerates a 25-share imbalance before it forces a fix.
- Hold to resolution, then redeploy. There is no exit that beats waiting, unless the gap reappears in reverse.
Risks
Rule mismatch. The only failure that costs capital rather than edge. On the BTC pairs above it takes a touch in the four-hour gap between the two windows, or a Binance wick that the one-second TWAP never sees — unlikely, but it would wipe out the affected pair completely rather than trimming its return. Size it as a small, real tail, and prefer pairs whose mismatch leans in your favour.
Leg risk. Of 110 taker executions this month, 76 filled cleanly, 17 filled partially and 17 failed outright; 13 maker fills ended up unhedged. Every one of those is a directional position you didn't want. They're survivable because they're small and unwound quickly — my leftovers at month end were three small unmatched positions — but an unattended bot turns them into losses.
Capital lockup. The money is committed until resolution, so a 1.4% edge is only a 23% annual return if the next opportunity is ready when the cash comes back. Mine wasn't always: idle cash cut the account return to 18%.
Venue and settlement risk. Both legs are custodial to their venue and dependent on its oracle. Size so that the failure of either venue is survivable, and remember the two payouts may not arrive the same day.
Operational friction. My most common errors were exchange rate limits and a leg rejected for insufficient balance on the smaller venue — both of which cost fills, which cost edge.
Edge scarcity. The scanner saw 140,579 opportunities across 109 pairs and traded 35 of them. The average peak edge was 0.14%; the best was 4.18%. This is a game of waiting, not of volume.
When it stops working
When the spread between venues compresses below fees, which is most of the time on liquid events, and is the normal state once enough capital watches the same pairs. Stop when your fill rate drops — an edge you can see but never fill is not an edge — and when the venues' rules drift apart on the events you trade. Falling volatility also thins the prize: the wide gaps in this month's data came from fast moves that repriced one venue before the other.
Key takeaways
- The trade is arithmetic: YES + NO < $1 means a locked gap, whatever the price does afterwards.
- Fees decided 40% of the outcome this month: $95 of $236 gross on a $10,000 book.
- Polymarket's taker fee follows
0.07 × p × (1 − p)per share and is zero for makers; getting maker fills there matters more than finding wider edges. - Match the rules, not the titles: different price feeds and a four-hour difference in the settlement window are the only failures here that cost capital rather than edge.
- On Polymarket the fee curve peaks at 50¢, so a 3¢/97¢ market is far cheaper to trade than a 15¢/85¢ one, and maker fills are free.
- The realistic return is 10–25% a year on deployed capital, less once idle cash is counted, and it needs constant monitoring to collect.
Found this useful? Share it.
Related strategies
- 5–20%target APY
Prediction-market arbitrage
Buy every outcome of one event, on one venue or across venues such as Polymarket and Kalshi, for less than the $1 payout. The gap is locked in at resolution.
Prediction-market arbitrageCEX + DeFi8 min read
- Risk
- Moderate
- Complexity
- Intermediate
- Min. capital
- $1k–$10k
- 10–18%target APY
Hedged liquid staking
Buy a top-50 token that can be staked, stake it, and short the same quantity through a perpetual future. Staking rewards and funding stack on one hedged notional while price exposure nets out. A live GRAM position returned 3.60% in 83 days, or 15.9% annualised on capital in use.
Hedged stakingDeFi9 min readAudio
- Risk
- Low
- Complexity
- Intermediate
- Min. capital
- Under $1k
- 6–20%target APY
Perpetual funding-rate arbitrage
Buy spot and short the same amount of the perpetual future. Price exposure cancels out, and the short leg collects the funding that leveraged longs pay.
Funding-rate arbitrageCentralized exchange, DeFi8 min read
- Risk
- Low
- Complexity
- Intermediate
- Min. capital
- $1k–$10k
Comments
No comments yet. Questions about sizing, venues or risks are welcome.