Signature
DF_t = (1 + r_1)^(-min(t, 30)) * (1 + r_2)^(-max(min(t, 75) - 30, 0)) * (1 + r_3)^(-max(t - 75, 0))
| Inputs | Definition | Unit |
|---|---|---|
r_1 | Annual rate for years 1 to 30, 0.035 for the STPR, 0.015 for the health rate or 0.03 for the reduced rate | a proportion per year |
t | Year of the appraisal in which the cost or benefit falls, with year 0 the present | years, a whole number, at most 125 for the health and reduced rates (HE-AS-TPR-008) |
r_2 | Annual rate for years 31 to 75, 0.03 for the STPR, 0.01286 for the health rate or 0.0257 for the reduced rate | a proportion per year |
r_3 | Annual rate for years 76 to 125, 0.025 for the STPR, 0.01071 for the health rate or 0.0214 for the reduced rate | a proportion per year |
DF_t | Weight on a real social cost or benefit in year t relative to year 0 | none, 1 at year 0 |
|---|
Function
Social time preference rate, stepped long-term discount factors and implied individual rates for health
Maps the components of social time preference to the HM Treasury social time preference rate and its health discount rate, maps a stepped long-term schedule of rates to the discount factor for any year of an appraisal, and maps one answer to a stated choice between ill health at two dates to the constant annual rate it implies. The rates it returns feed the single-amount factor of the Discount Rate page (HE-FM-DR-001) and the stream totals of the Discounting page (HE-FN-DISC-001, HE-FM-DISC-001 to HE-FM-DISC-004 and HE-CF-DISC-001). A health rate derived from growth in the consumption value of health is HE-FM-DDIS-002 under HE-FN-DDIS-001, and the quasi-hyperbolic weight D(k) = beta lambda^k of the article is HE-FM-HYPD-004 under HE-FN-HYPD-001, so neither is repeated here. Notation follows the Time Preference article.
Computational function
Computational function for a level yearly stream under the stepped Green Book schedule and the reduced schedule without pure time preference
Takes a level yearly amount, a horizon of up to 125 years and two sets of three band rates, the standard schedule and the reduced schedule with pure time preference excluded, and returns the sum of the stepped factors of HE-FM-TPR-003 under each, the two present values and their difference. Paragraph 3.5 of the supplementary guidance reads the difference between the two results as an estimate of the wealth transfer attributable to pure social time preference. Each band's sum is geometric, so the calculator line adds three closed-form sums, and for a horizon of 30 years or less the standard sum is the annuity of HE-FM-DISC-001. The inputs therefore differ from the formula's variables, which describe one year.
Inputs and outputs:
qis the real amount in each of years 1 toT, for example GBP of social benefit.Tis the horizon, a whole number of years of at most 125.r_1,r_2andr_3are the standard band rates for years 1 to 30, 31 to 75 and 76 to 125, 0.035, 0.03 and 0.025 for the STPR.z_1,z_2andz_3are the reduced rates of Table 3.B, 0.03, 0.0257 and 0.0214.n_1,n_2andn_3are the years of the horizon in each band.A_SandA_Zare the sums of the factors,PV_SandPV_Zthe present values in the unit ofq, andWisPV_ZminusPV_S.Assumption: All rates are above zero for the closed form, which the R and Python code do not need. Any amount in year 0 is added undiscounted. Table 3.B gives no reduced health rate, so for a health stream the code is run with the health rates 0.015, 0.01286 and 0.01071 for the standard total only. The R and Python code take any list of band ends and rates, including the six reduced bands of Table 3.B that run past year 125.
Worked example (GBP 1,000 a year for 100 years): The standard schedule gives about GBP 28,863 and the reduced schedule GBP 33,040, so about GBP 4,176 of present value is lost to pure time preference (illustrative stream, computed here for illustration).
q = 1000; T = 100; r_1 = 0.035; r_2 = 0.03; r_3 = 0.025; z_1 = 0.03; z_2 = 0.0257; z_3 = 0.0214; n_1 = 30; n_2 = 45; n_3 = 25; A_S = 28.863363; A_Z = 33.03971; PV_S = 28863.363; PV_Z = 33039.71; W = 4176.346Worked example (One unit a year for 60 years): Just past the 50-year trigger for the extra sensitivity analysis, the standard sum is about 25.375 and the reduced sum 28.144 (computed here for illustration).
q = 1; T = 60; r_1 = 0.035; r_2 = 0.03; r_3 = 0.025; z_1 = 0.03; z_2 = 0.0257; z_3 = 0.0214; n_1 = 30; n_2 = 30; n_3 = 0; A_S = 25.37526; A_Z = 28.143509; PV_S = 25.37526; PV_Z = 28.143509; W = 2.76825Worked example (Thirty-year horizon inside the first band): No step is reached, and the standard sum of 18.392045 is the HE-FM-DISC-001 annuity at 3.5%, a limiting case that checks the implementation.
q = 1000; T = 30; r_1 = 0.035; r_2 = 0.03; r_3 = 0.025; z_1 = 0.03; z_2 = 0.0257; z_3 = 0.0214; n_1 = 30; n_2 = 0; n_3 = 0; A_S = 18.392045; A_Z = 19.600441; PV_S = 18392.045; PV_Z = 19600.441; W = 1208.396Excel:
=(1-(1+RateNear)^(-MIN(Horizon,30)))/RateNear+(1+RateNear)^(-30)*(1-(1+RateMid)^(-MAX(MIN(Horizon,75)-30,0)))/RateMid+(1+RateNear)^(-30)*(1+RateMid)^(-45)*(1-(1+RateFar)^(-MAX(Horizon-75,0)))/RateFarReturnsA_Sfrom named cells; the same formula on the reduced rates returnsA_Z. With years 1 to 125 in a column named YearCol and the HE-FM-TPR-003 factors in a column named FactorStd,=StreamAmount*SUMPRODUCT((YearCol<=Horizon)*FactorStd)returnsPV_Swithout the closed form.R:
stepped_pv <- function(q, n_years, ends, rates) { t <- 1:n_years; r_t <- sapply(t, function(k) rates[which(k <= ends)[1]]); df <- cumprod(1/(1+r_t)); c(A = sum(df), PV = q*sum(df), DF_T = df[n_years]) }Returns a named vector; the wealth transfer isstepped_pv(1000, 100, c(30, 75, 125), c(0.03, 0.0257, 0.0214))["PV"]-stepped_pv(1000, 100, c(30, 75, 125), c(0.035, 0.03, 0.025))["PV"]. UseInfas the last band end for an open-ended band.Python:
def stepped_pv(q, n_years, ends, rates): r_t = [next(r for e, r in zip(ends, rates) if k <= e) for k in range(1, n_years+1)]; f = 1.0; df = [(f := f/(1+x)) for x in r_t]; return sum(df), q*sum(df), df[-1]Plain Python 3.8 or later with no imports, returning the sum of factors, the present value and the last year's factor; usefloat('inf')as the last band end for an open-ended band.Test (Thirty-year standard sum equals the Excel PV annuity): With Horizon = 30 and RateNear = 0.035 the closed-form sum in a cell named SumStd equals the annuity factor of HE-FM-DISC-001. The expected result is TRUE. Excel check
=ABS(SumStd-PV(RateNear,30,-1))<1E-9Test (Reduced schedule gives the larger present value): For a positive amount and a horizon of at least one year, the present value in PVReduced exceeds that in PVStd, because every reduced rate is lower. The expected result is TRUE. FALSE shows the two schedules swapped. Excel check
=PVReduced>PVStdCommon error (Wealth transfer read as the whole effect of discounting): The reduced schedule still discounts at 3.0% and less, since catastrophic risk and the wealth effect remain. For GBP 1,000 a year over 100 years the difference is about GBP 4,176, while the reduced present value of GBP 33,040 is still about a third of the undiscounted GBP 100,000 (computed here for illustration).
Common error (Health stream on the standard schedule): One QALY a year for 60 years sums to about 25.38 on the STPR schedule against 39.86 on the health schedule (computed here for illustration), so the discounted health gain is understated by more than a third.
Source: HM Treasury. Discounting, Green Book supplementary guidance. London, HM Treasury, February 2026 (ISBN 978-1-918417-18-0), page last updated 5 February 2026. Chapter 3, paragraphs 3.1 to 3.5 with Tables 3.A and 3.B, and Annex A Tables A.1 to A.3, for the standard, health and reduced schedules and the reading of the difference between the standard and reduced results as the wealth transfer attributable to pure social time preference.
n_1 = min(T, 30); n_2 = max(min(T, 75) - 30, 0); n_3 = max(T - 75, 0); A_S = (1 - (1 + r_1)^(-n_1)) / r_1 + (1 + r_1)^(-30) * (1 - (1 + r_2)^(-n_2)) / r_2 + (1 + r_1)^(-30) * (1 + r_2)^(-45) * (1 - (1 + r_3)^(-n_3)) / r_3; A_Z = (1 - (1 + z_1)^(-n_1)) / z_1 + (1 + z_1)^(-30) * (1 - (1 + z_2)^(-n_2)) / z_2 + (1 + z_1)^(-30) * (1 + z_2)^(-45) * (1 - (1 + z_3)^(-n_3)) / z_3; PV_S = q * A_S; PV_Z = q * A_Z; W = PV_Z - PV_S
Try this function
Implementations
Excel
Stepped Green Book discount factor from named cells
With the year in YearT and the three band rates in RateNear, RateMid and RateFar, the cell returns the factor; name it DiscFactorOut for the tests. MIN and MAX count the years that fall in each band, and filling the formula down a column of years gives a factor table like Annex A.
=(1+RateNear)^(-MIN(YearT,30))*(1+RateMid)^(-MAX(MIN(YearT,75)-30,0))*(1+RateFar)^(-MAX(YearT-75,0))
Assumptions
Whole appraisal years counted from year 0 under the stepped schedule
Year 0 has a factor of 1 and a cost or benefit in year t is multiplied by the factor for that year, as paragraph 1.3 and the Annex A tables of the guidance set out. The bands end at year 125, the last year of Table 3.A. The Green Book main text states 2.50% for year 76 onwards with no end year, so for the standard STPR a longer horizon keeps r_3 beyond year 125, whereas Table 3.B steps the reduced rate down again after year 125, so the formula covers the reduced schedule only to year 125 and the code of HE-CF-TPR-001 covers its later bands.
Stepped decline from parameter uncertainty and not from individual impatience
Paragraph 3.1 attributes the decline after year 30 to uncertainty about the future values of the STPR parameters. The schedule is a fixed social rule for long horizons, while the hyperbolic and quasi-hyperbolic forms of HE-FN-HYPD-001 describe how individuals weigh delays, so one is not evidence for the other.
Reduced stepped schedule for horizons beyond 50 years
Paragraph 3.4 asks for additional sensitivity analysis beyond 50 years with pure time preference excluded. Table 3.B gives 3.00%, 2.57% and 2.14% for the same bands to year 125, so the formula takes these rates. Factors built from the printed rates are 0.0001 above Table A.3 at each listed year after 30, for example 0.2480 against 0.2479 at year 50 (computed here), so the Annex A factors are the values to report.
Worked examples
Green Book standard factor for year 31
Thirty years at 3.5% and one at 3.0% give 0.3459, the value for year 31 in Annex A Table A.1.
t = 31; r_1 = 0.035; r_2 = 0.03; r_3 = 0.025; DF_t = 0.3459
Green Book standard factor for year 60
Thirty years at 3.5% and thirty at 3.0% give 0.1468, the value for year 60 in Annex A Table A.1.
t = 60; r_1 = 0.035; r_2 = 0.03; r_3 = 0.025; DF_t = 0.1468
Green Book standard factor for year 100 across all three bands
Thirty years at 3.5%, forty-five at 3.0% and twenty-five at 2.5% give about 0.0508 for year 100 (computed here for illustration; Table A.1 stops at year 60).
t = 100; r_1 = 0.035; r_2 = 0.03; r_3 = 0.025; DF_t = 0.0508
Green Book health factor for year 50
Thirty years at 1.5% and twenty at 1.286% give 0.4955, the value for year 50 in Annex A Table A.2.
t = 50; r_1 = 0.015; r_2 = 0.01286; r_3 = 0.01071; DF_t = 0.4955
Green Book standard factor for year 20 inside the first band
Before the first step the later rates have no effect and the factor is 1.035 to the power minus 20, 0.5026, the year-20 value of Table A.1 and the weight the article gives a QALY in year 20 at 3.5%, a limiting case that checks an implementation.
t = 20; r_1 = 0.035; r_2 = 0.03; r_3 = 0.025; DF_t = 0.5026
Common errors
Long-term band rate applied from year 0
Discounting a year-60 value at 3.0% for all 60 years gives 0.1697 in place of 0.1468 (computed here for illustration), about 16% too high, because the step lowers the rate only for the years after 30.
Standard STPR schedule used for health effects in a Green Book appraisal
A health effect in year 50 then carries a factor of 0.1973 (Table A.1) in place of 0.4955 (Table A.2), about two fifths of the weight the guidance gives it, since paragraph 2.17 applies the health rate in every year.
Stepped Treasury schedule used in a NICE reference case
PMG36 section 4.5.1 sets one rate of 3.5% a year for the reference case, and section 4.5 gives no declining schedule. Stepping down after year 30 puts 0.1468 on a QALY in year 60 against 0.1269 at a constant 3.5% (computed here for illustration), about 16% more weight on late gains.
Sources
Treasury declining discount rate regime and its discount factor tables
HM Treasury. Discounting, Green Book supplementary guidance. London, HM Treasury, February 2026 (ISBN 978-1-918417-18-0), page last updated 5 February 2026. Chapter 3, paragraphs 3.1 and 3.2 and Table 3.A, which set the STPR at 3.5% for years 1 to 30, 3.0% for years 31 to 75 and 2.5% for years 76 to 125 and the health rate at 1.500%, 1.286% and 1.071%; paragraphs 3.3 to 3.5 and Table 3.B for the reduced rates with pure time preference excluded; paragraph 1.3 and Annex A Tables A.1 to A.3, which give the factors by year (0.3459 for year 31 and 0.1468 for year 60 in Table A.1, 0.4955 for year 50 in Table A.2) to be multiplied by the costs and benefits of each year.
Green Book 2026 summary of the declining social time preference rate
HM Treasury. The Green Book (2026). London, HM Treasury, updated 5 February 2026. Chapter 6, section on discounting, which states the STPR as 3.50% in real terms for years 1 to 30, 3.00% for years 31 to 75 and 2.50% for year 76 onwards, asks practitioners to multiply each future year's values by its discount factor, and states that health and life effects are discounted at the lower rate of 1.5% and that the health discount rate applies in every year of the appraisal.
NICE constant reference-case rate set against the Treasury stepped schedule
National Institute for Health and Care Excellence. NICE technology appraisal and highly specialised technologies guidance, the manual (PMG36). London, NICE, 2022, last updated 13 October 2026. Chapter 4, economic evaluation, section 4.5.1, which states that for the reference case costs and health effects should be discounted at the same rate of 3.5% per year. Section 4.5 gives this one rate and sets out no schedule that changes over the time horizon.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0
