Research Readings normalized spread
Order book
normalized spread
Bid-ask spread in basis points divided by a frozen per-symbol-class divisor (btc 5, eth 10, large cap 25, mid cap 50, small cap 100), then censored at 1.0. Not a rank or percentile: 1.0 means the spread reached or passed its class divisor, and observed values sit far below 0.9. The symbol class is not exposed in this grammar, so one threshold means a different spread on different symbols and pooling across classes is invalid.
- Observed
- read at the minute itself
- Unit
- ratio
- Valid range
- 0 to 1
In plain English
Measures the gap between the best ask and best bid relative to a fixed divisor for the symbol's class. It is a capped ratio, not a historical percentile.
How to read it
Spread in basis points is (ask - bid) / midpoint × 10,000. Divide by 5 for BTC, 10 for ETH, 25 for large caps, 50 for mid caps or 100 for small caps, and cap at 1. For BTC, 0.2 means a 1-basis-point spread; 1 means at least 5 basis points. Lower values mean tighter quotes relative to that divisor. The last valid quote holds; no valid quote means absent.
Constructed example · not historical data
Different spreads can reach the same ceiling
- BTC: 1 bp spread / 5 bp divisor0.2
- BTC: 5 bp spread / 5 bp divisor1.0
- BTC: 8 bp spread / 5 bp divisor1.0 (capped)
Why a researcher might use it
Compare recorded conditions with tighter or wider quoted spreads within a known class. The grammar does not expose class, so scope the markets explicitly.
What it does not prove
It does not measure execution cost for a particular order size, fees or deeper liquidity. Values at 1 hide further widening; pooling classes does not compare equal spreads. This frozen ratio is not the current live spread-HMM input.
Technical details
Field ID
feature.spread_norm
Valid query operators
at least, at most, between
Window operators: lowest, highest, average, latest or change in, over a trailing window.
Editable query preset
This preset is a starting point, not a recommendation. Edit it before running the search.
{
"schema_version": "research_query.v2",
"normalization_version": "archive_normalization.v1",
"feature_version": "feature_defs.v1",
"target": "record_occurrences",
"where": {
"all": [
[
"feature.spread_norm",
"gte",
0.5
],
[
"times.anchor_time",
"gte",
"2025-07-15T00:00:00.000Z"
]
]
},
"sort": [
"times.anchor_time",
"desc"
],
"page": {
"limit": 5,
"cursor": null
}
}The search reports how often the record held this condition and what followed. It does not decide whether an idea works.
Related readings
- Order-book imbalance feature.book_imbalance
- Trailing one-hour realized volatility feature.realized_vol_1h