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).
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.
Also known as: Amihud illiquidity ratio, ILLIQ, price impact ratio.
Amihud Illiquidity in Python
get_amihud_illiquidity is part of the Risk module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_amihud_illiquidity as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AMZN", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.risk.get_amihud_illiquidity(period="quarterly", scale=1e12)
Which returns:
| Date | AAPL | MSFT | Benchmark |
|---|---|---|---|
| 2022Q1 | 0.9388 | 1.4796 | 0.2251 |
| 2022Q2 | 1.4477 | 2.2593 | 0.3401 |
| 2022Q3 | 1.1619 | 1.942 | 0.3349 |
| 2022Q4 | 1.5347 | 2.429 | 0.3445 |
Note that a large scale is used here since these are liquid, large-cap
stocks with very high dollar trading volume relative to their typical daily
price move – the default scale of 1,000,000 (as used in Amihud’s original
1980s/1990s-era paper) would round these to 0.0 at the default precision.
Parameters
get_amihud_illiquidity accepts the following parameters:
- period (str, optional): The data frequency for returns (daily, weekly, monthly, quarterly, or yearly). Defaults to “quarterly” if the Toolkit is initialized with quarterly=True, otherwise “yearly”.
- within_period (bool, optional): Whether to calculate the ratio within the specified period or for the entire period. Defaults to True.
- scale (float, optional): A multiplier applied to the resulting ratio purely for readability. Defaults to 1,000,000.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to 4.
- growth (bool, optional): Whether to calculate the growth of the Amihud Illiquidity values over time. Defaults to False.
- lag (int | list[int], optional): The lag to use for the growth calculation. Defaults to 1.
- standardize (bool, optional): Whether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.