Amihud Illiquidity
Calculate the Amihud (2002) Illiquidity ratio, per asset.
The Amihud ratio measures the average price impact of trading – how much the price moves per dollar of trading volume. A high value means that even a small amount of trading moves the price a lot (the asset is illiquid), while a low value means the asset can absorb a large amount of trading with little price impact (the asset is liquid).
The Amihud ratio is mainly a cross-sectional measure: it ranks stocks by how much a given dollar volume moves the price and is used as a liquidity factor in asset pricing. Its level depends on the scale, the frequency and the price level of the market, so compare stocks within the same market and period, and expect the ratio of large caps to be several orders of magnitude below that of small caps.
For more information about the method, see the following paper:
- Amihud, Y. (2002). “Illiquidity and Stock
Returns: Cross-Section and Time-Series Effects.” Journal of Financial Markets, 5(1), 31-56.
The formula is as - follows (with the default scale of 1,000,000):
- Amihud Illiquidity = Mean(|Return_t| / (Close_t * Volume_t)) * 1,000,000
Where the mean runs over the periods of the chosen frequency (within each period with within_period),
and periods without dollar volume are skipped.
Also known as: Amihud illiquidity ratio, ILLIQ, price impact ratio.
Amihud Illiquidity in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_amihud_illiquidity as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["SNAP", "ETSY", "LYFT"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.risk.get_amihud_illiquidity(scale=1e9)
Or, after setting up the Finance Toolkit MCP, ask:
How illiquid were Snap, Etsy, Lyft and the S&P 500 from 2021 to 2025, measured by the Amihud price impact per billion dollars traded?
Which returns:
| Value | |
|---|---|
| SNAP | 0.0634 |
| ETSY | 0.0768 |
| LYFT | 0.1277 |
| Benchmark | 0.0002 |
Parameters
get_amihud_illiquidity accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
period | str | The data frequency for returns (daily, weekly, monthly, quarterly, or yearly). Defaults to “daily”. | "weekly" |
within_period | bool | Whether to calculate the ratio within the specified period or for the entire period. Defaults to False. Note that this requires intraday data when period = ‘daily’, since a single day only nests observations when intraday data was fetched. | True |
scale | float | A multiplier applied to the resulting ratio purely for readability. Defaults to 1,000,000. | 1000000000.0 |
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit (4 unless set otherwise). | 2 |
growth | bool | Whether to calculate the growth of the Amihud Illiquidity values over time. Defaults to False. | True |
lag | int | list[int] | The lag to use for the growth calculation. Defaults to 1. | 4 |
standardize | bool | Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False. | True |