Large Trade Signed Imbalance
Quick Reference
| Property | Value |
|---|---|
| Dimension | signal |
| Category | flow |
| Version | v1.0 |
| Output Column | large_trade_signed_imbalance |
Signed imbalance of large trades (above size percentile) over a window
Formula
rolling_sum(signed_volume, window_seconds) / (rolling_sum(trade_size, window_seconds) + 1e-10)
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
signed_volume | cdm_trade_enriched | Trade data enriched with bar context — price, volume, side, trade type |
trade_size | cdm_trade_enriched | Trade data enriched with bar context — price, volume, side, trade type |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
window_seconds | integer [1, 3600] | 60 | Aggregation window in seconds |
size_percentile | float [50.0, 99.9] | 95.0 | Size threshold percentile (0-100) |
signed_column | string | signed_volume | Column name for signed volume |
size_column | string | trade_size | Column name for trade size |
Output
Column: large_trade_signed_imbalance
Signed flow imbalance from large trades only
Market Intuition & Trading Rationale
Large trade signed imbalance filters for only the largest trades (above the size_percentile threshold) and computes their signed flow imbalance: the sum of their signed volume divided by the sum of their total volume over the window. The result ranges from -1 (all large trades were sells) to +1 (all large trades were buys). By isolating only the largest trades, this feature focuses on institutional activity — the trades most likely to carry information.
The rationale is that not all trades are created equal. Large trades (>95th percentile in size) are disproportionately initiated by institutional investors who have higher information content per trade. Retail trades tend to be small and noisy. By filtering to only the largest trades, large_trade_signed_imbalance extracts the "signal" from the "noise" of the broader flow, providing a cleaner directional read on informed capital flow.
The size_percentile parameter controls the filter threshold. At 95.0 (default), only the largest 5% of trades by size are included. This is appropriate for most equities, where the distribution of trade sizes is highly skewed. At lower percentiles (e.g., 75–90), more trades are included, increasing sample size but potentially reducing signal quality. At higher percentiles (99.0+), only the very largest trades pass through, which can lead to sparse signals in less liquid instruments.
The short default window of 60 seconds reflects the transient nature of institutional order flow. Large institutional orders are typically split into many smaller child orders and executed over minutes to hours. A large trade signed imbalance that is persistently positive over consecutive windows suggests an active institutional buying program. A sudden spike followed by a return to zero may indicate a single large fill in an otherwise balanced flow.
Usage Cases
- Institutional flow tracking: Identify periods of concentrated institutional buying or selling. Large_trade_signed_imbalance > 0.5 sustained over multiple windows suggests an active accumulation program by large investors.
- Smart money detection: Follow the direction of large trades. When large_trade_signed_imbalance disagrees with the overall flow, the large trades (smart money) are often correct — fade the broader market direction.
- Iceberg order detection: Alternating large buys at regular intervals suggests an iceberg buy order being worked incrementally. Pattern recognition on large_trade_signed_imbalance over successive windows can detect hidden liquidity.
YAML Definition
name: large_trade_signed_imbalance
description: Signed imbalance of large trades (above size percentile) over a window
category: flow
version: v0.9.0 (Beta)
dimension: signal
required_inputs:
- cdm_trade_enriched.signed_volume
- cdm_trade_enriched.trade_size
output_column: large_trade_signed_imbalance
output_description: Signed flow imbalance from large trades only
tags:
- flow
- large_trade
- signal
- imbalance
parameters:
window_seconds:
type: integer
description: Aggregation window in seconds
required: false
default: 60
constraints:
min: 1
max: 3600
size_percentile:
type: float
description: Size threshold percentile (0-100)
required: false
default: 95.0
constraints:
min: 50.0
max: 99.9
signed_column:
type: string
description: Column name for signed volume
required: false
default: signed_volume
size_column:
type: string
description: Column name for trade size
required: false
default: trade_size
formula: rolling_sum(signed_volume, window_seconds) / (rolling_sum(trade_size, window_seconds)
+ 1e-10)