Skip to content

Discounting and Value Growth

Cost-benefit analysis requires translating future avoided losses into present-day monetary terms. Two parameters control this: the discount rate and the value growth rate.

Discount rate

The discount rate r reflects the time-preference of money — a loss avoided in the future is worth less than the same loss avoided today. The NPV of future avoided risk over a horizon of n years is:

NPV = avoided_present + avoided_future × Σ_{t=1}^{n} 1 / (1 + r)^t

A higher discount rate shrinks the weight placed on future losses, making long-term adaptation measures appear less cost-effective.

Value growth rate

The value growth rate g captures the appreciation of exposed assets over time. If assets are worth more in the future, the avoided loss in the future year is correspondingly larger. The platform applies a compound growth factor:

growth_factor = (1 + g)^n
NPV = avoided_present + avoided_future × growth_factor × Σ_{t=1}^{n} 1 / (1 + r)^t

When g = 0 the formula collapses to the standard discounting case.

Stern vs Nordhaus

The two most widely cited parameter choices come from the Stern Review (2007) and Nordhaus's DICE model (2017). They embody a fundamental disagreement about intergenerational ethics.

Preset Discount rate Value growth rate
Stern (2007) 1.4 % 1.3 %
Nordhaus (2017) 4.3 % 2.0 %

Stern argues that future generations deserve near-equal weight to present ones. A very low discount rate keeps the NPV of future damages high, making aggressive near-term mitigation and adaptation appear cost-effective. Stern uses a near-zero pure rate of time preference (0.1 %) combined with a modest consumption growth assumption.

Nordhaus grounds his discount rate in observed market returns, reflecting the opportunity cost of capital. The higher rate reduces the present value of distant damages, which leads to recommendations favouring gradual, incremental action rather than front-loaded investment.

Applying the presets

The platform exposes discount_rate and value_growth_rate on POST /v1/compute/cost-benefit. discount_rate is required — there is no default, and no org-level fallback: every job states the rate it was run with. value_growth_rate is optional and defaults to 0.0.

Picking the rate is therefore the caller's decision on every submission. The org_settings.default_discount_rate / default_value_growth_rate keys that earlier drafts of this page described were removed in #480 — they were persisted but no compute path ever read them, so an org default set there silently did nothing. Wiring org-level compute defaults is tracked separately; until it lands, treat the presets above as the values to send explicitly.

The submitted values are stamped into the job's params JSONB so that any report generated from the result (Phase 7) can reproduce the calculation exactly.

Further reading

  • Stern, N. (2007). The Economics of Climate Change: The Stern Review. Cambridge University Press.
  • Nordhaus, W. (2017). Revisiting the social cost of carbon. PNAS, 114(7), 1518–1523.
  • Ramsey, F. P. (1928). A mathematical theory of saving. Economic Journal, 38(152), 543–559.