Spread Bps
Quick Reference
| Property | Value |
|---|---|
| Dimension | execution |
| Category | statistics |
| Version | v1.0 |
| Output Column | spread_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
| Column | CDM Table | Description |
|---|---|---|
best_bid_price | cdm_lob_snapshot | Order book snapshot data 鈥?depth levels, bid/ask prices and sizes |
best_ask_price | cdm_lob_snapshot | Order 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_featuresdimension. 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