Quoted spread measures the gap between the best bid and ask. Effective spread measures a signed execution price difference from an initial midpoint, doubled for comparison with that quoted gap. Realized spread replaces the initial midpoint with a declared later midpoint. Together they separate the price paid at execution from subsequent price movement; fees still need their own ledger.
Three measurements, one declared convention
A narrow quote, a costly fill and a negative realized spread can all describe the same market without contradiction. Each measurement answers a different question. Start with the bid-ask spread calculation if the displayed book is unfamiliar; the task here is to connect that quote to a completed trade and a later observation.
For this worksheet, let b be the best bid, a the best ask and m0 their midpoint immediately before the fill. Let p be the fill price and mh the same market's midpoint at a specified later horizon. Prices are in quote currency per unit of the asset. Set trade direction s to +1 for an aggressor buy and −1 for an aggressor sell.
| Measurement | Formula in quote currency per unit | Question answered |
|---|---|---|
| Quoted spread | a − b | What gap did the displayed book show? |
| Effective spread | 2 × s × (p − m0) | How far from the initial midpoint did the aggressor execute? |
| Realized spread | 2 × s × (p − mh) | What remains when the fill is compared with the later midpoint? |
| Signed midpoint movement | 2 × s × (mh − m0) | How much did the reference move in the aggressor's direction? |
Convert each row to basis points by dividing by the same m0 and multiplying by 10,000. Keeping that denominator fixed makes the decomposition exact: effective spread equals realized spread plus signed midpoint movement.
The signed buy and sell convention follows the methodology illustrated in the SEC's study of execution costs. At the corresponding bid or ask, effective spread equals quoted spread. Execution inside the quoted gap can reduce it. A signed measure can become negative; taking an absolute value would erase that information.
The historical SEC execution disclosure release explains realized spread through a later midpoint and the movement faced by liquidity providers. These are useful measurement ideas. This crypto worksheet uses one venue's trade-time book; it is not a reproduction of a U.S. stock execution report, whose benchmark can instead be the quote at order receipt.
Reconstruct the quote that belongs to the trade
Select the venue, instrument and quote currency before joining data. A spot ABC/USDT fill needs its corresponding spot order book. A perpetual mark price, a different exchange's book or an ABC/USD quote is a different reference. Comparing them may be useful for another purpose, but it does not measure this spread.
Preserve the fill identifier, quantity, event time and observed receipt time. Attach the latest valid quote that precedes the fill under the feed's event ordering. An update caused by the fill can already reflect depleted liquidity, so matching to the next convenient quote can change the question.
Trade direction also needs a documented interpretation. Coinbase Exchange's match message, for example, labels the maker's side. A sell maker side means the aggressor bought, so this worksheet assigns +1. Its documentation also says that matches can be dropped and describes heartbeat and REST recovery. Those details belong to Coinbase Exchange's feed; another API's side field may mean something else.
A valid join needs sufficient timestamp resolution and an intact book. Store event times and local receipt times separately, flag ambiguous ties, and rebuild after gaps using the venue's documented procedure. A delayed message does not become an earlier market observation merely because it appears above a fill in a local log.
For an order that fills several times, retain fill-level rows with their own reference quotes and horizons. A single average execution price cannot recover which quote belonged to each fill. Keep a separate order-arrival benchmark when the broader question includes delay before execution.
Two executions with different later outcomes
Consider two independent, hypothetical ABC/USDT executions at different times. They are not a round trip or observations from a real exchange. Each row has a valid synchronized initial quote, one fill and a valid midpoint exactly 30 seconds later. Quantities are ABC; all prices are USDT per ABC.
| Episode | Aggressor | Quantity | Initial bid | Initial ask | Fill price | Midpoint after 30 seconds |
|---|---|---|---|---|---|---|
| A | Buy, +1 | 2 | 99.96 | 100.04 | 100.03 | 100.02 |
| B | Sell, −1 | 1 | 199.96 | 200.04 | 199.96 | 199.90 |
A assumes a fill 0.01 below the initial displayed ask. That is an illustrative price improvement, not a promise about any venue. Its initial midpoint is 100.00. B's initial midpoint is 200.00, and its sell executes at the initial bid.
| Measurement, basis points | Episode A | Episode B |
|---|---|---|
| Quoted spread | 8 | 4 |
| Effective spread | 6 | 4 |
| Realized spread at 30 seconds | 2 | −6 |
| Signed midpoint movement | 4 | 10 |
| Decomposition check | 6 = 2 + 4 | 4 = −6 + 10 |
For A, effective spread is twice 0.03 divided by 100.00, or 6 basis points. Replacing 100.00 with the later 100.02 midpoint in the price difference leaves twice 0.01, or 2 basis points. The midpoint rose by 2 basis points; the table doubles that movement to keep the same full-spread convention.
For B, selling below the initial midpoint has a positive execution cost. The direction multiplier turns 199.96 − 200.00 into a positive difference. The midpoint subsequently falls to 199.90, giving signed midpoint movement of 10 basis points under the doubled convention.
B's realized spread is negative because the opposing liquidity provider bought at 199.96 while the later midpoint is only 199.90. This is a marked comparison before that provider's fees, inventory management or any exit. It is not an account's realized profit, despite the metric's name.
The result also does not establish that B caused the decline or that its seller had information. News, correlated trading or ordinary price variation can contribute. The separate price impact versus slippage guide explains why a measured price difference needs a clearly stated attribution boundary.
Recover the actual cash cost before adding fees
The factor of two makes effective spread comparable with a full bid-ask gap. It does not mean that one execution paid twice its actual difference from the midpoint.
The one-way price cost is quantity multiplied by s × (p − m0). In A, buying two units costs 200.06 USDT before fees, compared with 200.00 at the initial midpoint: a 0.06 USDT difference. In B, selling one unit produces 199.96 rather than 200.00, a 0.04 USDT shortfall.
Assume, solely for this example, a taker fee of 0.04% of actual executed notional, paid in USDT. This is an invented rate, not a current exchange fee quote.
| Cash reconciliation | Episode A | Episode B | Combined |
|---|---|---|---|
| Reference notional, USDT | 200.00 | 200.00 | 400.00 |
| One-way price cost, USDT | 0.06 | 0.04 | 0.10 |
| Assumed execution fee, USDT | 0.080024 | 0.079984 | 0.160008 |
| Price cost plus fee, USDT | 0.140024 | 0.119984 | 0.260008 |
Reference notionals are equal, although quantities differ. Weighting this worksheet by reference notional gives effective spread of 5 basis points, realized spread of −2 and signed midpoint movement of 7. The identity still holds: 5 = −2 + 7.
The actual one-way price cost is half the 5-basis-point effective spread: 2.5 basis points of 400 USDT. Adding the fee gives 6.5002 basis points, or 0.260008 USDT. Adding a full effective spread to the fee would overstate the price cost. Adding subsequent midpoint movement again would double count part of the decomposition.
Record fees in their actual asset and convert them under a declared valuation policy when needed. Rebates can be negative fees. Neither should silently change the definition of the price-only spread.
Choose the horizon before seeing the result
A later midpoint is a measurement choice. If A's midpoint is 100.06 after five minutes, its realized spread becomes −6 basis points instead of +2 at 30 seconds. Its original effective spread and entry cash cost remain unchanged. The horizon changed the later comparison, not the fill.
There is no need to treat 30 seconds as a universal standard. For context, the SEC's 2026 Rule 605 staff FAQ lists multiple realized-spread horizons for its stock-market framework. That does not select the right horizon for a particular crypto execution study.
Predeclare the horizons and observation rule. One usable rule is the first valid quote at or after the target, provided its delay remains within a specified tolerance. Save the actual delay. If no qualifying observation exists, mark the row missing rather than pretending the market stayed flat.
Short and long horizons answer different questions. Very short intervals depend heavily on feed resolution and event ordering; longer intervals admit more unrelated market movement. If the interest is how depth and quotes recover following a disturbance, use a liquidity resilience analysis alongside the spread worksheet.
Turn the definitions into a repeatable audit
Before trusting an aggregate, check several rows manually. A buy above its initial midpoint and a sell below its initial midpoint must both produce positive effective spreads. Reversing maker and taker side will fail that check. Using a later denominator only for realized spread will break the exact decomposition.
Retain quote age, recovery flags and missing marks in the report. Flag crossed books and nonpositive midpoints for investigation under a stated exclusion rule, and retain the excluded counts. Excluding every difficult observation can make execution look unusually favorable. Also separate market states, sizes and instruments: an average across tiny calm-market fills and large volatile-market fills may conceal the cost of the intended order.
For each fill, the reusable worksheet needs venue and instrument, trade ID, aggressor direction, quantity, fill price, initial bid and ask, quote and fill timestamps, later bid and ask, target horizon, actual observation delay, and fees. Compute the three spreads, check the identity, then reconcile quantity times the one-way price difference to cash.
These metrics describe completed executions. Unfilled passive orders still need a decision ledger; otherwise the report cannot explain a whole maker policy. The maker adverse-selection audit covers that missing opportunity set.
Finish an execution review with three separate answers: what the book displayed, what the fill cost against its declared benchmark, and how the midpoint moved afterward. Keep the fee ledger beside them. That separation makes an apparent spread improvement something you can verify rather than infer from a narrow quote.
