Archive / Prediction markets / E131
Same contract on two prediction markets: the gap closes in seconds
Buying a contract on one prediction market and its opposite on another looks like +4.0c per pair on trade prints, but earns +0.0 to +0.2c when filled on live quotes, because the gap closes within seconds.
Identical contracts are listed on a US event-contract exchange and on an on-chain prediction market, so a price gap between them looks like free money: buy "Up" on one venue and "Down" on the other. We tested 15-minute Bitcoin and Ether up/down contracts, sports winners and noon price ladders. On past trade prints the Bitcoin pair earned +4.0c per contract pair after fees. Filling the second leg after the signal cut that to +1.6c on paper, and Ether lost 3.2c. On live order books the gap lasted a few seconds, and a fill 10 seconds later earned +0.0 to +0.2c.
The same contract listed on two prediction markets will sometimes trade at different prices, and buying it cheap on one while selling it dear on the other locks in a profit.
Why people believe it
The two venues have different users, fee schedules, settlement currencies and order books, and each sets its price separately. People argue that a gap should therefore open from time to time, and that a pair of opposite positions pays one dollar at resolution whatever the outcome.
Why it would persist The argument, as stated before testing
People argue that moving money between a US-regulated exchange and an on-chain venue is slow, that the on-chain book is thin, and that resolution rules differ slightly, so a flow of arbitrage capital would not close every gap.
We found contracts that both venues list: 15-minute "will Bitcoin (or Ether) be higher at the end of the window" contracts, game-winner contracts in 14 sports leagues, and noon "above price K" ladders. A "contract pair" is Up on one venue plus Down on the other; it pays 1 dollar when both venues resolve the window the same way. We computed the profit after both venues' fees, first from past trade prints, then with the second leg filled only after the signal, and finally on live order books recorded side by side, asking whether the gap was still there a moment later.
A lead needs all of: (a) at least 100 independent events (a window, game or noon day) with a qualifying signal; (b) net mean of at least 1c per contract pair after both venues' fees and the actual or proxy spreads; (c) event-clustered bootstrap 95% interval above 0 on the realised payoff, including resolution mismatch; (d) the same sign in each of the three time windows; (e) on live books the gap must exist at standing quotes, persist at least 10 seconds and have depth of at least 100 contracts. With about 50 cells tested, a historical-proxy lead also needed t of at least 3; trade-print results count only as an upper bound.
Failure of any one of (a) to (e). Criteria were written after partial looks at no more than 25% of the 15-minute sample and about 5% of the sports sample, and about 15 minutes after live recording began.
Exchange taker fee 0.07 x series multiplier x p x (1 - p) per contract; on-chain venue taker fee equal to its published fee-schedule rate (0.07 for the 15-minute markets) x p x (1 - p) per share; the quoted spread is paid on both legs. Cent rounding per order is ignored for large orders. Resolution mismatches are included in the realised payoff in the historical tests.
Same rule on a second asset (Ether); three look-back windows; one-sided versions (buy the lagging venue only); lead-lag cross-correlation of 5-second price changes on 150 windows; resolution-mismatch rate from all 6,403 windows.
The live-book requirement failed: most gaps were gone one snapshot later (59% in Bitcoin, 78% in Ether) and a fill one snapshot later earned +0.0 to +0.2c with almost no depth. Sports and noon ladders also failed the requirement of at least 100 events (fewer than 100 events). The Bitcoin paper result (+1.6c, interval +0.5 to +2.6c) met the historical-print requirements and failed only against live books; the Ether loss (-3.2c) was not one of the pre-set requirements.
- On trade prints, Bitcoin pairs with a net gap of at least 2c earned +4.0c (interval +2.9 to +4.9c, 559 of 1,025 windows), including resolution mismatch. These prints are prices that had already happened.
- Deciding on earlier prints and filling the on-chain leg at the first trade afterwards, the same rule earned +1.6c in Bitcoin (interval +0.5 to +2.6c, 547 windows; +1.5c, +0.9c and +2.3c in the three time windows) and lost 3.2c in Ether (interval -5.8 to -1.0c, 207 windows).
- One-sided versions (buy only the lagging venue) had intervals including zero in Bitcoin (+1.4c, +1.7c and +4.2c at gaps of 3c, 5c and 8c) and were negative in Ether (-1.8c, -1.5c and -4.5c).
- The exchange leads the on-chain venue by about 5 seconds: the correlation of 5-second price changes is +0.44 when the on-chain price is shifted by 5 seconds, +0.36 at no shift, +0.07 at 10 seconds and about zero later (150 windows). When the venues differ, the on-chain price moves toward the exchange's (slope -0.19 within 5 seconds); the exchange's does not move (+0.01).
- On 2,186 simultaneous live snapshots over 31 windows, a pair was profitable after fees in 9.3% of Bitcoin and 6.7% of Ether snapshots, by at least 1c in 2.9% and 0.9%, and by at least 2c in 2.2% and 0.3%. Most were in minutes 9-15 of a window or at prices near 0 or 1.
- Filling at the next snapshot (about 10 seconds later) instead of the one that showed the gap, the realised payoff was +0.0 to +0.2c per pair at gap thresholds of 0, 1 and 2c, with almost no depth left; 59% of Bitcoin and 78% of Ether gaps were gone by then. The +1.2c, +3.9c and +5.0c measured at the instant of observation are selection-biased and not obtainable: in 804 snapshots at 2-second sampling over 3 windows, none showed a net gap of 1c or more.
- The exchange's order book is far deeper: median 2.29 million contracts per Bitcoin window against about $25,000 of volume (contracts versus dollars, not like for like) on the on-chain venue; at the top of the book about 550-610 contracts against about 75-80 shares in the live Bitcoin books.
- The two venues resolved 91 of 6,403 Bitcoin windows differently (1.42%: 53 Up on the exchange and Down on-chain, 38 the reverse). The rate was 22% when the price moved less than $5 over the window and 3.2% under $50. The exchange settles on a 60-second average of its reference index, the on-chain venue on a 60-second average of an oracle price stream. No mismatch occurred in 28 resolved live windows.
- Game winners: pre-game, the two venues' mid prices differed by a median 0 to 0.5c (90th percentile 1.0c) at 6 hours, 1 hour and 10 minutes before the start, in every league. A pair was profitable after fees in 0.0-0.15% of rows, and never by 1c or more in 1,845 rows at 1 hour before the start.
- In play, gaps were larger (median 0.5-1c, 90th percentile 2-3.5c), but the on-chain prices were 10-45 second old trades in a moving game. The first qualifying pairs at a 1c threshold numbered 32, 37 and 37 games at three in-game times, short of the 100 required. Of 14 one-sided rules none reached t = 3.
- Live sports books, 6,702 snapshots over 35 markets in 15 games (4,830 pre-game snapshots in 14 games, 1,872 in-play in 5): a pair was profitable in 0.9% of pre-game and 0.1% of in-play snapshots, and by 1c or more in 0.02% and 0%. The only persistent case was a small college-football game with 0.39 contracts of depth, worth $0.003.
- Noon ladders: only 9 to 32 rows with prices on both venues per decision time, on 5 to 16 days, an order of magnitude short of 100 events. The live check found one Ether strike priced between 3c and 97c with books on both sides (131 snapshots), and no net gap in any of them.
- Sports games were matched across venues using start time as a tie-break; after matching, resolution disagreed in 1 of 2,128 markets (a doubleheader).
Each step toward real execution removes the gap
Mean net result per contract pair (gap of at least 2c), with 95% intervals. Bitcoin on past trade prints is +4.0c; with the second leg filled after the signal it falls to +1.6c; the same rule in Ether loses 3.2c. Live books then put the next-snapshot fill at +0.0 to +0.2c.
Chart data (cents per contract pair)
| Mean | 95% low | 95% high | |
|---|---|---|---|
| Bitcoin, trade prints (n 559) | 4 | 2.9 | 4.9 |
| Bitcoin, fill after the signal (n 547) | 1.6 | 0.5 | 2.6 |
| Ether, fill after the signal (n 207) | -3.2 | -5.8 | -1 |
On live books the gaps are rare, and in seconds they are gone
Net gap above 0Net gap of 1c or more
Share of simultaneous live snapshots in which a contract pair was profitable after both fees (any amount, and by 1c or more). Crypto windows show gaps in 6.7-9.3% of snapshots, but at 2-second sampling none reached 1c; identical sports contracts almost never show one.
Chart data (% of snapshots)
| Net gap above 0 | Net gap of 1c or more | |
|---|---|---|
| Bitcoin 15m, 10 s (n 1,129) | 9.3 | 2.9 |
| Ether 15m, 10 s (n 1,057) | 6.7 | 0.9 |
| Bitcoin 15m, 2 s (n 804) | 8.2 | 0 |
| Sports pre-game (n 4,830) | 0.9 | 0.02 |
| Sports in play (n 1,872) | 0.1 | 0 |
One venue follows the other by about 5 seconds
Correlation between 5-second price changes on the exchange and on the on-chain venue, with the on-chain series shifted by the lag shown (150 Bitcoin windows). The peak at +5 seconds means the on-chain price follows the exchange's; beyond 10 seconds there is no relation.
Chart data (correlation)
| Correlation of 5-s changes | |
|---|---|
| -10 s | 0.01 |
| -5 s | 0.04 |
| 0 s | 0.36 |
| +5 s | 0.44 |
| +10 s | 0.07 |
| +15 s | 0 |
Why it failed Interpretation · not established
The pattern fits a venue pair in which one price follows the other within seconds. A gap seen on a trade tape is then mostly a stale price on the follower, and a gap on standing quotes lasts about as long as the follower takes to update. Part of the quoted gap may also be the difference between the two settlement price sources: the realised payoff was about 1c below the quoted edge in both assets, consistent with mismatches tending to go against the side that looked rich. These are interpretations; the tests did not isolate them.
Lesson
An edge measured on trade prints is an upper bound, because each print is a price that already happened. In this test in Bitcoin the figure fell from +4.0c on prints to +1.6c with a post-signal fill, and the live check, one snapshot later, gave +0.0 to +0.2c. Where the contract and its resolution rules are identical, as for sports winners before the game, the two venues simply quote the same price.
Scope of this result
Covers 15-minute Bitcoin and Ether up/down contracts, game winners in 14 leagues and noon Bitcoin and Ether ladders on one US event-contract exchange and one on-chain prediction market, August to October 2026, with live books recorded in one session of about 3.5 hours at 10-second sampling (31 windows) plus 30 minutes at 2-second sampling, on a weekend. It does not cover other contract families, other venue pairs or execution measured at finer than 2-second resolution.
A rejected experiment applies to the tested conditions and does not prove an idea can never work. bp = basis point, 0.01%.
1. Test design
Pre-registeredDataUniverseSignalExecutionCostsControlsSample splitPass criterionKill criterionPower2. Result
ObservationsInstrumentsNet mean95% intervalMedianWorstFinding 1Finding 2Finding 3Finding 4Finding 5Finding 6Finding 7Finding 8Finding 9Finding 10Finding 11Finding 12Finding 133. Interpretation
Why it failedLessonScope4. Reproducibility
StepsGrade