Cross-exchange price spreads on perpetual futures
The same perp rarely trades at exactly the same price on every venue. This guide shows how to measure the gap, what it costs to trade it, and why most gaps on a screen are gone by the time your order arrives.
A cross-exchange price spread is the gap between the best bid on one venue and the best ask on another for the same perp. Capturing it means buying on one venue, selling on the other and paying taker fees on both legs twice, at entry and at exit. After fees, most visible gaps are negative or gone within a second.
How is a cross-exchange spread calculated?
Cross-exchange arbitrage on crypto perps means buying where the ask is lowest and selling where the bid is highest. The spread is the difference between the two prices relative to their midpoint:
spread = (bid on the sell venue − ask on the buy venue) / midpoint
It is quoted in basis points (1 bps = 0.01%). A negative spread means the books do not cross, so the trade loses money even before fees. A worked example with hypothetical prices:
| Step | Value |
|---|---|
| Best ask on venue A (buy) | $100,000.0 |
| Best bid on venue B (sell) | $100,060.0 |
| Spread | 60 / 100,030 ≈ 6.0 bps |
| Taker fees, one fill per leg | 4.5 bps (A) + 5.0 bps (B) = 9.5 bps |
| Net at entry | 6.0 − 9.5 ≈ −3.5 bps |
| Net, round trip (exit at zero spread) | 6.0 − 2 × 9.5 ≈ −13 bps, or −$13 on $10,000 per leg |
| Spread needed to break even | above 19 bps |
A 6 bps gap on BTC looks like free money on a screen. At base-tier taker fees like Hyperliquid's (4.5 bps) and Binance's (5.0 bps), it loses money before any slippage.
Why do prices differ between exchanges?
A perp has no single price. On each venue it trades at its own premium or discount to the index, set by that venue's traders and depth. The same premium drives funding, so a gap between venues often reflects positioning, not a mistake waiting to be fixed.
- Different traders and depth. Price discovery happens on the deepest books; thinner venues follow with a lag, and a single large order can push a thin book away from the others for a while.
- Latency. In a fast move the slower venue trails by a few seconds.
- Quote currency. CEX perps are mostly quoted in USDT, while many DEXs settle in USDC or USD. If USDT trades 5 bps below USDC, that alone looks like a 5 bps gap.
- Index inputs. Venues build index and mark prices from different spot sources.
Small, steady gaps are normal. On BTC the big CEXs typically sit within 1–2 bps of each other. That is each venue's own basis, not an arbitrage: the gap is still there when you exit, so you give it back.
What spread do you need to break even?
A round trip crosses the book four times: buy on one venue and sell on the other to enter, then the reverse to exit. So the hurdle is twice the sum of both taker fees:
net_round_trip = spread − 2 × (taker_buy + taker_sell)
| Venues (base-tier taker fees) | Round-trip fees | Gap needed to break even |
|---|---|---|
| Lighter 0 (Standard) + Extended 2.5 bps | 5 bps | above 5 bps |
| Hyperliquid 4.5 + Binance 5.0 bps | 19 bps | above 19 bps |
| Bitget 6.0 + Bybit 5.5 bps | 23 bps | above 23 bps |
The formula assumes the prices fully meet by the exit; if the gap only half closes, you give back the other half. Slippage comes on top, and so does the quote spread on venues without trading fees, such as Variational, where every trade is its market maker's quote. Maker orders and VIP tiers lower the hurdle, but a maker order may not fill before the gap closes.
Where do phantom spreads come from?
A phantom spread exists in the data but not in a market you can trade. On a raw quote feed most large gaps are phantoms. The usual causes:
- Stale or cached quotes. Some public endpoints sit behind a cache and run 2–4 seconds late, a few up to a minute. A fast move then shows up as a gap against the stale venue.
- Timing gaps. Two quotes read several seconds apart compare two moments, not two prices.
- Indicative RFQ quotes. Many Extended markets are RFQ-only, with no order book, and Variational prices every trade through its own market maker. Such quotes are indications: your fill can differ, and their bid–ask is usually wider.
- Closed sessions. Stock, index and metal perps trade around the clock on some venues while the underlying market is shut, so over a weekend their prices drift apart.
- Same ticker, different asset. CAT is Caterpillar stock on Gate, while on MEXC it is the Simon's Cat token; PURR is the Hyperliquid Strategies stock on several venues but Hyperliquid's own token on Hyperliquid. Contract multipliers (1000PEPE, kPEPE) are the same trap: a price per 1,000 coins next to a price per coin.
- Thin or broken books. The best bid may be good for only a few dollars, and a market whose own bid–ask is several percent wide is usually idle.
- Lagging mark prices. A mark price is a venue's reference for margin and funding, not a tradable price. Next to a live book in a fast move, it shows a gap that is pure lag.
How long does a real spread last?
Not long. In our own trading logs, about 63% of streaming-quote gaps of 0.3% or more turned out to be phantoms, and the real ones lived a median of about 0.6 seconds. That is our experience on a few venues, not a law. By the time the second order reaches the second venue, the gap has often closed. The first fill is easy; the price of the second fill is the real risk.
Some venues add delay on purpose: Lighter's standard accounts hold taker orders for about 300 ms, about half of that median lifetime. A screen refreshed every 15 seconds, ours included, shows where gaps tend to appear, not gaps you can still hit.
How do price spreads combine with funding?
A convergence trade buys on the cheap venue, sells on the rich one and waits for the prices to meet. Meanwhile both legs pay or receive funding, which can matter more than the gap itself. The Spreads tab shows it as Funding Δ: the funding APR of the sell (short) leg minus the buy (long) leg. Positive means the hold earns funding; negative means it costs.
A hypothetical example: $10,000 per leg, a 30 bps gap and 19 bps of round-trip fees leave $11 if the prices meet. If that takes 3 days with Funding Δ at −20% APR, funding costs 10,000 × 20% × 3 / 365 ≈ $16.44 and the trade ends at about −$5.44. At +20% APR the hold earns the same $16.44 instead, ≈ $27.44 in total.
The two often point the same way, because the venue where a perp trades rich usually pays higher funding. If the gap never closes, you are holding a funding pair, a different trade with its own arithmetic: see the funding rate arbitrage guide.
How to read the Spreads tab
The Spreads tab compares the top of the book for the same perp across venues every 15 seconds. Before a row appears, it drops quotes older than 60 seconds, books wider than 2%, idle or frozen books and prices far from their own mark, and it converts USDT prices to USDC. By default it shows crypto perps with gaps of at least 0.10% and $100k of 24-hour volume on the thinner leg.
| What you see | What it means |
|---|---|
| Spread | (bid − ask) / midpoint, before fees. Bold: positive on two consecutive updates of both venues' quotes. |
| Net | Spread minus taker fees on both legs at entry and again at exit, with the exit at zero spread. |
| 24h max | The coin's largest spread over the last 24 hours. |
| Funding Δ | Short-leg funding APR minus long-leg, from the funding screener. |
| "timing gap" flag | The two quotes were read more than 5 seconds apart. |
| Hidden row (shown with "Flagged") | One venue's price is more than 3% from the coin's other venues, or the spread is above 3%: usually a different asset or bad data. |
| "mark" quality | An indicative mark price, not a tradable quote. Lighter and Lighter RH appear only this way, from our funding data; we never poll them. Used only with "Mark prices" on. |
| "Delayed" | No fresh quotes for 45 seconds; after 180 seconds, only indicative spreads between mark prices are shown. |
For a single coin, the "Prices now" section of a coin page such as BTC shows every buy/sell venue pair as a matrix. The full rules are in the methodology.
What are the risks of price arbitrage?
- Legging. The second order fills at a worse price, only in part, or not at all, leaving one unhedged leg.
- Inventory. Collateral must already sit on both venues. Margin is not shared, and moving money takes minutes to hours, far longer than a gap lives.
- An exit worse than zero. Net assumes the prices meet. If the gap widens instead, you either close at a loss or keep holding, with funding running for or against you.
- Size. The top of the book may hold a few hundred dollars; a larger order walks the book and eats the spread.
- Rate limits and outages. Venues throttle API calls and tend to fail during the same fast moves that create gaps.
More on these in funding arbitrage risks. As our methodology puts it, a positive spread is not risk-free arbitrage. Prices, spreads and funding change all the time, and nothing here is investment advice.
FAQ
Is cross-exchange arbitrage still profitable?
For a manual trader, rarely after fees. Visible gaps on big coins are usually smaller than the round-trip taker fees, and real gaps tend to last under a second. Firms with low fees, fast servers and money already on both venues compete for what is left. We do not promise any result.
Why do prices differ between exchanges?
Each venue's perp trades at its own premium to the index, set by its own traders and depth. Quote currency (USDT or USDC), latency and stale or cached data add more, and some gaps are two different assets under one ticker.
What spread do I need to break even?
More than twice the sum of both venues' taker fees, before slippage. With 4.5 bps and 5.0 bps takers that is 19 bps; with a 0 bps venue and a 2.5 bps venue it is 5 bps.
Why is a row hidden or flagged on the Spreads tab?
A row is hidden by default when one venue's price is more than 3% away from the coin's other venues, or the spread is above 3%, which usually means a different asset or bad data. A "timing gap" flag means the two quotes were read more than 5 seconds apart. RFQ, closed-session and mark quotes carry their own badges.
Can I combine a price spread with funding?
Yes. Funding Δ shows whether holding the pair earns or pays funding while you wait for prices to converge. If they never converge, the position becomes a funding pair and should be judged by its funding spread, fees and breakeven.