Skip to main content

Amihud Illiquidity

Quick Reference​

PropertyValue
Dimensionsignal
Categoryliquidity
Versionv0.9.0 (Beta)
Output Columnamihud_illiquidity

Amihud illiquidity: |return| / dollar_volume from bar data

Formula​

rolling_mean((abs(diff(close, 1)) / dollar_volume), window)

Market Data Model Inputs​

ColumnMarket Data Model TableDescription
closecdm_*Market Data Model source table
dollar_volumecdm_*Market Data Model source table

Parameters​

ParameterTypeDefaultDescription
windowinteger [1, 200]20Rolling window for averaging

Output​

Column: amihud_illiquidity

Amihud illiquidity measure

Market Intuition & Trading Rationale​

Amihud illiquidity measures price impact per unit of volume: rolling_mean(|return| / dollar_volume, window). It answers: how much does price move per dollar traded? High Amihud means even small dollar volumes move prices — the instrument is illiquid. Low Amihud means large dollar volumes barely move prices — the instrument is liquid. This is the most widely used illiquidity measure in academic finance, validated across equities, bonds, FX, and crypto.

Usage Cases​

  • Liquidity ranking: Rank instruments by Amihud illiquidity. Trade only those with Amihud below a threshold — illiquid instruments have execution costs that erode alpha.
  • Execution cost estimation: Expected price impact ≈ Amihud × order_dollar_size. Use this to estimate execution costs before placing orders and size positions accordingly.
  • Regime change detection: Amihud spiking from its baseline signals deteriorating liquidity — markets are becoming less able to absorb volume without price movement.

YAML Definition​

name: amihud_illiquidity
description: 'Amihud illiquidity: |return| / dollar_volume from bar data'
category: liquidity
version: v0.9.0 (Beta)
dimension: signal
status: Pre-release
required_inputs:
- close
- dollar_volume
output_column: amihud_illiquidity
output_description: Amihud illiquidity measure
parameters:
window:
type: integer
description: Rolling window for averaging
required: false
default: 20
constraints:
min: 1
max: 200
formula: rolling_mean((abs(diff(close, 1)) / dollar_volume), window)