Calculate Altman Z-Score to predict bankruptcy risk within two years. Free financial calculator for credit risk assessment using five key ratios. Get instant results.
The Altman Z-Score helps assess a company's credit risk. A higher score indicates lower risk of bankruptcy within two years.
The Altman Z-Score is a powerful financial formula that predicts the likelihood of a company going bankrupt within two years. Developed by Professor Edward I. Altman in 1968, this bankruptcy prediction model combines five key financial ratios to assess corporate financial health and credit risk. Investors, creditors, and financial analysts use the Altman Z-Score calculator to evaluate whether a company is in the safe zone, grey zone, or distress zone for potential insolvency.
The Altman Z-Score formula combines five weighted financial ratios to calculate bankruptcy risk:
Where:
Calculate Financial Ratios:
Apply Weights to Each Ratio:
Sum the Weighted Ratios:
Suppose a company has the following financial data (in USD millions):
Calculating the Ratios:
Calculating the Z-Score:
The Altman Z-Score interpretation follows three risk zones:
Result: A Z-Score of 2.34 places the company in the Grey Zone, indicating potential financial instability and elevated credit risk.
When to Use Alternatives:
Edward Altman introduced the Z-Score model in 1968 amidst increasing corporate bankruptcies. Utilizing multiple discriminant analysis (MDA), Altman analyzed 66 companies to identify key financial ratios predictive of bankruptcy. The model has since been refined and remains a foundational tool in credit risk assessment.
1' Excel VBA Function for Altman Z-Score Calculation
2Function AltmanZScore(wc As Double, re As Double, ebit As Double, mve As Double, tl As Double, sales As Double, ta As Double) As Double
3 Dim X1 As Double, X2 As Double, X3 As Double, X4 As Double, X5 As Double
4
5 X1 = wc / ta
6 X2 = re / ta
7 X3 = ebit / ta
8 X4 = mve / tl
9 X5 = sales / ta
10
11 AltmanZScore = 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5
12End Function
13
14' Usage in a cell:
15' =AltmanZScore(A1, B1, C1, D1, E1, F1, G1)
16' Where A1 to G1 contain the respective input values
17
1## Altman Z-Score Calculation in Python
2def calculate_z_score(wc, re, ebit, mve, tl, sales, ta):
3 X1 = wc / ta
4 X2 = re / ta
5 X3 = ebit / ta
6 X4 = mve / tl
7 X5 = sales / ta
8 z_score = 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5
9 return z_score
10
11## Example usage:
12wc = 50
13re = 200
14ebit = 100
15mve = 500
16tl = 400
17sales = 600
18ta = 800
19
20z = calculate_z_score(wc, re, ebit, mve, tl, sales, ta)
21print(f"Altman Z-Score: {z:.2f}")
22
1// JavaScript Altman Z-Score Calculation
2function calculateZScore(wc, re, ebit, mve, tl, sales, ta) {
3 const X1 = wc / ta;
4 const X2 = re / ta;
5 const X3 = ebit / ta;
6 const X4 = mve / tl;
7 const X5 = sales / ta;
8 const zScore = 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5;
9 return zScore;
10}
11
12// Example usage:
13const zScore = calculateZScore(50, 200, 100, 500, 400, 600, 800);
14console.log(`Altman Z-Score: ${zScore.toFixed(2)}`);
15
1// Java Altman Z-Score Calculation
2public class AltmanZScore {
3 public static double calculateZScore(double wc, double re, double ebit, double mve, double tl, double sales, double ta) {
4 double X1 = wc / ta;
5 double X2 = re / ta;
6 double X3 = ebit / ta;
7 double X4 = mve / tl;
8 double X5 = sales / ta;
9 return 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5;
10 }
11
12 public static void main(String[] args) {
13 double zScore = calculateZScore(50, 200, 100, 500, 400, 600, 800);
14 System.out.printf("Altman Z-Score: %.2f%n", zScore);
15 }
16}
17
1## R Altman Z-Score Calculation
2calculate_z_score <- function(wc, re, ebit, mve, tl, sales, ta) {
3 X1 <- wc / ta
4 X2 <- re / ta
5 X3 <- ebit / ta
6 X4 <- mve / tl
7 X5 <- sales / ta
8 z_score <- 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5
9 return(z_score)
10}
11
12## Example usage:
13z_score <- calculate_z_score(50, 200, 100, 500, 400, 600, 800)
14cat("Altman Z-Score:", round(z_score, 2))
15
1% MATLAB Altman Z-Score Calculation
2function z_score = calculate_z_score(wc, re, ebit, mve, tl, sales, ta)
3 X1 = wc / ta;
4 X2 = re / ta;
5 X3 = ebit / ta;
6 X4 = mve / tl;
7 X5 = sales / ta;
8 z_score = 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5;
9end
10
11% Example usage:
12z_score = calculate_z_score(50, 200, 100, 500, 400, 600, 800);
13fprintf('Altman Z-Score: %.2f\n', z_score);
14
1// C++ Altman Z-Score Calculation
2#include <iostream>
3
4double calculateZScore(double wc, double re, double ebit, double mve, double tl, double sales, double ta) {
5 double X1 = wc / ta;
6 double X2 = re / ta;
7 double X3 = ebit / ta;
8 double X4 = mve / tl;
9 double X5 = sales / ta;
10 return 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5;
11}
12
13int main() {
14 double zScore = calculateZScore(50, 200, 100, 500, 400, 600, 800);
15 std::cout << "Altman Z-Score: " << zScore << std::endl;
16 return 0;
17}
18
1// C# Altman Z-Score Calculation
2using System;
3
4class Program
5{
6 static double CalculateZScore(double wc, double re, double ebit, double mve, double tl, double sales, double ta)
7 {
8 double X1 = wc / ta;
9 double X2 = re / ta;
10 double X3 = ebit / ta;
11 double X4 = mve / tl;
12 double X5 = sales / ta;
13 return 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5;
14 }
15
16 static void Main()
17 {
18 double zScore = CalculateZScore(50, 200, 100, 500, 400, 600, 800);
19 Console.WriteLine($"Altman Z-Score: {zScore:F2}");
20 }
21}
22
1// Go Altman Z-Score Calculation
2package main
3
4import (
5 "fmt"
6)
7
8func calculateZScore(wc, re, ebit, mve, tl, sales, ta float64) float64 {
9 X1 := wc / ta
10 X2 := re / ta
11 X3 := ebit / ta
12 X4 := mve / tl
13 X5 := sales / ta
14 return 1.2*X1 + 1.4*X2 + 3.3*X3 + 0.6*X4 + X5
15}
16
17func main() {
18 zScore := calculateZScore(50, 200, 100, 500, 400, 600, 800)
19 fmt.Printf("Altman Z-Score: %.2f\n", zScore)
20}
21
1// Swift Altman Z-Score Calculation
2func calculateZScore(wc: Double, re: Double, ebit: Double, mve: Double, tl: Double, sales: Double, ta: Double) -> Double {
3 let X1 = wc / ta
4 let X2 = re / ta
5 let X3 = ebit / ta
6 let X4 = mve / tl
7 let X5 = sales / ta
8 return 1.2 * X1 + 1.4 * X2 + 3.3 * X3 + 0.6 * X4 + X5
9}
10
11// Example usage:
12let zScore = calculateZScore(wc: 50, re: 200, ebit: 100, mve: 500, tl: 400, sales: 600, ta: 800)
13print(String(format: "Altman Z-Score: %.2f", zScore))
14
A good Altman Z-Score is above 2.99, placing a company in the "Safe Zone" with low bankruptcy risk. Scores between 1.81 and 2.99 indicate moderate risk (Grey Zone), while scores below 1.81 signal high bankruptcy risk (Distress Zone).
The Altman Z-Score accuracy is approximately 80-90% for predicting bankruptcy within two years for publicly traded manufacturing companies. However, accuracy varies by industry, company size, and economic conditions.
Yes, but use the Z'-Score model (modified Altman Z-Score) for private manufacturing companies or the Z''-Score model for private non-manufacturing and emerging market companies. These variants adjust the formula coefficients and ratios for non-public firms.
A negative Z-Score indicates severe financial distress, typically caused by negative working capital, retained earnings, or EBIT. Companies with negative scores face very high bankruptcy risk and require immediate corrective action.
Calculate the Altman Z-Score quarterly or annually when new financial statements are released. For high-risk companies or during economic downturns, monthly monitoring may be appropriate to detect rapid deterioration.
Key limitations include:
While credit ratings (like S&P or Moody's) provide qualitative assessments combining quantitative and subjective factors, the Altman Z-Score is a purely quantitative, formula-based metric. Z-Scores offer objective, real-time bankruptcy risk assessment using financial ratios.
The Altman Z-Score is not ideal for startups because they often have negative earnings, limited retained earnings, and minimal operating history. The model works best for established companies with consistent financial data spanning multiple years.
Use our free Altman Z-Score calculator above to assess financial health and predict bankruptcy risk in seconds. Enter your company's financial data to receive an instant Z-Score analysis with interpretation and risk zone classification.
Discover more tools that might be useful for your workflow