Hill Estimator
Calculate the Hill Estimator of the tail index of returns, per asset.
Unlike the (finite-sample) Skewness and Kurtosis above, the Hill Estimator is a semi-parametric estimate of how heavy the tail of the return distribution actually is, under the assumption that the tail follows a Pareto-type power law. Smaller values of the tail index indicate a heavier tail (more extreme outliers are likely) – as a rule of thumb, a tail index below 4 implies the Kurtosis is theoretically infinite, and below 2 implies the Variance itself is theoretically infinite.
For more information about the method, see the following paper:
- Hill, B.M. (1975). “A Simple General Approach to Inference About the Tail of a Distribution.” The Annals of Statistics, 3(5), 1163-1174.
Also known as: Hill tail index estimator, Hill’s estimator.
No programming experience? With the Finance Toolkit MCP server, AI assistants such as Claude and ChatGPT can calculate the Hill Estimator for you. Just ask in plain English.
Calculate the Hill Estimator in Python
The Hill Estimator is available in the Risk module of the open-source Finance Toolkit. Install it with:
pip install financetoolkit -U
Then call get_hill_estimator as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(["AMZN", "TSLA"], api_key="FINANCIAL_MODELING_PREP_KEY")
toolkit.risk.get_hill_estimator(period="weekly", within_period=False)
Which returns:
| AAPL | MSFT | Benchmark | |
|---|---|---|---|
| Hill Tail Index | 2.6934 | 5.0478 | 2.1843 |
| Hill Shape (xi) | 0.3713 | 0.1981 | 0.4578 |
| Standard Error | 1.018 | 1.9079 | 0.8256 |
| Observations Used (k) | 7 | 7 | 7 |
Parameters
get_hill_estimator 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 initialised with quarterly=True, otherwise “yearly”.
- within_period (bool, optional): Whether to calculate the estimator within the specified period or for the entire period. Defaults to True.
- k (int | float, optional): The number of upper order statistics to use. If a float in (0, 1) it is interpreted as the fraction of the strictly positive observations to use. Defaults to 0.1 (the top 10%).
- tail (str, optional): Which tail to estimate, one of “left” (the loss tail) or “right” (the gain tail). Defaults to “left”.
- rounding (int | None, optional): The number of decimals to round the results to. Defaults to None.
Related Risk Metrics
The Risk module page introduces the module, and the sidebar lists all of its functions.