Skip to main content

Large Trade Signed Imbalance

Quick Reference

PropertyValue
Dimensionsignal
Categoryflow
Versionv1.0
Output Columnlarge_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

ColumnCDM TableDescription
signed_volumecdm_trade_enrichedTrade data enriched with bar context — price, volume, side, trade type
trade_sizecdm_trade_enrichedTrade data enriched with bar context — price, volume, side, trade type

Parameters

ParameterTypeDefaultDescription
window_secondsinteger [1, 3600]60Aggregation window in seconds
size_percentilefloat [50.0, 99.9]95.0Size threshold percentile (0-100)
signed_columnstringsigned_volumeColumn name for signed volume
size_columnstringtrade_sizeColumn 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)