fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Gordon Growth Model

Install and import#

bash
npm install fintech-algorithms
ts
import { gordonGrowthModel } from "fintech-algorithms/fundamental-analysis-and-valuation/intrinsic-valuation/gordon-growth-model";

Signature#

gordonGrowthModel(data)

Capitalises a single next-period dividend as a growing perpetuity, dividing it by the spread between the cost of equity and the perpetual growth rate, and exposes that spread and its reciprocal alongside the resulting value per share.

Parameters#

NameTypeNotes
data{ dividend_next: number; cost_of_equity: number; perpetual_growth: number }dividend_next is the dividend one period ahead, not the dividend just paid. cost_of_equity is the discount rate and perpetual_growth the constant growth rate applied forever. Other keys in the record are not read.

Returns#

{ state: string; method: string; dividend_timing: string; discount_growth_spread: number; capitalization_multiple: number; intrinsic_value_per_share: number }

discount_growth_spread is cost_of_equity less perpetual_growth, capitalization_multiple its reciprocal, and intrinsic_value_per_share is dividend_next divided by that spread. dividend_timing records which dividend the formula assumes.

Errors#

  • When data is absent, an array, or not an object — throws Error
  • When dividend_next is not a finite number, or is negative — throws Error
  • When cost_of_equity is not strictly between 0 and 1 — throws Error
  • When perpetual_growth is at or below -1, or at or above cost_of_equity — throws Error

Complexity: time O(1), space O(1).

Worked example#

executed Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.

Input#

data
{
  "valuation_date": "2026-08-04",
  "currency": "USD",
  "dividend_next": 3.12,
  "cost_of_equity": 0.1,
  "perpetual_growth": 0.04
}

Call#

gordonGrowthModel(data)

Returns#

object with 6 fields: state, method, dividend_timing, discount_growth_spread, capitalization_multiple, intrinsic_value_per_share

{
  "state": "valued",
  "method": "gordon-growth",
  "dividend_timing": "D1-next-period",
  "discount_growth_spread": 0.060000000000000005,
  "capitalization_multiple": 16.666666666666664,
  "intrinsic_value_per_share": 52
}

Other exports#

This module also exports calculate, freeCashFlowDcf, dividendDiscountModel, residualIncomeModel, economicValueAdded. Every module additionally exports run as an alias of its primary function, and a meta object carrying its catalog id, domain, family, shape and article URL.

Diagrams#

Gordon Growth Model — article hero
Gordon Growth Model — model boundaries
Gordon Growth Model — reconciliation bridge
Gordon Growth Model — sensitivity map
Gordon Growth Model — system map
Gordon Growth Model — valuation timeline

How it works#

This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.

Read the article →

References#

The rest of the Intrinsic Valuation family#