Signature
Q = q * (1 - (1 + r)^(-T)) / r
| Inputs | Definition | Unit |
|---|---|---|
q | Amount arising in each year of the stream, the same every year, such as an incremental gain of 0.8 QALYs a year | QALYs or currency per year, in constant prices for costs |
r | Annual discount rate written as a decimal, such as 0.035 for the NICE reference case | a proportion per year, above zero in this closed form |
T | Number of years in the stream, which runs from year 1 to year T of the time horizon | years, a whole number |
Q | Present value of the T yearly amounts counted at the end of each year | same as q, for example QALYs or pounds |
|---|
Function
Discounting of yearly cost and QALY streams to present-value totals
Maps a stream of yearly costs or QALYs, an annual discount rate, a time horizon and a timing convention to one discounted total, by multiplying each year's amount by its discount factor and adding the results. Totals for costs and for QALYs are formed separately and then compared across options, for example as an incremental cost per QALY. The present value of a single amount, the general sum over a stream and separate rates for costs and health are on the Discount Rate page (HE-FM-DR-001 to HE-FM-DR-003), and unequal rates on the Differential Discounting page (HE-FN-DDIS-001). This package adds the totals of a level yearly stream counted at the end of each year, at the start of each year and continuously, and the discounted cost per QALY of a one-off treatment with a lasting gain, as in the article's worked example.
Computational function
Computational function for discounted QALYs and cost per QALY of a one-off treatment under a chosen timing convention
Takes the inputs a one-off treatment analysis usually holds, an incremental cost paid at the start, a yearly QALY gain, the number of years it lasts, an annual rate and a flag for counting each year at its start or its end, and returns the sum of the discount factors, the discounted QALYs, the discounted and undiscounted cost per QALY and the rise caused by discounting. It builds one factor for each year, so it also works at a zero rate where the closed form fails, and chains HE-FM-DISC-001 or HE-FM-DISC-002 with HE-FM-DISC-004. The inputs therefore differ from the formulas' variables, which assume one timing convention and a positive rate.
Inputs and outputs:
C_0is the incremental cost paid in year 0, left undiscounted, in pounds.qis the yearly incremental QALY gain, required, above zero.Tis the number of years the gain lasts, a whole number above zero.ris the annual discount rate as a decimal, zero or above.sis the timing flag, 0 for end-of-year counting and 1 for start-of-year counting.Ais the sum of the T discount factors.Q_dis the discounted QALY gain.ICER_dandICER_0are the discounted and undiscounted costs per QALY in pounds per QALY.riseis the proportional increase ofICER_doverICER_0.Assumption: The whole incremental cost falls in year 0, the gain is the same in every year and one rate applies to costs and QALYs, as in the NICE reference case. With s set to 1 the first year's gain is counted at year 0 and is not discounted.
Worked example (Article's treatment at 3.5% with end-of-year counting): GBP 300,000 at the start and 0.8 QALYs a year for 30 years give a factor sum of 18.3920, 14.71 discounted QALYs and about GBP 20,389 per QALY against GBP 12,500 undiscounted, a rise of about 63%.
C_0 = 300000; q = 0.8; T = 30; r = 0.035; s = 0; A = 18.392045; Q_d = 14.713636; ICER_d = 20389.25; ICER_0 = 12500; rise = 0.631140Worked example (Article's treatment at 1.5% with end-of-year counting): At the NICE non-reference-case rate the ratio is about GBP 15,615 per QALY, a rise of about 25%.
C_0 = 300000; q = 0.8; T = 30; r = 0.015; s = 0; A = 24.015838; Q_d = 19.212670; ICER_d = 15614.70; ICER_0 = 12500; rise = 0.249176Worked example (Same treatment at 3.5% with start-of-year counting): Counting each year's gain at its start raises the discounted QALYs to about 15.23 and lowers the ratio to about GBP 19,700 (computed here for illustration).
C_0 = 300000; q = 0.8; T = 30; r = 0.035; s = 1; A = 19.035767; Q_d = 15.228614; ICER_d = 19699.76; ICER_0 = 12500; rise = 0.575981Worked example (Zero rate returns the undiscounted ratio): With no discounting the factor sum is 30 and the two ratios agree, a limiting case that checks the implementation.
C_0 = 300000; q = 0.8; T = 30; r = 0; s = 0; A = 30; Q_d = 24; ICER_d = 12500; ICER_0 = 12500; rise = 0Excel:
=OneOffCost/(YearlyQALYs*SUM((1+DiscRate)^-(SEQUENCE(Years)-StartFlag)))Returns the discounted cost per QALY from named cells, with StartFlag holding 0 or 1. SEQUENCE needs Excel 365 or Excel 2021.R:
disc_icer <- function(cost0, q, years, rate, start = 0) { a <- sum((1+rate)^-((1:years)-start)); q_d <- q * a; icer_d <- cost0 / q_d; icer_0 <- cost0 / (q * years); c(A = a, Q_d = q_d, ICER_d = icer_d, ICER_0 = icer_0, rise = icer_d / icer_0-1) }Returns a named vector, and works at a zero rate.Python:
def disc_icer(cost0, q, years, rate, start=0): a = sum((1+rate)**-(t-start) for t in range(1, years+1)); q_d = q*a; icer_d = cost0/q_d; icer_0 = cost0/(q*years); return a, q_d, icer_d, icer_0, icer_d/icer_0-1Plain Python with no imports, returning a tuple in the order of the outputs.Test (Start-of-year factor sum equals the end-of-year sum times one plus the rate): Moving every year one period earlier multiplies each factor by (1 + r). The expected result is TRUE. Excel check
=ABS(SUM((1+DiscRate)^-(SEQUENCE(Years)-1))-(1+DiscRate)*SUM((1+DiscRate)^-SEQUENCE(Years)))<1E-9Test (Common rate on a spread cost leaves the ratio unchanged): When a yearly cost falls in the same years as the gain, discounting both at one rate leaves the ratio at the undiscounted value, as the article notes for a lifelong drug. The expected result is TRUE. Excel check
=ABS(PV(DiscRate,Years,-YearlyCost)/PV(DiscRate,Years,-YearlyQALYs)-YearlyCost/YearlyQALYs)<1E-9Common error (Discounting the year 0 cost): Dividing the GBP 300,000 paid at the start by 1.035 lowers the ratio at 3.5% to about GBP 19,700 instead of GBP 20,389. An amount paid in year 0 has a factor of 1, so the timing flag applies to the QALY stream only.
Source: National Institute for Health and Care Excellence. NICE technology appraisal and highly specialised technologies guidance, the manual (PMG36). Chapter 4, economic evaluation. Published 31 January 2022, last updated 13 October 2026. Section 4.5.1 on the present value of the stream of costs and benefits over the time horizon at 3.5% a year, and section 4.5.3 on the 1.5% non-reference-case rate. Larson BA. Calculating disability-adjusted-life-years lost (DALYs) in discrete-time. Cost Effectiveness and Resource Allocation. 2013;11 article 18. Table 1, which counts each year at the beginning of the year, the same as a stream of payments made at the start of each year.
A = sum_(t=1)^T [(1 + r)^(-(t - s))]; Q_d = q * A; ICER_d = C_0 / Q_d; ICER_0 = C_0 / (q * T); rise = ICER_d / ICER_0 - 1
Try this function
Implementations
Excel
End-of-year discounted level stream with Excel PV
With the rate in DiscRate, the number of years in Years and the yearly amount in YearlyAmount, Excel PV returns the total. The minus sign is needed because PV reports a payment as a negative value. The second formula is the same closed form written out.
=PV(DiscRate,Years,-YearlyAmount); =YearlyAmount*(1-(1+DiscRate)^-Years)/DiscRate
Assumptions
One constant annual rate across a level discounted stream
The same rate r applies in every year, the constant or exponential model that Attema and colleagues describe as the one most used by social planners. The Green Book steps its rate down after year 30, so under that guidance a longer stream needs each year's factor built from the rates in force and the closed form no longer applies.
Each year's amount counted at the end of the year
Each year's amount is credited at the end of that year, as for the QALYs in the article's worked example. Counting at the start of each year moves every factor one period earlier and multiplies the total by (1 + r), as in HE-FM-DISC-002, so the convention is stated and kept the same for every option compared.
Constant prices for a discounted cost stream
A cost stream is expressed in real terms, with general inflation removed first, because the Green Book rate is a real rate and adding the inflation rate to it gives a mathematically incorrect result.
Worked examples
Thirty years of 0.8 QALYs counted at year end and discounted at 3.5 per cent
An extra 0.8 QALYs in each of 30 years, counted at the end of each year, is worth about 14.71 discounted QALYs at 3.5% against 24 undiscounted. The 30 factors sum to 18.3920 and the factor for year 30 is about 0.3563, as in the article.
q = 0.8; r = 0.035; T = 30; Q = 14.7136
Thirty years of 0.8 QALYs counted at year end and discounted at 1.5 per cent
At 1.5% the same gain is worth about 19.21 discounted QALYs, since the 30 factors sum to 24.0158, as in the article's table for the NICE non-reference-case rate.
q = 0.8; r = 0.015; T = 30; Q = 19.2127
Common errors
Zero rate entered in the closed-form discounted annuity
The closed form divides by r, so a rate of zero returns #DIV/0! in Excel instead of the undiscounted total q times T. An undiscounted result, which PMG36 asks for in its disaggregated table and the Dutch guideline as a scenario, uses q times T, the factor-by-factor sum or Excel PV, which accepts a zero rate.
Year 0 included in an end-of-year discounted stream
Running the year index from 0 to 30 adds a 31st year. For 0.8 QALYs at 3.5% the total becomes about 15.51 instead of 14.71 discounted QALYs (computed here for illustration). A stream of T years counted at the end runs from year 1 to year T.
Inflation added to the discount rate for a real cost stream
Discounting real costs of GBP 1,000 a year for 30 years at 5.5%, the 3.5% rate plus 2% inflation, gives about GBP 14,534 instead of GBP 18,392 at 3.5% (computed here for illustration). The Green Book states that the two rates should not be added together.
Sources
Constant discounting model with a per-period discount factor
Attema AE, Brouwer WBF, Claxton K. Discounting in economic evaluations. PharmacoEconomics. 2018;36(7) 745-758. Section on discount models, which describes the constant discounting model as the one most often used by social planners, with costs or utilities in each period multiplied by the discount factor 1/(1 + D)^t of that period.
NICE reference case for discounting a stream over the time horizon
National Institute for Health and Care Excellence. NICE technology appraisal and highly specialised technologies guidance, the manual (PMG36). Chapter 4, economic evaluation. Published 31 January 2022, last updated 13 October 2026. Section 4.5.1, results reflect the present value of the stream of costs and benefits over the time horizon, with costs and health effects discounted at the same rate of 3.5% a year.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0
