Please enter valid numeric values. Duration must be at least 1 year.
Annualized Growth Rate (CAGR)0.00%
Total Percentage Change0.00%
Absolute EPS Increase0.00
Understanding EPS Growth Rate
The Earnings Per Share (EPS) Growth Rate is a vital metric for investors, indicating how rapidly a company's profitability is increasing over a specific period. It is often considered one of the most important indicators of a company's financial health and future stock performance.
Why Calculate EPS Growth?
Investors use this metric to identify stocks with strong potential for appreciation. Consistent EPS growth suggests that a company is managing its costs effectively and expanding its revenue base. While past performance does not guarantee future results, a history of steady earnings growth is often a hallmark of high-quality "compounder" stocks.
The Formula
To calculate the annualized growth rate over multiple years, we use the Compound Annual Growth Rate (CAGR) formula:
This means the company's earnings grew at an average annual rate of 11.84% over that 5-year period.
Interpreting the Results
Positive Growth: Indicates the company is becoming more profitable. Growth rates above 10-15% are generally considered strong for established companies.
Negative Growth: Suggests shrinking profits, which could be a warning sign unless the company is in a cyclical downturn or heavy investment phase.
Volatility: If EPS fluctuates wildly from year to year, the long-term CAGR might smooth out the noise, but it's important to look at the consistency of growth as well.
Important Considerations
When using this calculator, ensure that the Initial EPS is a positive number. Calculating CAGR with a negative starting value (a loss) is mathematically complex and often yields non-meaningful results in standard financial models. Additionally, check if the EPS growth is driven by genuine operational improvement or by share buybacks (financial engineering).
function calculateEPSGrowth() {
var initial = document.getElementById('initialEPS').value;
var final = document.getElementById('finalEPS').value;
var years = document.getElementById('years').value;
var errorMsg = document.getElementById('errorMsg');
var resultsArea = document.getElementById('resultsArea');
// Reset display
errorMsg.style.display = 'none';
resultsArea.style.display = 'none';
// Validation
if (initial === "" || final === "" || years === "") {
errorMsg.innerText = "Please fill in all fields.";
errorMsg.style.display = 'block';
return;
}
var startVal = parseFloat(initial);
var endVal = parseFloat(final);
var numYears = parseFloat(years);
if (isNaN(startVal) || isNaN(endVal) || isNaN(numYears)) {
errorMsg.innerText = "Please enter valid numeric values.";
errorMsg.style.display = 'block';
return;
}
if (numYears <= 0) {
errorMsg.innerText = "Duration must be greater than 0 years.";
errorMsg.style.display = 'block';
return;
}
if (startVal <= 0) {
errorMsg.innerText = "Initial EPS must be positive to calculate CAGR accurately.";
errorMsg.style.display = 'block';
return;
}
// Calculations
// Absolute Difference
var absDiff = endVal – startVal;
// Total Percentage Change: ((Final – Initial) / |Initial|) * 100
var totalChange = ((endVal – startVal) / Math.abs(startVal)) * 100;
// CAGR: ((Final / Initial) ^ (1/n)) – 1
// Note: This requires positive initial and final values usually,
// but if final is negative, the power formula returns NaN.
// If final is positive and start is positive, we proceed.
var cagr = 0;
if (endVal 0) {
document.getElementById('cagrResult').style.color = "#2b8a3e"; // Green
} else {
document.getElementById('cagrResult').style.color = "#c92a2a"; // Red
}
}
// Update DOM
document.getElementById('totalChangeResult').innerText = totalChange.toFixed(2) + "%";
document.getElementById('absDiffResult').innerText = absDiff.toFixed(2);
resultsArea.style.display = 'block';
}
function resetCalculator() {
document.getElementById('initialEPS').value = ";
document.getElementById('finalEPS').value = ";
document.getElementById('years').value = ";
document.getElementById('resultsArea').style.display = 'none';
document.getElementById('errorMsg').style.display = 'none';
}