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)

CDM Inputs

ColumnCDM TableDescription
closecdm_*CDM source table
dollar_volumecdm_*CDM 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)