What is Altman Z-Score?
A bankruptcy-prediction score that combines five balance-sheet and income ratios into a single number, with zones that flag financial distress risk.
In Plain English
In 1968, NYU finance professor Edward Altman set out to answer a hard question: can you predict whether a company is heading toward bankruptcy just by reading its financial statements? Using discriminant analysis on a sample of manufacturers, he reduced the answer to a single number, the Z-Score, built from five financial ratios.
The intuition is that distressed companies look different from healthy ones across several dimensions at once: they hold less working capital, retain fewer earnings, generate weaker operating returns, carry thinner equity cushions relative to debt, and use their assets less efficiently. No single ratio is decisive, but combined and weighted, they separate survivors from casualties with surprising accuracy.
Altman mapped the score onto three zones. A high Z-Score lands in the safe zone (low bankruptcy risk). A middling score falls in the grey zone (watch closely). A low score sits in the distress zone, historically associated with a high probability of bankruptcy within two years. The thresholds differ slightly for manufacturers, non-manufacturers, and emerging-market firms, but the framework is the same.
Decades later the Z-Score remains a staple of credit analysis because it is transparent, reproducible, and cheap to compute. Those are the properties that make it useful as a systematic signal.
Technical Definition
The original (manufacturing) Z-Score weights five ratios:
- X₁ = Working Capital / Total Assets
- X₂ = Retained Earnings / Total Assets
- X₃ = EBIT / Total Assets
- X₄ = Market Value of Equity / Total Liabilities
- X₅ = Sales / Total Assets
Z = 1.2·X₁ + 1.4·X₂ + 3.3·X₃ + 0.6·X₄ + 1.0·X₅
Zones (manufacturing): Z > 2.99 → safe; 1.81 ≤ Z ≤ 2.99 → grey; Z < 1.81 → distress.
How VectorFin Uses This
The Altman Z-Score is one of the five signal families inside VectorFin's flat signals table (alongside piotroski, beneish_m, sloan_accrual, and regime), served from the REST API at GET /v1/signals/{ticker}. Each record's components.altman_z object carries the score, the distress zone (safe | grey | distress), and the five sub-factors under components.altman_z.components (x1..x5).
Scores are recomputed weekly as new 10-K and 10-Q filings are processed. The bitemporal design (effective_ts + knowledge_ts) means a backtest uses the Z-Score that was computable from data available at the backtest date, with no look-ahead bias from restated financials.
Code Example
import requests
resp = requests.get(
"https://api.vectorfinancials.com/v1/signals/AAPL",
params={"limit": 1},
headers={"X-API-Key": "vf_sk_your_key_here"},
)
record = resp.json()[0]
z = record["components"]["altman_z"]
print(z["score"], z["zone"]) # e.g. 6.12 safe
print(z["components"]) # {"x1": ..., "x2": ..., "x3": ..., "x4": ..., "x5": ...}Related Terms
Put Altman Z-Score to work in your pipeline
Pull AI-ready embeddings and signals as Iceberg tables or over the REST API.
Get API Access