Markets III: Commodities, Energy and Crypto · Markets
16Spot Markets
The same bitcoin trades on dozens of venues at dozens of prices. Most of the time the prices differ by a few basis points, the width of the fees; sometimes they do not. From December 2017 to early February 2018, bitcoin bought with won in Seoul cost on average more than 15% more than bitcoin bought with dollars in the United States, and for several days 40% more. Anyone could see the gap, the coins could cross the world in an hour, and the gap stayed open for weeks. This chapter is about how crypto spot prices are formed across fragmented venues, the pairs they are quoted in, the arbitrages that tie them together and what limits those arbitrages, the most important of which is the time and the permission it takes to move money, and finally about how much of the volume that venues report is real.
16.1 Fragmentation and price formation across venues
A crypto asset has no primary market. There is no listing exchange whose auction sets the reference price, no consolidated tape and no rule that routes an order to the best price, as in the equity markets of One Quant Book 1, chapter 9. Each centralised exchange runs its own order book in its own pairs for its own customers, decentralised venues add their pools (Chapter 20), and the price of bitcoin is whatever arbitrageurs make these books agree on.
They agree closely where arbitrage capital moves freely. Makarov and Schoar, studying tick data from 34 exchanges in 19 countries, found that price deviations between exchanges within a country typically did not exceed 1% on average, while deviations across countries were much larger, and that between cryptocurrencies on the same venues they were smaller still: when bitcoin in won cost more than 20% more than bitcoin in dollars, the price of ether in bitcoin differed by about 3% on average between the two countries. Coins moved freely; fiat money did not. The price of a crypto asset is therefore best thought of as one price per currency area, joined by the cost of moving money between them.
Within a currency area, price discovery happens where the informed trade: in the deepest books, and in the perpetual futures of Chapter 17 that trade alongside spot on the same venues. Smaller venues follow, their prices kept in line by traders who quote on them against hedges on the large ones. For a trading firm the practical questions are where the price is made, how quickly others follow, and what it costs to trade on each venue and to move inventory between them.
16.2 Stablecoin quote pairs
Crypto pairs follow the conventions of foreign exchange (One Quant Book 2, chapter 14): in BTC/USDT bitcoin is the base currency and USDT the quote currency, and the price is the number of USDT per bitcoin. Most offshore venues list their deepest books against stablecoins rather than dollars, because a venue without banking relationships can hold stablecoins but not dollar deposits, and because stablecoins move between venues on chains at any hour.
As of September 2026 — Quote currencies on one large venue
On 24 September 2026 Binance’s exchange-information endpoint listed 1 372 spot pairs in trading, of which 495 were quoted in USDT, 264 in USDC, 309 in Turkish lira, 38 in bitcoin and 29 in euros; only a few were quoted in dollars.
A price in USDT is a price in dollars only if USDT is worth a dollar. A trader who compares BTC/USDT on one venue with BTC/USD on another compares two different things, joined by the USDT/USD rate, which is itself quoted and can move: by a few basis points in normal times, by much more in a depeg (Chapter 14). The BTC/USDT price and the BTC/USD price give an implied USDT/USD cross rate, and every arbitrage between the two books is a position in that cross. A firm keeps its books in one currency and marks its stablecoin balances at their market price, not at par.
16.3 Triangular and cross-venue arbitrage
Two arbitrages keep prices in line.
Definition 16.1 (Triangular arbitrage)
Triangular arbitrage is a cycle of three trades on one venue that starts and ends in the same asset through two others, for example USDT into bitcoin, bitcoin into ether and ether back into USDT, executed when the product of the three exchange rates, after fees, exceeds one.
Proposition 16.2 (The no-arbitrage band of a cross rate)
Let a venue quote , and , and charge a taker fee on each trade. The cycle pays if and only if
and the reverse cycle pays if and only if . Neither pays as long as the quoted price lies within a band around the implied cross whose half-width is about plus the spreads.
Proof. Spend one unit of : buying at its ask gives of , buying with it at the ask of gives of , and selling at its bid returns the stated product. The reverse cycle is the same computation in the other direction. Taking logarithms, each condition says that the log of the quoted cross differs from the log of the implied cross by more than plus half-spreads. ∎
At a taker fee of 10 basis points the band is about 30 basis points wide on each side, and a venue’s own market makers keep its cross rates well inside it: triangular opportunities on a single large venue are rare, small and taken by whoever has the lowest fees and the fastest connection. The tutorial counts them in synthetic books: 1 254 cycles that pay before fees in 500 snapshots of three venues, 26 at a taker fee of 10 basis points.
Definition 16.3 (Cross-venue arbitrage, prepositioned inventory)
Cross-venue arbitrage is buying an asset on one venue and selling it on another where it is dearer. Prepositioned inventory is the stock of the asset and of the quote currency that an arbitrageur keeps on each venue so that both legs can be executed at once, the inventory being moved back between venues later, when it is cheapest to do so.
With inventory on both venues the arbitrageur sells on the dear venue from its stock there and buys on the cheap one with its cash there, at the same moment; the trade is locked in at the observed prices. The costs are two taker fees, the eventual cost of rebalancing (a withdrawal fee, a network fee and the time the inventory spends in transit), and the capital tied up: inventory sitting on venues is exposed to their failure (Chapter 15). Without inventory the arbitrageur must buy, transfer, and then sell, and the price can move while the coins are in flight.
16.4 Transfer latency as risk
Definition 16.4 (Transfer latency)
Transfer latency is the time between the decision to move an asset from one venue to another and the moment it can be traded at the destination: the source venue’s withdrawal processing, the chain’s inclusion and the confirmations the destination requires, and the destination’s crediting.
The chain’s part is set by its block times and finality (Chapter 14); the venues’ parts, which are often longer, by their own processes, reviews and hot-wallet balances. For an arbitrageur without inventory at the destination, transfer latency turns a locked gap into a bet.
Proposition 16.5 (The probability that a transfer arbitrage loses)
Buy at a price where the other venue’s price is higher by a gap of (as a fraction of ), with costs , and sell after a transfer of duration (in years) during which the log price moves by a normal amount with volatility and no drift. To first order the trade loses with probability
where is the standard normal distribution function.
Proof. The net return is with to first order in the small quantities; it is negative when . ∎
Figure 16.2 is why gaps of tens of basis points survive between venues that are slow to credit deposits: at 60% annual volatility the standard deviation of the price over an hour is about 64 basis points, larger than the gap. The professional answer is prepositioned inventory on every venue that matters, a rebalancing process that moves it when fees and congestion are low, and a hedge of the inventory itself on a futures venue. The build of this chapter scans for both kinds of opportunity, charging a trade with transfer the price risk of its latency and a trade from inventory the cost of rebalancing.
16.5 The kimchi premium
Definition 16.6 (Kimchi premium)
The kimchi premium is the excess of the won price of a crypto asset on South Korean exchanges over its price elsewhere converted into won at the market exchange rate.
Makarov and Schoar found that for large parts of 2017 and early 2018 bitcoin on Korean exchanges traded more than 20% above the United States, the highest price anywhere; that the daily average price ratio between Korea and the United States from December 2017 to the beginning of February 2018 was more than 15% and reached 40% for several days; and that the premia opened up in times of large bitcoin appreciation. They estimated the arbitrage profits available between Korea and the United States over four months at USD 1.275 billion.
The premium lasted because the arbitrage has a fiat leg. The coins can be bought abroad, sent to Korea and sold for won in an hour; the won must then be converted into dollars and sent back abroad to close the round trip and start again. That leg was limited: Korean exchanges served residents with local bank accounts, and residents moving large sums abroad had to justify them. The same authors note that Korean and Japanese exchanges did not allow short selling, which removed the other way to trade against the premium, selling first and delivering later.
As of September 2026 — Korean outward-remittance documentation
Makarov and Schoar (2020) describe that in Korea local residents and companies moving more than USD 50 000 out of the country in a single year must submit documents to the authorities proving the reasons for the transfers, which may not always be approved, and that exchanges operating in several countries let citizens of one country open accounts only in their local currency. From 30 January 2018 Korea’s Financial Services Commission allowed crypto trading only through real-name bank accounts at the exchange’s own bank, closed new accounts to foreigners and minors, and had banks treat deposits or withdrawals above KRW 10 million a day as suspicious. Rules and thresholds change; a firm checks the current ones with counsel before trading.
A capital control does not forbid the arbitrage; it prices it. The weekend problem computes the premium below which the round trip loses money, given fees, the price risk of the transfer and the cost of getting the won out.
16.6 Wash trading and measuring real liquidity
Volume is how venues are ranked, and a venue’s rank brings listings and customers. Many venues have printed volume that did not happen.
Definition 16.7 (Wash trading)
Wash trading is trading in which the same beneficial owner, or parties acting in concert, are on both sides, so that no risk changes hands; it inflates reported volume and can mislead others about a market’s activity and price.
In March 2019 the asset manager Bitwise presented to the staff of the SEC an analysis arguing that about 95% of the roughly USD 6 billion of daily bitcoin volume reported by data aggregators was fake or non-economic wash trading, and that the real market was concentrated on ten exchanges whose prices moved tightly together. Cong, Li, Tang and Yang later applied three statistical tests to 29 exchanges. Trades on regulated exchanges showed the patterns of trading everywhere: first significant digits of trade sizes following Benford’s law, clustering of sizes at round numbers, and fat-tailed size distributions. Unregulated exchanges often failed them, and the authors estimated that wash trades averaged over 70% of the reported volume of the unregulated exchanges.
The two tests the tutorial implements are simple. Benford’s law says that in many naturally occurring data the first significant digit is with probability : a 1 about 30% of the time, a 9 under 5%. Machine-generated sizes drawn uniformly from a range do not follow it. And people trade round sizes, 0.01 or 0.1 bitcoin, far more often than 0.0137; a bot printing volume does not bother. Cong and co-authors used the regulated exchanges’ ratio of unrounded to rounded trades as a benchmark: rounded trades on another exchange, scaled by that ratio, estimate its authentic trades, and the excess of unrounded trades is wash.
Reported volume is therefore a poor measure of where to trade. What matters to a firm that must execute is what it can trade without moving the price.
Definition 16.8 (Quoted depth)
Quoted depth is the quantity resting in an order book within a stated distance of the mid price, for example within 10 basis points on each side, summed over price levels and expressed in the quote currency.
Depth can be faked too, by orders that are cancelled before anyone reaches them, so a firm measures it over time, checks it against its own fills, and compares venues by what it costs to execute its own sizes: the realised slippage of its trades, the share of its orders filled at the quoted price, and how quickly the book refills after a trade. These measurements, not reported volume, decide where the firm sends its orders and where it keeps inventory.
16.7 Tutorial: arbitrage scans and wash-trading tests
Goal. Scan synthetic books on three venues for triangular and cross-venue opportunities after fees, price the risk of transfer latency, and apply two wash-trading tests to synthetic tapes. End state: Figures 16.2, 16.3 and 16.4 and the counts in the text.
The triangle. Both directions of a cycle, with the executable size at the top of the books.
def triangular(book: dict[str, Quote], a: str, b: str, q: str, fee: float) -> list[Opportunity]: """Both directions of the cycle q -> a -> b -> q with pairs a/q, b/q and b/a, taker fee `fee`.""" aq, bq, ba = book[f"{a}/{q}"], book[f"{b}/{q}"], book[f"{b}/{a}"] k = (1 - fee) ** 3 out = [] # q -> a (buy a/q at ask), a -> b (buy b/a at ask), b -> q (sell b/q at bid) m1 = k * bq.bid / (aq.ask * ba.ask) s1 = min(aq.ask_size * aq.ask, ba.ask_size * ba.ask * aq.ask, bq.bid_size * ba.ask * aq.ask) out.append(Opportunity("triangular", f"{q}>{a}>{b}>{q}", 1e4 * (m1 - 1), s1, s1 * (m1 - 1))) # q -> b (buy b/q at ask), b -> a (sell b/a at bid), a -> q (sell a/q at bid) m2 = k * ba.bid * aq.bid / bq.ask s2 = min(bq.ask_size * bq.ask, ba.bid_size * bq.ask, aq.bid_size * bq.ask / ba.bid) out.append(Opportunity("triangular", f"{q}>{b}>{a}>{q}", 1e4 * (m2 - 1), s2, s2 * (m2 - 1))) return outListing 16.1. Both directions of a triangular cycle on one venue. code/firm/triarb/firm_triarb.py - The scan.
count_opportunities(fee)runs the scanner on 500 snapshots at taker fees of 0, 2, 5 and 10 basis points. The tests. First digits against Benford’s law, clustering at multiples of 0.01 bitcoin, and the rounding-based estimate of the wash share.
def clustering_ratio(sizes: list[int], step: int = 100, radius: int = 50) -> float: """Mean count at multiples of `step` over the mean count at the other sizes within `radius` of them.""" count: dict[int, int] = {} for s in sizes: count[s] = count.get(s, 0) + 1 centres = range(step, max(sizes) // step * step + 1, step) at = [count.get(c, 0) for c in centres] near = [count.get(c + d, 0) for c in centres for d in range(-radius, radius + 1) if d] return (sum(at) / len(at)) / (sum(near) / len(near)) def wash_share_estimate(sizes: list[int], benchmark: list[int], step: int = 100) -> float: """Rounding-based estimate: authentic trades = round trades x (1 + benchmark unrounded-to-round ratio); the excess of unrounded trades is wash. Trades below one step are left out.""" def split(x): big = [s for s in x if s >= step] r = sum(s % step == 0 for s in big) return r, len(big) - r r0, u0 = split(benchmark) r, u = split(sizes) return max(0.0, 1 - r * (1 + u0 / r0) / (r + u))Listing 16.2. The clustering ratio and the rounding-based estimate of the share of wash trades. code/markets-3/16-spot-markets/python/m3_spot.py - Run
fig_spot.pyfor the chart data.
What to change next. Let the wash trader round its sizes and see which test still catches it; add a fat-tail test on the largest trades; make the synthetic venues’ prices follow one leader with a lag and measure which venue leads.
16.8 Build: the arbitrage scanner
Purpose. Find, across the venues the miniature firm is connected to, the triangular cycles and cross-venue trades that pay after every cost, and rank them by expected profit; feed the execution layer and the inventory planner.
Interface. Quote(bid, ask, bid_size, ask_size); triangular(book, a, b, q, fee) returns both directions; cross(buy, sell, fee_buy, fee_sell, route, rebalance_bp, transfer_minutes, vol_annual, z); scan(books, fees, cycles, rebalance_bp, min_edge_bp) returns opportunities, largest profit first.
Rules. Taker fees per venue (from each venue’s tier); sizes limited by the top of every book on the route; trades from inventory charged the rebalancing cost, trades with transfer charged standard deviations of the move over the transfer time (from firm.gasfee’s confirmation times plus the venues’ processing).
Acceptance tests. code/firm/triarb/tests/: both triangular directions against hand computation; a fee that removes an opportunity; the transfer-risk charge; ordering and filtering of the scan.
Stretch. Depth beyond the top of the book; stablecoin cross rates marked at market rather than par; inventory limits per venue and asset; the scanner run on live books with its hit rate measured against fills.
Sources and further reading
- I. Makarov and A. Schoar, “Trading and arbitrage in cryptocurrency markets”, Journal of Financial Economics 135(2), 2020, 293–319 (accepted version, LSE Research Online).
- L. W. Cong, X. Li, K. Tang and Y. Yang, “Crypto Wash Trading”, NBER Working Paper 30783, 2022; published in Management Science, 2023.
- SEC, memorandum of a meeting with Bitwise Asset Management, NYSE Arca and Vedder Price, File No. SR-NYSEArca-2019-01, 20 March 2019, with the Bitwise presentation.
- Binance, exchange-information endpoint of the spot API, 24 September 2026.
- Financial Services Commission (Korea), press release on real-name cryptocurrency trading, 23 January 2018.
16.9 Exercises
Exercise 16.1 ★
BTC/USDT is 60 000 and ETH/USDT 3 000. What is the implied ETH/BTC cross rate? At a taker fee of 10 basis points, roughly how far can the quoted ETH/BTC price be from it before a triangle pays?
Solution
Solution of Exercise 16.1.
. Three fees of 10 basis points make a band of basis points on each side, plus the spreads: roughly 0.04985 to 0.05015 before spreads.
Exercise 16.2 ★
BTC/USDT is 60 030 on one venue and BTC/USD 60 000 on another. What USDT/USD rate makes the two prices consistent?
Solution
Solution of Exercise 16.2.
: USDT at about 99.95 cents makes the prices consistent.
Exercise 16.3 ★
Why can a bitcoin price gap between two countries be much larger than the gap in the ether–bitcoin price between the same countries?
Solution
Solution of Exercise 16.3.
Crypto moves freely between venues, so the ether–bitcoin price is kept in line by transfers of coins alone; the bitcoin price in won against dollars needs the fiat leg, which capital controls and account rules restrict.
Exercise 16.4 ★★
A gap of 100 basis points, costs of 20, volatility 60% a year. What is the probability of loss if the transfer takes 30 minutes? 60 minutes?
Solution
Solution of Exercise 16.4.
at 30 minutes and 10.6% at 60 minutes.
Exercise 16.5 ★★
On a benchmark exchange 40% of trades of at least 0.01 bitcoin are at multiples of 0.01. On another, 12% are. Estimate its share of wash trades among such trades.
Solution
Solution of Exercise 16.5.
The benchmark has 1.5 unrounded trades per rounded one. The exchange’s authentic trades are about of its trades, so wash trades are about 70%.
Exercise 16.6 ★★
Explain why prepositioned inventory removes transfer risk from an arbitrage but not all of its risks.
Solution
Solution of Exercise 16.6.
Both legs execute at once, so the gap is locked. The inventory itself remains: its price risk (hedged, usually, on a futures venue), the failure of the venues holding it, the cost and delay of rebalancing when flows are one-way, and the capital it ties up.
Exercise 16.7 ★★★
Coding. With count_opportunities, find how many triangular and cross-venue opportunities pay in 500 snapshots at taker fees of 0, 2, 5 and 10 basis points. Why do cross-venue opportunities outnumber triangles?
Solution
Solution of Exercise 16.7.
(Triangular, cross) = (1 254, 2 953), (794, 1 902), (309, 793) and (26, 120). Each snapshot offers 6 triangles (two directions on three venues) but 18 cross-venue routes (three pairs, six ordered venue pairs), and a cross trade pays two fees against a triangle’s three.
Exercise 16.8 ★★★
Find the flaw. “This exchange reports twice the volume of that one, so our orders will cost less there.”
Solution
Solution of Exercise 16.8.
Reported volume may be largely wash trading, and even real volume says little about the cost of an order: compare quoted depth near the mid, measured over time, and the realised slippage of the firm’s own trades.
16.10 Problem: The Kimchi Premium
Problem 16.1
Weekend problem — pricing a capital control
A resident of Korea with accounts abroad considers the round trip: buy bitcoin with dollars abroad (taker fee 0.10%), withdraw it (0.05% of value), transfer it in an hour, sell it for won in Korea (taker fee 0.05%), convert the won to dollars (spread 0.5%) and remit them abroad through a channel that costs 2% all-in. Volatility is 70% a year; the trader charges the transfer 1.65 standard deviations of the price move. All costs are illustrative.
Part I — The costs.
- What does a dollar of bitcoin cost, delivered to the withdrawal, abroad?
- What is the price-risk charge for the transfer?
- What fraction of the won proceeds comes back as dollars abroad?
- What premium makes the round trip break even?
- At the 15% average premium of December 2017 to early February 2018, what is the expected profit per dollar, without the risk charge?
Part II — The constraint.
- What would the break-even premium be if the won could be remitted at no cost beyond the spread?
- And if the transfer took ten minutes instead of an hour?
- On USD 50 000, what is the expected profit of one round trip at 15%?
- Why can a foreign firm not simply sell bitcoin on a Korean exchange?
- Why could no one sell short in Korea against the premium?
Part III — The evidence.
- What happened to the premium when bitcoin rose fast, and why?
- Why was the ether–bitcoin gap between Korea and the United States only about 3%?
- What do the estimated USD 1.275 billion of arbitrage profits between Korea and the United States tell us?
- Would prepositioned inventory in Korea remove the constraint?
- Would moving the value out as a stablecoin instead of won escape the constraint?
Part IV — Judgement.
- Is the kimchi premium an inefficiency?
- Who earned it, and what did they risk?
- What does the premium tell a firm about where prices are made?
- State the named result: the break-even premium of the round trip with and without the remittance cost.
- In one sentence: what limits arbitrage between crypto venues?
Solution
Solution of Problem 16.1.
1. : 1.0015 dollars, 0.15% of costs. 2. . 3. . 4. . 5. per round trip. 6. 1.95%. 7. 3.28%. 8. About USD 5 956. 9. Korean exchanges served residents with local bank accounts; a foreign firm could not open an account or take won out. 10. Korean exchanges did not allow short selling, so the premium could be traded only by bringing coins in. 11. It widened: local demand rose faster than arbitrage capital could flow in through the fiat leg. 12. Both legs were crypto, which moved freely. 13. That the constraint was binding for months at a scale no fee could explain: the limit was permission to move money, not information. 14. Only once: selling inventory in Korea delivers won, which must still leave to buy coins abroad again; the binding constraint is the fiat leg. 15. Only if stablecoins bought with won could be sold abroad without the same premium; a premium on buying stablecoins with won is the same constraint in another form. 16. It is the price of a legal restriction, not a failure to notice a gap; it is an inefficiency only relative to a world without the restriction. 17. Residents with capacity under the rules and access to accounts abroad, who risked price moves in transfer, the legal limits, and the exchanges holding their funds. 18. That prices are made within currency areas, and that the gaps between them measure the cost of moving money, not the quality of the price. 19. Named result: 4.03% with the 2% remittance cost, 1.95% without it. 20. The time and the permission it takes to move assets, and above all money, between them.
16.11 Interview questions
Interview question 16.1 ★ trader
What is triangular arbitrage, and why is it rare on a large venue?
Solution
Solution of Interview question 16.1.
A cycle through three pairs on one venue that returns more of the starting asset than it spent. It must beat three taker fees and the spreads, and the venue’s market makers keep cross rates inside that band, so what remains is small and taken by the lowest-fee, fastest participants.
What the interviewer is looking for: the fee band and competition.
Interview question 16.2 ★ trader, risk
Why is a BTC/USDT price not a dollar price, and what does that mean for your books?
Solution
Solution of Interview question 16.2.
It is a price in USDT, whose dollar value is itself a traded rate that can move, a little normally and a lot in a depeg. Stablecoin balances are marked at market, and a dollar–USDT arbitrage is a position in USDT.
What the interviewer is looking for: the implied cross and marking at market.
Interview question 16.3 ★★ researcher
How would you test whether an exchange’s reported volume is real?
Solution
Solution of Interview question 16.3.
Compare its trade data with regulated venues’: first digits of sizes against Benford’s law, clustering at round sizes, the tail of the size distribution; compare volume with quoted depth, price co-movement with the main venues, and web traffic or on-chain flows; estimate the wash share from rounding against a benchmark.
What the interviewer is looking for: statistical tests plus cross-checks with independent data.
Interview question 16.4 ★★ trader
Two venues differ by 50 basis points for an hour. Why might nobody be arbitraging it?
Solution
Solution of Interview question 16.4.
The cost of closing it may exceed it: fees, slow crediting of deposits or withdrawals, the price risk of the transfer, limits on moving fiat, account access, or doubts about the dear venue’s solvency (a gap can be a credit spread).
What the interviewer is looking for: latency, access and counterparty risk.
Interview question 16.5 ★★ risk
What risks does an arbitrage desk’s prepositioned inventory carry, and how would you limit them?
Solution
Solution of Interview question 16.5.
Price risk of the coins (hedge with futures), venue default (limits per venue, sweeping excess), stablecoin depeg (diversify and mark at market), operational risk in transfers (address allow-lists, reconciliation), and rebalancing cost when flows are one-way (limits on imbalance, a rebalancing budget).
What the interviewer is looking for: market, credit and operational risk each with a limit.
Interview question 16.6 ★★★ developer, researcher
Design a system that decides where to keep inventory across ten venues for a cross-venue arbitrage strategy.
Solution
Solution of Interview question 16.6.
Estimate, per venue and asset, the flow of opportunities and their one-way drift from history; the cost and time of moving inventory between each pair; each venue’s credit limit. Solve periodically for target inventories that maximise expected captured edge minus rebalancing and capital costs within the limits (a transport or small linear program); rebalance when deviations exceed thresholds, preferring cheap chains and quiet hours; monitor fill rates and refit.
What the interviewer is looking for: forecast flows, costs, limits, and an optimiser with thresholds.