What liquidity and spreads mean in measurable terms
Liquidity and spreads describe how easy and how expensive it is to trade at (or near) a reference price.
Spread is the difference between the best ask (lowest sell price) and best bid (highest buy price) at a specific moment. To measure spreads, you need time-stamped bid and ask quotes.
Liquidity is broader than “tight spreads.” It reflects how much tradable interest exists without moving prices too much. Because liquidity is not a single observable number in most markets, measurement usually relies on proxies such as depth near the best price or the price change associated with a defined trade size.
Mechanism: measurable fields, time windows, and calculation examples
Measuring spreads (quote-based)
Choose a measurement unit (e.g., one-second or one-minute intervals) and a reference definition (e.g., best bid/ask from the same venue).
For each timestamp t, record:
- BestBid(t) and BestAsk(t)
- Spread(t) = BestAsk(t) − BestBid(t)
- Optionally a normalized form: SpreadPercent(t) = Spread(t) / Mid(t) where Mid(t) = (BestBid(t)+BestAsk(t))/2
Then compute summary statistics over your window:
- Average spread, median spread
- Percentiles (e.g., 90th percentile) to capture tail behavior
Assumption for examples: all quote timestamps refer to the same exchange/venue and represent the best executable prices at that time.
Measuring liquidity (depth or impact proxies)
Two common measurable approaches are:
A) Depth near the best price Record quantities at or near the top of the book, such as:
- BidDepth(t, Δ): total bid size within Δ ticks or within a small price band below the mid
- AskDepth(t, Δ): total ask size within Δ ticks or above the mid
- Imbalance(t) = (BidDepth − AskDepth) / (BidDepth + AskDepth)
Assumption: the order-book data (or equivalent depth feed) is available and comparable across timestamps.
B) Price impact for a defined size If you can estimate how price moves when moving a fixed notional size, you can define a proxy like:
- Impact(t) = ExecutionPrice(t, Size) − Mid(t) (for buys)
Assumption: “ExecutionPrice for Size” is computed consistently (same model, same venue logic) and is based on time-synchronized inputs.
Evidence and comparison: what you can compare independently
To compare measurements meaningfully, use a consistent framework:
- Same measurement window: identical start/end times and sampling frequency.
- Same quote source and venue: best bid/ask and depth should come from the same place.
- Same normalization: use either raw spread or a percent-of-mid version consistently.
- Same liquidity proxy definition: e.g., depth within Δ ticks vs impact for a fixed size.
A practical comparison is to publish time series of Spread(t) and at least one liquidity proxy (depth or impact), then examine how they co-move. This does not prove a causal link, but it provides a check that the chosen proxy behaves sensibly under changing market conditions.
Limitations and risks (material failure modes)
Several limitations affect both spreads and liquidity measurements:
- Quote staleness and timing mismatch: if bid/ask or depth data are delayed or sampled differently, computed spreads can be wrong.
- Venue and execution mismatch: a “measured spread” from one feed may not match what an order actually executes on another venue.
- Liquidity proxy mismatch: tight spreads can coincide with low depth (limited ability to trade size). Depth-based and impact-based proxies may disagree.
- Costs beyond the spread: real execution cost includes slippage, commissions, and any pricing rules in execution engines; spread alone may understate total cost.
- Non-stationarity: historical relationships between liquidity and spread can change; past co-movement does not imply future behavior.
Verification: how to sanity-check your measurement choices
To verify your measurement approach, independently test these points:
- Recompute spreads from stored Bid/Ask and confirm Spread(t) ≥ 0 and percent spread stays consistent with mid.
- Check data completeness: quantify how often best bid/ask or depth is missing at timestamps.
- Run the same calculations on two time windows (e.g., calmer vs volatile periods) to see whether summary statistics change in expected directions, without assuming any guaranteed outcomes.
- Document assumptions: sampling interval, venue, quote definitions, depth band Δ, and impact Size.
If you want, you can also clarify your exact available data (quotes only vs order-book depth vs trade/execution records).