Research is a work in progress. Estimated release: 1 December 2026. Our goal is to make it a search engine for trading setups in recorded crypto markets.

← All readings
Browse related readings

Research Readings Order book

Normalized spread

Also shown as Spread (normalized)

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.

Interactive illustration · not market data

See where the scale stops

Reading0.2min(1 / 5, 1) = 0.2
BTC uses a 5 bp divisor. Other market classes use different divisors; the ceiling hides further widening.
Live monitoring
Binance Futures only; depends on the full setup
Observed
read at the minute itself
Unit
Ratio
Valid range
0 to 1
How to read it, with examples

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)
Each full bar is the 1.0 ceiling. The reading preserves widening below 5 bp for BTC, but cannot distinguish 5 bp from 8 bp.

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.

More limits

Pooling classes does not compare equal spreads.

Use in Research
Technical details

Registry definition

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.

Engine note

This frozen ratio is not the current live spread-HMM input.

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

Starting point only. Review and edit before running.

{
  "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