All posts

Crypto arbitrage: why most price gaps vanish after fees

When one exchange's bid is above another's ask, buying on one and selling on the other keeps the gap. Fees take most of them; how to find the ones left.

7 min readSpot

Gaps between exchangesBoth taker feesLeft after feesEach bar: one coin, two exchanges
Coins' gaps between two exchanges, one's bid above another's ask, most of them small. A line for both taker fees rises, and every gap under it fades: only the few wider than both fees are left after them. A drawing, not real prices.

A coin is never quite the same price on two exchanges (why prices differ). Now and then buyers on one exchange bid more than sellers on another ask. Buy from those sellers and sell to those buyers at the same moment, and the difference is yours: that's arbitrage between exchanges. Most of those gaps are smaller than the two trades' fees, and most of the rest are smaller than they look once an order goes past the best prices. Signals does the sums for every coin at once.

What does crossed mean between two exchanges?

On one exchange the best bid, the most a buyer will pay, is always under the best ask, the least a seller will take, or the two would have traded. Across two exchanges nothing makes them meet. When one exchange's best bid is above another's best ask, the two are crossed: buy at the ask on one, sell at the bid on the other, and you hold as many coins as before, so whatever the price does next, the gap stays yours.

Signals counts a gap only on prices it can stand on: under 15 seconds old, from books no wider than 5%, on markets that are trading, and in dollars, with prices in USDT, USDC and USDG converted at Kraken's rates. Jupiter and CoW Protocol quote swaps rather than keep books, so they aren't ranked.

Why do fees take most gaps?

Each trade pays its exchange's taker fee, a share of what it trades: one on the buy, one on the sale. So a gap pays only where it's wider than both fees together. Say the two fees on a $10,000 trade come to $20:

Gap at the best prices, on $10,000 Both fees Left after fees
$5 $20 −$15
$15 $20 −$5
$35 $20 +$15

Example figures, not market data.

A gap narrower than both fees loses money however much goes through it. On Bitcoin, the cheapest exchange and the dearest are usually a few basis points apart, a basis point being 0.01%: on $10,000, a few dollars, rarely enough for both fees (why prices differ). That's why the list on Signals is short, and why Crossed before fees, not after sits under it: the closest to paying, which a lower fee tier, or a little more apart, would put on the list.

The last of those, on coin X, worked through to the cent:

Coin X, if the best prices held it all (example) $10,000
Bought on A at its ask, $100.00, A's fee paid 99.90 coins
Sold on B at its bid, $100.35, B's fee paid $10,014.95
Left after both fees +$14.95, or 0.15%

Example figures, not market data.

Why does the size of your order matter?

The best prices hold only a slice: the coins offered at the lowest ask, and wanted at the highest bid. A bigger order goes past them, buying at higher asks on one exchange and selling at lower bids on the other (what depth means for a big order). Each slice deeper is a narrower gap, until the next one doesn't pay after both fees. Say X's two books go like this:

Coin X, slice by slice (example) A's ask B's bid After both fees
The first 40 coins $100.00 $100.35 +$5.99
The next 80 $100.05 $100.30 +$3.97
The next 100 $100.10 $100.24 −$6.03

Example figures, not market data.

The gap goes as far as the first 120 coins, $12,016 with the fees, and makes $9.96 there; the next slice would lose money. So $10,000 makes $8.96, not the $14.95 the best prices suggested, and $50,000 makes no more than $12,016 does.

That's why Signals walks both order books for the top ten of its list, about once a minute. Goes to is how much can go through before the gap is used up, and what that makes after both fees; At $10K is what your amount makes, or as far as the gap goes if that's less. The list is ranked by it, the most first, not by how wide a gap is: a narrow gap on deep books can make more than a wide one on thin books.

