Ohlson O-Score
Calculates the Ohlson O-Score, a financial metric used to predict the likelihood of a company going bankrupt. Unlike the Altman Z-Score, which is built with multiple discriminant analysis, the O-Score’s coefficients come from a fitted logistic regression (logit) model. This is why the two models are usually reported side by side rather than one being treated as a replacement for the other: the Z-Score is only meaningful compared against Altman’s empirically derived threshold bands, while the O-Score is directly interpretable as a probability of bankruptcy once passed through the logistic transform.
The formula is as follows:
\[\text{SIZE} = \ln(\text{Total Assets})\] \[\text{TLTA} = \text{Total Liabilities} / \text{Total Assets}\] \[\text{WCTA} = \text{Working Capital} / \text{Total Assets}\] \[\text{CLCA} = \text{Current Liabilities} / \text{Current Assets}\] \[\text{OENEG} = 1 \;\text{if Total Liabilities} > \text{Total Assets else}\; 0\] \[\text{NITA} = \text{Net Income} / \text{Total Assets}\] \[\text{FUTL} = \text{Operating Cash Flow} / \text{Total Liabilities}\] \[\text{INTWO} = 1 \;\text{if Net Income was negative for the last two years else}\; 0\] \[\text{CHIN} = (\text{Net Income} (t) - \text{Net Income} (t-1)) / (| \text{Net Income} (t) | + | \text{Net Income} (t-1) |)\] \[\text{O-Score} = - 1.32 - 0.407 \cdot \text{SIZE} + 6.03 \cdot \text{TLTA} - 1.43 \cdot \text{WCTA} + 0.0757 \cdot \text{CLCA}\] \[1.72 \cdot \text{OENEG} - 2.37 \cdot \text{NITA} - 1.83 \cdot \text{FUTL} + 0.285 \cdot \text{INTWO} - 0.521 \cdot \text{CHIN}\] \[\text{Bankruptcy Probability} = 1 / (1 + e ^{- \text{O-Score}})\]The Ohlson O-Score can be interpreted as follows:
- Ohlson’s (1980) original cutoff is a bankruptcy probability of 0.038 (3.8%), the threshold that minimized the sum of Type I and Type II misclassification errors on his sample. It is deliberately far below the naive 0.50 midpoint because bankruptcy is a rare event. Equivalently, in raw O-Score terms the cutoff sits at ln(0.038 / 0.962), i.e. approximately -3.23. Since this implementation omits Ohlson’s price-level deflator, its scores sit about 2.6 below Ohlson’s scale and this cutoff flags far too few companies (see the Notes).
- A higher probability indicates a higher likelihood of bankruptcy.
Also known as: Ohlson O-Score, bankruptcy prediction, financial distress score.
Ohlson O-Score in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_ohlson_o_score as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["CCL", "RCL", "NCLH"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.models.get_ohlson_o_score().xs("Ohlson O-Score", level=1)
Or, after setting up the Finance Toolkit MCP, ask:
What was the Ohlson O-Score of Carnival, Royal Caribbean and Norwegian Cruise Line from 2021 to 2025?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| CCL | -5.7604 | -5.4419 | -6.2136 | -6.8358 | -6.78 |
| NCLH | -4.4192 | -4.1038 | -5.0639 | -5.269 | -4.9984 |
| RCL | -4.9997 | -5.0496 | -6.2194 | -6.3642 | -6.6839 |
Parameters
get_ohlson_o_score accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
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 | List of columns to show in the results. If None, all columns will be shown. Defaults to None. | ["Ohlson O-Score", "Ohlson Bankruptcy Probability"] |