Skip to main content

Limit Order Fill Rate

Quick Reference

PropertyValue
Dimensionexecution
Categoryorder_flow
Versionv1.0
Output Columnfill_rate

Limit order fill rate: fraction of limit orders filled within a time window — measures execution efficiency

Formula

rolling_sum(limit_orders_filled, window) / rolling_sum(limit_orders_placed, window)

CDM Inputs

ColumnCDM TableDescription
limit_orders_placedcdm_*CDM source table
limit_orders_filledcdm_*CDM source table

Parameters

ParameterTypeDefaultDescription
windowinteger60000Window for fill rate estimation

Output

Column: fill_rate

Fraction of limit orders filled (0 to 1)

Market Intuition & Trading Rationale

Limit order fill rate measures passive execution efficiency: rolling_sum(filled) / rolling_sum(placed). It answers the fundamental question for any passive strategy: if I post a limit order, what's the probability it executes? A rate near 1.0 means nearly every limit order fills — the market is aggressive and counterparties readily match passive orders. A rate near 0 means limit orders mostly sit — the market is passive and aggressive flow is scarce.

Fill rate drives the passive-vs-aggressive decision. High fill rates favor passive execution (earn the spread with high probability). Low fill rates favor aggressive execution (the opportunity cost of non-execution exceeds spread savings). The threshold depends on alpha decay: a fast-decaying signal needs immediate execution and can't afford to wait for a limit fill; a slow-decaying signal can afford to post limits and earn the spread.

Fill rate varies with queue position — orders at the touch fill faster than orders deeper in the book. The aggregate fill rate provides a baseline; disaggregating by queue position reveals the fill probability gradient.

Usage Cases

  • Passive vs aggressive gating: fill_rate > 0.7 → use limit orders. fill_rate < 0.3 → use marketable orders. Between 0.3–0.7 → decision depends on alpha urgency.
  • Venue comparison: Higher fill rates = more aggressive counterparties. Route passive strategies to high-fill-rate venues. Route aggressive strategies to low-fill-rate venues (less competition for immediacy).
  • Market regime proxy: Falling fill_rate with stable volume = market becoming more passive → range contraction ahead. Rising fill_rate with stable volume = aggression increasing → potential breakout.

YAML Definition

name: limit_order_fill_rate
description: 'Limit order fill rate: fraction of limit orders filled within a time
window — measures execution efficiency'
category: order_flow
dimension: execution
version: v0.9.0 (Beta)
required_inputs:
- limit_orders_placed
- limit_orders_filled
output_column: fill_rate
output_description: Fraction of limit orders filled (0 to 1)
tags:
- execution
- limit_order
- fill_rate
parameters:
window:
type: integer
description: Window for fill rate estimation
required: false
default: 60000
formula: rolling_sum(limit_orders_filled, window) / rolling_sum(limit_orders_placed,
window)