Campbell-Hilscher-Szilagyi Score
Calculate the probability of failure of Campbell, Hilscher and Szilagyi (2008), a logit model that combines accounting figures with market data to predict failure: a bankruptcy filing, a delisting or a D (default) rating. It measures profitability and leverage against the market value of the assets rather than the book value, and adds the excess return of the shares, their volatility, the company’s size, its cash, its market-to-book ratio and its share price. In the paper it predicts failure better than Shumway’s (2001) model and than the Merton distance to default.
The model is the 12-month-ahead logit of Table IV, column (3), of the paper:
- LPFD = -9.164 - 20.264 NIMTAAVG + 1.416 TLMTA - 7.129 EXRETAVG + 1.411 SIGMA
- 0.045 RSIZE - 2.132 CASHMTA + 0.075 MB - 0.058 PRICE
- Failure Probability = 1 / (1 + e^(-LPFD))
with:
\[\text{MTA} = \text{Market Value of Equity} + \text{Total Liabilities} (\text{the market value of total assets})\] \[\text{NIMTA} = \text{Quarterly Net Income} / \text{MTA},\;\; \text{and NIMTAAVG its average over four quarters with weights that halve every}\; \text{quarter:} (1 - \text{φ} ^{3}) / (1 - \text{φ¹} ^{2}) \cdot (\operatorname{NIMTA}(t) + \text{φ} ^{3} \operatorname{NIMTA}(t-1) + \text{φ⁶} \;\text{NIMTA} (t-2) + \text{φ⁹} \;\text{NIMTA} (t-3)),\;\; \text{φ} = 2 ^{- 1 / 3}\] \[\text{EXRET} = \ln(1 + \text{Return}) - \ln(1 + \text{S\&P} 500 \;\text{Return}) \text{per month},\;\; \text{and EXRETAVG its average over twelve}\; \text{months:} (1 - \text{φ}) / (1 - \text{φ¹} ^{2}) \cdot (\operatorname{EXRET}(t) + \text{φ} \;\text{EXRET} (t-1) + ... + \text{φ¹¹} \;\text{EXRET} (t-11))\] \[\text{TLMTA} = \text{Total Liabilities} / \text{MTA}\] \[\text{CASHMTA} = \text{Cash and Short Term Investments} / \text{MTA}\] \[\text{MB} = \text{Market Value of Equity} / \text{Adjusted Book Equity},\;\; \text{where} \;\; \text{Adjusted Book Equity} = \text{Book Equity} + 0.1 \cdot (\text{Market Value of Equity} - \text{Book Equity}) (\text{Cohen},\; \text{Polk and Vuolteenaho},\; 2003),\;\; \text{and a value that is still not positive becomes 1}\] \[\text{SIGMA} = \sqrt{252 / (N - 1) \cdot \text{Σ} r ^{2}},\;\; \text{the annualized volatility around zero of the N daily returns of the three months before},\;\; \text{NaN with fewer than five non-zero returns}\] \[\text{RSIZE} = \ln(\text{Market Value of Equity} / \text{Total Market Value of the}\; \text{S\&P} 500)\] \[\text{PRICE} = \ln(\min(\text{Share Price},\; 15))\]Book Equity is Total Shareholder Equity plus Deferred Tax Liabilities minus Preferred Stock (Davis, Fama and French, 2000), the latter two counted as zero when not reported. The market value of equity is the closing price times the diluted weighted average shares, the returns are total returns (Adj Close) against the S&P 500 total return index (^SP500TR), and every market variable is measured on the day each period’s figures apply from (the fiscal period end, or the filing day with point_in_time): no market data after that day is used.
The probability is that of failing in the month 12 months ahead, given that the company survives until then. It is a monthly probability, not the probability of failing within a year. For comparison, between 0.4% and 3.7% of the companies in the paper’s sample failed per year from 1983 to 2003 (Table I).
Also known as: CHS model, failure probability, distress risk, default probability, LPFD.
Campbell-Hilscher-Szilagyi Score in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_campbell_hilscher_szilagyi_score as shown below.
from financetoolkit import Toolkit
toolkit = Toolkit(
["F", "AAPL"],
api_key="FINANCIAL_MODELING_PREP_KEY",
start_date="2021-01-01",
end_date="2025-12-31",
)
toolkit.models.get_campbell_hilscher_szilagyi_score().loc["F"]
Or, after setting up the Finance Toolkit MCP, ask:
What did the Campbell-Hilscher-Szilagyi model say about Ford's probability of failure from 2021 to 2025, and which inputs drove it?
Which returns:
| 2021 | 2022 | 2023 | 2024 | 2025 | |
|---|---|---|---|---|---|
| Net Income to Market Assets (NIMTAAVG) | 0.0153 | -0.0019 | 0.0039 | 0.0052 | -0.0067 |
| Liabilities to Market Assets (TLMTA) | 0.7133 | 0.82 | 0.8239 | 0.8579 | 0.8291 |
| Excess Return (EXRETAVG) | 0.0573 | -0.0308 | -0.007 | -0.037 | 0.015 |
| Volatility (SIGMA) | 0.4477 | 0.4187 | 0.4069 | 0.3133 | 0.3746 |
| Relative Size (RSIZE) | -6.773 | -6.773 | -6.7827 | -7.2053 | -7.0859 |
| Cash to Market Assets (CASHMTA) | 0.1697 | 0.1699 | 0.1436 | 0.1369 | 0.126 |
| Market to Book (MB) | 1.567 | 1.0379 | 1.1113 | 0.8788 | 1.3456 |
| Log Price (PRICE) | 2.708 | 2.4536 | 2.5006 | 2.2925 | 2.5741 |
| CHS Score | -8.3383 | -7.2758 | -7.5146 | -7.3842 | -7.4308 |
| Failure Probability | 0.0002 | 0.0007 | 0.0005 | 0.0006 | 0.0006 |
Parameters
get_campbell_hilscher_szilagyi_score accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
rounding | int | None | The number of decimals to round the results to. Defaults to None, which uses the Toolkit’s rounding. | 2 |
show_columns | list[str] | None | The periods to show. Defaults to None, all periods. | None, all periods |