Skip to main content

Spread Bps

Quick Reference

PropertyValue
Dimensionexecution
Categorystatistics
Versionv1.0
Output Columnspread_bps

Bid-ask spread in basis points: (ask - bid) / mid_price * 10000

Formula

((best_ask_price - best_bid_price) / ((best_bid_price + best_ask_price) * 0.5)) * 10000.0

CDM Inputs

ColumnCDM TableDescription
best_bid_pricecdm_lob_snapshotOrder book snapshot data 鈥?depth levels, bid/ask prices and sizes
best_ask_pricecdm_lob_snapshotOrder book snapshot data 鈥?depth levels, bid/ask prices and sizes

Parameters

This FeatureType has no configurable parameters.

Output

Column: spread_bps

Quoted spread in basis points

Market Intuition & Trading Rationale

Spread in basis points normalizes the raw quoted spread by mid-price: (ask - bid) / mid_price * 10000. This converts the absolute spread into a proportional cost 鈥?a $0.01 spread on a $10 stock (10 bps) is economically equivalent to a $1 spread on a $1000 stock (also 10 bps). It is the default execution cost FeatureType in all 14 feature sets because it makes execution costs comparable across every symbol and time period.

The normalization has an important side effect: spread_bps amplifies when mid_price falls (the denominator shrinks) and compresses when mid_price rises. During a sell-off, spread_bps can spike even if the raw quoted spread is unchanged 鈥?the same dollar-wide market feels proportionally wider. This makes spread_bps a better stress indicator than raw spread for multi-asset portfolios.

For highly liquid instruments (major FX pairs, large-cap equities), spread_bps typically ranges from 0.1鈥? bps in normal conditions and can widen to 5鈥?0 bps during stress. For less liquid instruments (small caps, exotic FX, low-volume crypto pairs), normal levels may be 10鈥?0 bps with stress levels exceeding 200 bps.

Usage Cases

  • Universal execution cost proxy: Every feature set includes spread_bps as its execution_features dimension. It provides the cost context against which signal profitability is evaluated 鈥?a 2 bps alpha signal is meaningless if spread_bps is 10 bps.
  • Position sizing: Scale position sizes inversely with spread_bps. When spreads are wide, execution costs consume a larger fraction of expected alpha 鈥?reduce exposure. When spreads are tight, the alpha survives transaction costs 鈥?increase exposure.
  • Liquidity regime threshold: Set spread_bps percentile thresholds for regime classification. Above the 90th percentile: stressed, defer execution. Below the 50th percentile: normal, execute freely. Between 50th鈥?0th: elevated, reduce aggression.
  • Venue comparison: Compare spread_bps across exchanges or dark pools for the same symbol. Persistent differences indicate structural liquidity advantages 鈥?route orders to venues with systematically lower spread_bps.

YAML Definition

name: spread_bps
description: 'Bid-ask spread in basis points: (ask - bid) / mid_price * 10000'
category: statistics
dimension: execution
version: v0.9.0 (Beta)
required_inputs:
- best_bid_price
- best_ask_price
output_column: spread_bps
output_description: Quoted spread in basis points
tags:
- execution
- spread
parameters: {}
formula: ((best_ask_price - best_bid_price) / ((best_bid_price + best_ask_price) *
0.5)) * 10000.0