Dividend discount calculator
A two-stage Gordon DDM: value a stock as the present value of its expected dividend stream — five years of explicit growth, then a Gordon terminal. The platform's only purely dividend-anchored lens, with a structural safety clamp that keeps the math from collapsing near the cost of equity.
DDM outputs collapse when growth approaches cost of equity. Gordon's TV = D × (1+g) / (Ke − g) has a vertical asymptote at g = Ke — pushing growth toward Ke makes the value explode toward infinity, which is wrong, not a signal. Treat high terminal-growth assumptions as the first thing to audit; this model is the only one in the suite that enforces the gap structurally, not just with a warning.
Dividend discount · Mature dividend payerrequired for archetype
Initial growth forced into a safe band — so the math can't collapse near Ke
Your stated 8.0% exceeded the ceiling 5.75% = max(terminal + 1pp, midpoint(Ke, terminal) − 0.5pp), so the model used 5.75% instead. The clamp is the practical enforcement of the lead warning: rather than printing a divergent number, it forces the assumption into a safe band.
5 years of explicit dividends, then a Gordon terminal at year 5
How much of fair value the Gordon terminal carries
DDM is structurally terminal-heavy — with only a 5-year explicit horizon and slow dividend growth, the terminal piece routinely sits at 60–80% even for healthy payers. That is why the penalty here triggers at 70%, not the 60% used by the EPS DCFs. Penalising at 60% would mark every DDM run as low-reliability; the 70% line flags only the genuinely terminal-dominated cases.
DDM is required for the Mature dividend payer archetype — the dividend is the primary equity-return mechanism. The fair value here feeds the composite in the published report.
Every step, derived
- clampBand = [floor 3.50% = tg+1pp, cap 5.75% = max(tg+1, (Ke+tg)/2−0.5)]
- initialGrowth = min(stated 8%, cap 5.75%) = 5.75% ← CLAMPED from 8%
- Y1: D = 3.173 · PV = 3.173 / 1.100 = 2.884
- Y2: D = 3.355 · PV = 3.355 / 1.210 = 2.773
- Y3: D = 3.548 · PV = 3.548 / 1.331 = 2.666
- Y4: D = 3.752 · PV = 3.752 / 1.464 = 2.563
- Y5: D = 3.968 · PV = 3.968 / 1.611 = 2.464
- Σ Stage I PV = 13.348
- TV = D5 3.968 × (1+2.5%) / (10% − 2.5%) = 54.223
- PV(TV) = 54.223 / (1+10%)^5 = 33.668
- fairValue = 13.348 + 33.668 = 47.017 · terminal 71.6% of FV
- range = { low 39.96, mid 47.02, high 54.07 } (±15% band)
- terminal 71.6% > 70% → reliability 0.85 → 0.6
One stable kernel contract — same as the reports
Reference the model by its stable id ddm, not the display label. The dedicated page, the all-model workbook, and the report pipeline all hit the same endpoint and reconcile to the same fair value.
| Slug | /en/tools/dividend-discount-calculator |
| Kernel model id | ddm · role sector_specific |
| Valuation lens | Two-stage Gordon DDM · 5-yr clamped Stage I + Gordon terminal |
| Primary input | Dividend / share (D₀) + growth + terminal growth + moderate Ke |
| Run endpoint | POST /api/v1/valuation-calculators/run · model_id: "ddm" |
| Sensitivity | POST /api/v1/valuation-calculators/sensitivity · Ke × terminal-growth grid |
| Response contract | result.status (computed / excluded) + result.fairValue (low / mid / high) + initial_growth + terminal_value_pct + reliability |
This surface is stateless. The same kernel powers the per-stock reports, so the fair value here reconciles exactly with the report's ddm output for the same inputs. For REITs, run this alongside the REIT NAV / AFFO lens — both are required, and divergence between them signals either dividend-quality issues (DDM > NAV/AFFO) or undervalued property (NAV/AFFO > DDM). Cross-check against the discounted earnings EPS sibling and the owner earnings cash floor.