Altman Z-Score
Calculates the Altman Z-Score, a financial metric used to predict the likelihood of a company going bankrupt. The Altman Z-Score is calculated using several financial ratios, including working capital to total assets, retained earnings to total assets, earnings before interest and taxes (EBIT) to total assets, equity to book value of total liabilities, and (for manufacturers) sales to total assets. Altman estimated four versions, chosen with model: the original Z-Score for listed manufacturers, the Z’-Score for private manufacturers, the Z’‘-Score for non-manufacturers and the Z’‘-EM score for emerging market companies.
The formula is as follows:
\[\text{Working Capital to Total Assets} (X_{1}) = \text{Working Capital} / \text{Total Assets}\] \[\text{Retained Earnings to Total Assets} (X_{2}) = \text{Retained Earnings} / \text{Total Assets}\] \[\text{EBIT to Total Assets} (X_{3}) = \text{EBIT} / \text{Total Assets}\] \[\text{Market Value to Total Liabilities} (X_{4},\; \text{"original"}) = \text{Market Value of Equity} / \text{Total Liabilities}\] \[\text{Book Value to Total Liabilities} (X_{4},\; \text{the other models}) = \text{Total Shareholder Equity} / \text{Total Liabilities}\] \[\text{Sales to Total Assets} (X_{5},\; \text{"original"} \;\text{and}\; \text{"private"}) = \text{Sales} / \text{Total Assets}\] \[\text{Original (Altman 1968):}\;\; Z = 1.2 X_{1} + 1.4 X_{2} + 3.3 X_{3} + 0.6 X_{4} + 1.0 X_{5}\] \[\text{Private (Altman 1983):}\;\; Z' = 0.717 X_{1} + 0.847 X_{2} + 3.107 X_{3} + 0.420 X_{4} + 0.998 X_{5}\] \[\text{Non-manufacturing (Altman, Hartzell and Peck 1995):}\;\; Z'' = 6.56 X_{1} + 3.26 X_{2} + 6.72 X_{3} + 1.05 X_{4}\] \[\text{Emerging (Altman 2005):}\;\; Z'' - \text{EM} = 3.25 + 6.56 X_{1} + 3.26 X_{2} + 6.72 X_{3} + 1.05 X_{4}\]The Altman Z-Score can be interpreted with the zones of each model (distress below the lower cut-off, grey zone in between, safe above the upper one):
- Original: distress below 1.81, safe above 2.99.
- Private: distress below 1.23, safe above 2.90.
- Non-manufacturing: distress below 1.10, safe above 2.60.
- Emerging: distress below 4.35, safe above 5.85 (the Z’’ zones plus the constant of 3.25, which Altman set so that a score of zero or below matches a bond rated D).
The original Z-Score was estimated on US listed manufacturers, and its thresholds are not meant for banks, insurers or most service companies; the Z’‘-Score drops the sales term, as asset turnover differs most between industries, so that it fits non-manufacturers, and none of the models is meant for banks or insurers. Share buybacks charged to retained earnings and accumulated losses both lower the retained earnings term, so a company that returns most of its earnings scores lower without being closer to distress, which is why the score is best read as a trend and next to the equity term.
Also known as: Altman Z-score, Z’-Score, Z’‘-Score, Z’‘-EM, emerging market score, bankruptcy prediction, financial distress score.
Altman Z-Score in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_altman_z_score as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["MCD", "NFLX", "UBER"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.models.get_altman_z_score(model="non-manufacturing").xs("Altman Z-Score", level=1)
Or, after setting up the Finance Toolkit MCP, ask:
What was the Altman Z-Score of McDonald's, Netflix and Uber from 2021 to 2025, using the model for non-manufacturing companies?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| MCD | 5.0735 | 5.1966 | 5.1302 | 5.3948 | 5.1966 |
| NFLX | 2.379 | 2.8961 | 3.3806 | 4.3943 | 5.2949 |
| UBER | -2.0375 | -3.3028 | -1.6181 | -0.0662 | 1.0641 |
Parameters
get_altman_z_score accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
diluted | bool | Whether to use diluted shares outstanding in the market value of equity of the “original” model. Defaults to True. | False |
model | str | The model to use: “original” (listed manufacturers, market value of equity), “private” (Z’, book value of equity), “non-manufacturing” (Z’’, book value of equity, no sales term) or “emerging” (Z’‘-EM, Z’’ plus 3.25). Defaults to “original”. | "original" |
rounding | int | The number of decimals to round the results to. Defaults to None. | 2 |
growth | bool | Whether to calculate the growth of the values. 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 |
trailing | int | None | The trailing period to use for the calculation. Defaults to None, which is 4 on quarterly data (a trailing twelve months), as the score was estimated on yearly statements. | 4 |
show_columns | list[str] | None | Restrict the result to these columns. Defaults to None, which shows all columns. | ["Working Capital to Total Assets", "Altman Z-Score"] |