Calculate the Sustainable Growth Rate (SGR) for equity valuation.
%
Net Income / Shareholder's Equity
%
% of earnings paid as dividends
Sustainable Growth Rate (g)
0.00%
Retention Ratio (b)
0.00%
Doubling Time (Rule of 72)
— Years
Understanding Common Stock Growth Rate
The Common Stock Growth Rate, often denoted as g in financial modeling, represents the rate at which a company's earnings and dividends are expected to grow in the future. This metric is a critical component in the Gordon Growth Model (Dividend Discount Model) used to determine the intrinsic value of a stock.
While growth can be estimated using historical trends, the most robust method for fundamental analysis is the Sustainable Growth Rate (SGR) model. This model assumes that a company will grow by reinvesting its earnings back into the business at its current rate of return on equity.
The Calculation Formula
The calculator above utilizes the Retention Growth Model formula. The logic is that growth is driven by the portion of earnings kept within the company (Retained Earnings) multiplied by how effectively the company uses that capital (Return on Equity).
g = ROE × b
Where:
g = Sustainable Growth Rate
ROE = Return on Equity (Net Income / Shareholder Equity)
b = Retention Ratio (1 – Dividend Payout Ratio)
How to Interpret the Inputs
Return on Equity (ROE): This measures a corporation's profitability by revealing how much profit a company generates with the money shareholders have invested. A higher ROE typically signals a capability for higher growth, assuming the earnings are reinvested.
Dividend Payout Ratio: This is the percentage of earnings paid to shareholders in dividends. The remaining amount is the Retention Ratio.
Example Calculation
Imagine a company with the following financial metrics:
ROE: 15%
Dividend Payout Ratio: 40% (meaning they keep 60% of earnings)
First, we calculate the Retention Ratio (b):
b = 100% – 40% = 60% (or 0.60)
Next, we apply the growth formula:
g = 15% × 60% = 9.00%
This means the company's intrinsic growth rate is 9%. If the company pays out all its earnings as dividends (100% payout), the retention ratio becomes 0%, and the sustainable growth rate drops to 0%, as no capital is being reinvested for expansion.
Why This Matters for Investors
Investors use this growth rate to decide if a stock is overvalued or undervalued. If the calculated sustainable growth rate is significantly lower than the market's expectation (implied by the current stock price), the stock might be overvalued. Conversely, a high sustainable growth rate coupled with a low P/E ratio may indicate an investment opportunity.
function calculateStockGrowth() {
// 1. Get Input Values
var roeInput = document.getElementById("roeInput");
var payoutInput = document.getElementById("payoutInput");
var resultSection = document.getElementById("resultOutput");
// Parse values
var roe = parseFloat(roeInput.value);
var payout = parseFloat(payoutInput.value);
// 2. Validation
if (isNaN(roe) || isNaN(payout)) {
alert("Please enter valid numeric values for both ROE and Payout Ratio.");
return;
}
// Logic check for payout ratio limits
if (payout 100) {
alert("Dividend Payout Ratio must be between 0 and 100%.");
return;
}
// 3. Calculation Logic
// Retention Ratio (b) = 1 – Payout Ratio
// Since inputs are in whole percentages (e.g. 40 for 40%), we calculate (100 – payout) / 100
var retentionPercent = 100 – payout;
var retentionRatio = retentionPercent / 100;
// Growth Rate (g) = ROE * Retention Ratio
// ROE is in percentage terms.
// Example: ROE 15, Retention 0.6. Growth = 15 * 0.6 = 9.
var growthRate = roe * retentionRatio;
// Doubling Time (Rule of 72)
var doublingTime = 0;
var doublingText = "–";
if (growthRate > 0) {
doublingTime = 72 / growthRate;
doublingText = doublingTime.toFixed(1) + " Years";
} else if (growthRate <= 0) {
doublingText = "No Growth";
}
// 4. Update UI
document.getElementById("finalGrowth").innerHTML = growthRate.toFixed(2) + "%";
document.getElementById("retentionResult").innerHTML = retentionPercent.toFixed(2) + "%";
document.getElementById("doublingResult").innerHTML = doublingText;
// Show results
resultSection.style.display = "block";
// Smooth scroll to results
resultSection.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}