Mid Price
Quick Reference
| Property | Value |
|---|---|
| Dimension | execution |
| Category | statistics |
| Version | v0.9.0 (Beta) |
| Output Column | mid_price |
Mid price: (best_bid_price + best_ask_price) / 2 - instantaneous equilibrium estimate of fair value
Formula
(best_bid_price + best_ask_price) / 2.0
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
best_bid_price | cdm_* | CDM source table |
best_ask_price | cdm_* | CDM source table |
Parameters
This FeatureType has no configurable parameters.
Output
Column: mid_price
Mid price (bid-ask midpoint)
Market Intuition & Trading Rationale
Mid price is the simplest estimate of instantaneous fair value: (best_bid + best_ask) / 2. It sits at the center of the quoted spread and represents the price at which a hypothetical trade would occur if neither side paid a liquidity premium. Every other execution quality FeatureType uses mid_price as its reference anchor — effective spread measures deviation from it, trade sign is inferred relative to it, and micro-price models refine it with order book imbalance.
In a symmetric, balanced book, mid_price is a reasonable fair value estimate. But when the book is imbalanced (e.g., heavy bid depth, thin ask depth), the true equilibrium tilts toward the heavier side — the simple midpoint overestimates fair value when asks dominate and underestimates it when bids dominate. This is why micro_price_deviation exists: it adjusts mid_price using depth-weighted imbalance to produce a more accurate equilibrium estimate.
Mid price is also subject to tick-size discretization. For instruments with wide tick sizes relative to price (e.g., penny tick on a $10 stock), mid_price can only take discrete values (e.g., $10.005, $10.015). This introduces quantization noise that propagates into every derived feature — log returns, z-scores, and spread calculations all inherit this granularity.
Usage Cases
- Reference price for trade classification: Compare trade_price to mid_price via the Lee-Ready algorithm.
trade_signrelies on mid_price as the boundary — trades above mid are buys, trades below are sells, trades at mid are indeterminate. - Fair value anchor for alpha signals: Many mean-reversion signals compute deviation from mid_price (e.g.,
vwap_deviation_signal,zscore_price_deviation). Mid_price provides the instantaneous equilibrium against which dislocations are measured. - Spread decomposition: mid_price splits the quoted spread into its upper and lower halves.
half_spread = ask - mid_price = mid_price - bid. Asymmetric halves indicate directional pressure — a wider upper half signals buying pressure, a wider lower half signals selling pressure. - Micro-price comparison: Compare mid_price to
micro_price_deviation. Persistent divergence means the book is structurally imbalanced — use the micro-price as the fair value estimate instead of mid_price for execution decisions.
YAML Definition
name: mid_price
description: 'Mid price: (best_bid_price + best_ask_price) / 2 - instantaneous equilibrium
estimate of fair value'
category: statistics
version: v0.9.0 (Beta)
dimension: execution
status: Pre-release
required_inputs:
- best_bid_price
- best_ask_price
output_column: mid_price
output_description: Mid price (bid-ask midpoint)
parameters: {}
formula: (best_bid_price + best_ask_price) / 2.0