What else does it cost?

  • Money and coins on both exchanges, already. Buying on one and selling on the other at the same moment needs dollars (or the stablecoin the market is priced in) on the first and the coin on the second. Moving either takes time, and a withdrawal fee Signals doesn't count.
  • Moving them back. Each trade leaves more coins on one exchange and more dollars on the other; doing it again means rebalancing, another withdrawal and another wait.
  • A dollar that isn't quite a dollar. Many markets are priced in USDT or USDC, each meant to be worth a dollar and trading close to it, but not exactly (why prices differ). Signals converts them before it compares anything, so a gap isn't just a stablecoin's own price. Sell for USDT on one exchange and buy with dollars on the other, though, and you're left holding a different dollar, which costs something to convert back.

How long do gaps last?

Most open and shut within seconds: traders close them. Open for says how long each has been open after fees, timed from when the page began reading, with a + where it was open already then; on a wide screen, a line beside it draws its last ten minutes. New marks a gap that opened since the page began reading, and Standing one open the whole ten minutes the line covers. A gap that stays open usually has a reason, such as withdrawals that are slow or shut (standing gaps). Tell me when a new one opens asks your browser to tell you when a gap opens after fees while the page is open: not one open already, nor one on a thin market.

How to read the list on Signals

AMOUNT (USD)$100010000$50K$1K$10K$1K$10K1TAKER FEESStandardMy tiersSpot priced apart, after feesCoinBuy at the askSell at the bidAfter feesGoes toOpen forAt $1KAt $10KXNewA$100.00B$100.35+0.15%0.35% less 0.20%$12,016+$9.96 there+$1.50on $1,000+$8.96on $10,0003mYStandingC$2.4810A$2.4890+0.12%0.32% less 0.20%$39,747+$26.48 there+$1.22on $1,000+$12.18on $10,00010m+23CROSSED BEFORE FEES, NOT AFTERZB$0.5120C$0.5127-0.06%0.14% less 0.20%Ranked by what your amount makes down both books afterboth fees, not by the widest gap.
Signals for spot: choose $10K (1), and the list is ranked again by what that amount makes after fees, down both books; read the top row's After fees (2), then how far it Goes to and what it makes At $10K (3). The site's own words; coins X, Y and Z, exchanges A, B and C and their figures are examples. A drawing, not real prices.
  1. Amount (USD) is what you'd spend on the cheaper exchange: $1K, $10K, $50K or your own. Taker fees are each exchange's Standard rate, or My tiers: the tier you've set for each in a coin page's Trade simulator.
  2. Each row is a coin's best pair of exchanges right now: Buy at the ask on the first and Sell at the bid on the second, at the same moment. The coin's name opens its page, where both books are.
  3. After fees is the bid above the ask, as a share of the ask, less both taker fees, at the best prices; under it, the gap before fees and what the fees took.
  4. Goes to and At $10K are the walk down both books, for the top ten: how far the gap goes, and what your amount makes. The list is ranked by what your amount makes, the most first.
  5. Open for times each gap, and New, Standing, Thin or Issuers differ sit beside the coin's name where they apply.
  6. Under the list, On thin markets: marked, not hidden holds the gaps on markets that traded under $100K in a day, listed after the rest and not walked; then Crossed before fees, not after, the closest to paying first.
  7. Work it out opens a row: the gap at the best prices, down the books, at your amount and how long it's been open, then each exchange's best price, taker fee and what it traded in 24 hours.

What it leaves out

  • Moving money between exchanges. Withdrawals and deposits take time and fees, and an exchange can slow or shut them.
  • Prices that move. Prices up to 15 seconds old, and books walked about once a minute: another trader may take the same slice first. Check both books on the exchanges before you trade, for as much as you want.
  • Whether you can use both. Not every exchange serves every country, or every customer.

Where to find it

Signals, from the header on any page or the Signals button on the spot index's status bar; a coin page's Signals button opens the list for that coin alone (Bitcoin's, for one). A link can carry your choices: this one opens it at $50K, at your own tiers. Each coin's page has both books, and the Trade simulator for your own order on each exchange (Bitcoin's); the spot scoreboard ranks the exchanges after fees. On perpetuals, the gap that pays is in funding: funding rate arbitrage.

Not financial advice. Prices move while you read them.

Share this post

Post on XShare on LinkedIn

More from the blog