.igr-calculator-container {
max-width: 700px;
margin: 0 auto;
background: #f9f9f9;
padding: 30px;
border-radius: 8px;
box-shadow: 0 4px 15px rgba(0,0,0,0.05);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
.igr-calculator-container h3 {
text-align: center;
color: #2c3e50;
margin-bottom: 25px;
}
.igr-form-group {
margin-bottom: 20px;
}
.igr-form-group label {
display: block;
font-weight: 600;
margin-bottom: 8px;
color: #34495e;
}
.igr-input-wrapper {
position: relative;
display: flex;
align-items: center;
}
.igr-input-wrapper input {
width: 100%;
padding: 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
transition: border-color 0.3s;
}
.igr-input-wrapper input:focus {
border-color: #3498db;
outline: none;
}
.igr-prefix, .igr-suffix {
padding: 0 12px;
color: #7f8c8d;
font-weight: bold;
background: #eee;
border: 1px solid #ddd;
display: flex;
align-items: center;
height: 43px;
box-sizing: border-box;
}
.igr-prefix {
border-right: none;
border-radius: 4px 0 0 4px;
}
.igr-suffix {
border-left: none;
border-radius: 0 4px 4px 0;
}
.igr-input-wrapper input.has-prefix {
border-radius: 0 4px 4px 0;
}
.igr-input-wrapper input.has-suffix {
border-radius: 4px 0 0 4px;
}
.igr-btn {
width: 100%;
background-color: #2c3e50;
color: white;
padding: 15px;
border: none;
border-radius: 4px;
font-size: 18px;
cursor: pointer;
font-weight: bold;
transition: background-color 0.2s;
}
.igr-btn:hover {
background-color: #34495e;
}
#igr-result {
margin-top: 25px;
padding: 20px;
background-color: #ffffff;
border-left: 5px solid #2ecc71;
display: none;
}
.igr-result-value {
font-size: 32px;
color: #2ecc71;
font-weight: bold;
margin: 10px 0;
}
.igr-result-label {
font-size: 14px;
color: #7f8c8d;
text-transform: uppercase;
letter-spacing: 1px;
}
.igr-error {
color: #e74c3c;
margin-top: 10px;
text-align: center;
display: none;
}
.igr-content-section {
max-width: 800px;
margin: 40px auto;
line-height: 1.6;
color: #333;
font-family: inherit;
}
.igr-content-section h2 {
color: #2c3e50;
border-bottom: 2px solid #ecf0f1;
padding-bottom: 10px;
margin-top: 40px;
}
.igr-content-section p {
margin-bottom: 15px;
}
.igr-content-section ul {
margin-bottom: 20px;
padding-left: 20px;
}
.igr-content-section li {
margin-bottom: 8px;
}
.igr-formula-box {
background: #ecf0f1;
padding: 15px;
border-radius: 5px;
font-family: "Courier New", Courier, monospace;
text-align: center;
margin: 20px 0;
font-weight: bold;
}
function calculateImpliedGrowth() {
// 1. Get input values
var priceInput = document.getElementById("currentStockPrice").value;
var dividendInput = document.getElementById("currentDividend").value;
var costInput = document.getElementById("costOfEquity").value;
var resultDiv = document.getElementById("igr-result");
var resultText = document.getElementById("igr-result-percentage");
var errorMsg = document.getElementById("igr-error-msg");
// 2. Parse values
var P0 = parseFloat(priceInput); // Current Price
var D0 = parseFloat(dividendInput); // Current Dividend
var r = parseFloat(costInput); // Required Rate of Return (Percent)
// 3. Validation
if (isNaN(P0) || isNaN(D0) || isNaN(r)) {
errorMsg.innerText = "Please enter valid numbers for all fields.";
errorMsg.style.display = "block";
resultDiv.style.display = "none";
return;
}
if (P0 <= 0) {
errorMsg.innerText = "Stock price must be greater than zero.";
errorMsg.style.display = "block";
resultDiv.style.display = "none";
return;
}
// Convert percentage to decimal
var rDecimal = r / 100;
// 4. Calculation Logic
// Formula derived from P0 = (D0 * (1 + g)) / (r – g)
// Rearranged to solve for g:
// g = (P0 * r – D0) / (P0 + D0)
var numerator = (P0 * rDecimal) – D0;
var denominator = P0 + D0;
var impliedGrowthDecimal = numerator / denominator;
var impliedGrowthPercent = impliedGrowthDecimal * 100;
// 5. Output Result
errorMsg.style.display = "none";
resultDiv.style.display = "block";
resultText.innerText = impliedGrowthPercent.toFixed(2) + "%";
// Visual Feedback for negative growth
if (impliedGrowthPercent < 0) {
resultText.style.color = "#e74c3c"; // Red for negative growth expectation
} else {
resultText.style.color = "#2ecc71"; // Green for positive
}
}
How to Calculate Implied Growth Rate
The Implied Growth Rate is a crucial financial metric used in valuation to determine what growth expectations the market has already priced into a stock. By using the current stock price and working backward through valuation models like the Dividend Discount Model (DDM) or the Gordon Growth Model, investors can see how fast the market expects a company's earnings or dividends to grow in perpetuity.
The Formula
To calculate the implied growth rate, we rearrange the standard Gordon Growth Model formula. The standard model solves for the price ($P_0$) based on dividends, growth, and the required rate of return. The reverse version solves for the growth rate ($g$).
g = (P₀ × r – D₀) / (P₀ + D₀)
Where:
- P₀ = Current Stock Price
- D₀ = Current Annual Dividend (or Free Cash Flow per Share)
- r = Required Rate of Return (Cost of Equity)
- g = Implied Perpetual Growth Rate
Step-by-Step Calculation Example
Let's say you are analyzing a blue-chip utility company. You want to know if the current stock price reflects realistic growth expectations.
1. Identify the Current Price (P₀):
The stock is currently trading at $50.00.
2. Determine Current Cash Flow (D₀):
The company pays an annual dividend of $2.00 per share.
3. Estimate Required Rate of Return (r):
Based on the company's risk profile and current interest rates, you estimate a Cost of Equity of 8% (0.08).
4. Apply the Formula:
Numerator = ($50.00 × 0.08) – $2.00 = $4.00 – $2.00 = $2.00
Denominator = $50.00 + $2.00 = $52.00
Calculation = 2.00 / 52.00 ≈ 0.0384
Result: The implied growth rate is approximately 3.84%. This means the market price of $50 assumes the company will grow its dividends by 3.84% forever. If you believe the company can grow faster than that, the stock may be undervalued.
Why Use the Implied Growth Rate?
Calculating the implied growth rate allows investors to perform a "reality check" on a stock price. Instead of trying to guess a growth rate to calculate a target price (which introduces bias), you take the market price as a given and calculate the growth required to justify it.
- Overvalued Signal: If the implied growth rate is unrealistically high (e.g., higher than the GDP growth rate for a mature company), the stock might be overvalued.
- Undervalued Signal: If the implied growth rate is very low or negative for a healthy company, the market might be overly pessimistic.