Limit Order Fill Rate
Quick Reference
| Property | Value |
|---|---|
| Dimension | execution |
| Category | order_flow |
| Version | v1.0 |
| Output Column | fill_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
| Column | CDM Table | Description |
|---|---|---|
limit_orders_placed | cdm_* | CDM source table |
limit_orders_filled | cdm_* | CDM source table |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
window | integer | 60000 | Window 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)