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 deceptively simple 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 distilled the answer into 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 precisely because it is transparent, reproducible, and cheap to compute, exactly 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 nightly as new 10-K and 10-Q filings are processed. The bitemporal design (effective_ts + knowledge_ts) ensures backtests use the Z-Score that was computable from data available at the backtest date, avoiding 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": ...}Put Altman Z-Score to work in your pipeline
Access AI-ready financial data — embeddings, signals, Iceberg tables.