Amihud Illiquidity
Quick Reference
| Property | Value |
|---|---|
| Dimension | signal |
| Category | liquidity |
| Version | v0.9.0 (Beta) |
| Output Column | amihud_illiquidity |
Amihud illiquidity: |return| / dollar_volume from bar data
Formula
rolling_mean((abs(diff(close, 1)) / dollar_volume), window)
CDM Inputs
| Column | CDM Table | Description |
|---|---|---|
close | cdm_* | CDM source table |
dollar_volume | cdm_* | CDM source table |
Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
window | integer [1, 200] | 20 | Rolling 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)