Signature
lambda_in = (C_k - C_i) / (Q_k - Q_i); lambda_out = (C_j - C_k) / (Q_j - Q_k); best = (lambda >= lambda_in) and (lambda <= lambda_out)
| Inputs | Definition | Unit |
|---|---|---|
C_k | Expected total cost per person of strategy k | currency per person |
C_i | Expected total cost per person of strategy i, the next less effective strategy on the frontier | currency per person |
Q_k | Expected total discounted QALYs per person of strategy k | QALYs per person |
Q_i | Expected total discounted QALYs per person of strategy i, below Q_k | QALYs per person |
C_j | Expected total cost per person of strategy j, the next more effective strategy on the frontier | currency per person |
Q_j | Expected total discounted QALYs per person of strategy j, above Q_k | QALYs per person |
lambda | Value placed on one QALY, for example a cost-effectiveness threshold | currency per QALY |
lambda_in | Sequential ICER of strategy k against its less effective frontier neighbour i, the lowest value per QALY at which k is chosen | currency per QALY |
|---|---|---|
lambda_out | Sequential ICER of the more effective frontier neighbour j against strategy k, the highest value per QALY at which k is chosen | currency per QALY |
best | Equals 1 (TRUE) when lambda is at least lambda_in and at most lambda_out, so that strategy k has the highest net monetary benefit, and 0 (FALSE) otherwise | binary indicator |
Function
Cost-effectiveness frontier from the expected costs and QALYs of mutually exclusive strategies
Maps the expected total costs C_j and expected total QALYs Q_j of a set of mutually exclusive strategies, estimated for one population, perspective and time horizon, to the strategies on the cost-effectiveness frontier, the slopes of the segments joining them and, at a value λ placed on one QALY, the strategy chosen. It builds on live records and does not restate them. The dominance screen is HE-FM-DOM-001 and HE-FM-DOM-002, the extended dominance condition and the blend of neighbours are HE-FM-EXD-001 and HE-FM-EXD-002, the ratio between adjacent frontier strategies is the sequential ICER HE-FM-CEA-001 and the maximum net monetary benefit rule is HE-FM-NMB-003. This package adds the range of λ over which each frontier strategy is chosen, the net monetary benefit a strategy gives up against the frontier choice, the gradient of the IQWiG efficiency frontier and two computational functions that build the frontier for any number of strategies. Notation follows the Cost-Effectiveness Frontier article.
Computational function
Computational function for the cost-effectiveness frontier by removing dominated and extendedly dominated strategies
Takes the names, expected costs and expected QALYs of any number of mutually exclusive strategies and returns the strategies on the cost-effectiveness frontier in cost order with their sequential ICERs, by the conventional elimination that Suen and Goldhaber-Fiebert summarise. It sorts by cost, removes dominated strategies, ties included, with the rule of HE-FM-DOM-002, computes the ratio of each strategy against the one before it, removes the first strategy whose ratio is higher than the next one, as in HE-FM-EXD-001, and recomputes until the ratios rise. The finished ratios are the slopes that HE-FM-CEF-001 reads. The inputs are lists of strategies, not the three named strategies of the formula. The Math / Code line shows one pass for four strategies already in cost order with no strict dominance, and the R and Python versions take any number and repeat the passes.
Inputs and outputs:
name_jis the label of strategy j;C_jis its expected total cost per person, in currency;Q_jis its expected total QALYs per person; in the Math / Code lineC_1toC_4andQ_1toQ_4are four strategies sorted by cost;r_2,r_3andr_4are the ratios of each strategy against the one before it andr_42the ratio of the fourth against the second once the third is removed, in currency per QALY;exd_2andexd_3equal 1 when that strategy's ratio is higher than the next one, so it is extendedly dominated. The R and Python versions return the frontier strategies with their costs, QALYs and sequential ICERs, the cheapest with none.Assumption: Costs and QALYs are expected values per person on one basis. Equal cost with more QALYs, or equal QALYs at lower cost, counts as dominance (HE-AS-DOM-001). Exact duplicates are merged before the call (HE-AS-DOM-004), since the R version would return a missing ratio and the Python version would stop on a division by zero. A strategy whose ratio equals the next one lies on a segment and is kept (HE-AS-EXD-003). The R and Python versions compare ratios with a tolerance of 0.000001, so that equal ratios held in floating point, such as 1.1 minus 1.0 QALYs, are not read as a fall.
Worked example (Four options A to D of the live dominance records): A at GBP 10,000 and 4.0 QALYs, B at GBP 13,000 and 4.3, C at GBP 18,000 and 4.5 and D at GBP 22,000 and 4.8 give ratios of GBP 10,000, 25,000 and about 13,333 per QALY. C's ratio is higher than D's, so C is removed, and D against B is GBP 18,000, which leaves A, B and D, as in HE-EX-EXD-002. At GBP 20,000 per QALY the choice is D, as in HE-EX-NMB-004. The figures are illustrative.
C_1 = 10000; Q_1 = 4.0; C_2 = 13000; Q_2 = 4.3; C_3 = 18000; Q_3 = 4.5; C_4 = 22000; Q_4 = 4.8; r_2 = 10000; r_3 = 25000; r_4 = 13333.33; exd_2 = 0; exd_3 = 1; r_42 = 18000Worked example (Article's six rehabilitation options): R2 is strictly dominated by R1, R3 is removed in the first pass of extended dominance, and R4 against R1 gives GBP 30,000 per QALY, so the frontier is R0, R1, R4 and R5.
frontier = R0, R1, R4, R5; ICER_F = 20000, 30000, 60000Worked example (Four strategies on one straight line): Strategies at GBP 1,000, 2,000, 3,000 and 4,000 with 1.00, 1.25, 1.50 and 1.75 QALYs all have ratios of GBP 4,000 per QALY, so none is removed, a limiting case for the equal-ratio rule.
C_1 = 1000; Q_1 = 1.00; C_2 = 2000; Q_2 = 1.25; C_3 = 3000; Q_3 = 1.50; C_4 = 4000; Q_4 = 1.75; r_2 = 4000; r_3 = 4000; r_4 = 4000; exd_2 = 0; exd_3 = 0; r_42 = 4000Excel:
=IF((C3-C2)/(D3-D2)>(C4-C3)/(D4-D3),"Remove","Keep")With the strategies left after the dominance flag of HE-IM-DOM-002 sorted by cost in rows 2 onwards, costs in column C and QALYs in column D, the formula in row 3, filled down to the second-last strategy, flags the strategy in its own row when its ratio is higher than the next one. Excel has no built-in loop for the repeated removal, so the first flagged row is deleted and the check repeated until, with the ratios in column F and the ranges ending at the last ratio,=SUMPRODUCT(--(F4:F8<F3:F7))=0(HE-VT-CEF-002) returns TRUE.R:
cef_frontier <- function(name, C, Q) { o <- order(C, -Q); name <- name[o]; C <- C[o]; Q <- Q[o]; dom <- sapply(seq_along(C), function(k) any(C <= C[k] & Q >= Q[k] & (C < C[k] | Q > Q[k]))); name <- name[!dom]; C <- C[!dom]; Q <- Q[!dom]; repeat { r <- diff(C)/diff(Q); k <- which(diff(r) < -1e-6); if (length(k) == 0) break; k <- k[1]+1; name <- name[-k]; C <- C[-k]; Q <- Q[-k] }; data.frame(strategy = name, cost = C, qaly = Q, icer = c(NA, diff(C)/diff(Q))) }Returns one row per frontier strategy.f$strategy[max(which(c(0, f$icer[-1]) <= 25000))]then returns the choice at GBP 25,000 per QALY from the result f.Python:
def cef_frontier(name, C, Q): pts = sorted(zip(C, [-q for q in Q], name)); pts = [(c, -nq, n) for c, nq, n in pts]; pts = [p for p in pts if not any(o[0] <= p[0] and o[1] >= p[1] and (o[0] < p[0] or o[1] > p[1]) for o in pts)]; return _cef_exd(pts)with the helperdef _cef_exd(pts): r = [(b[0]-a[0])/(b[1]-a[1]) for a, b in zip(pts, pts[1:])]; k = next((m+1 for m in range(len(r)-1) if r[m] > r[m+1]+1e-6), None); return [(p[2], p[0], p[1], ([None]+r)[i]) for i, p in enumerate(pts)] if k is None else _cef_exd(pts[:k]+pts[k+1:])Plain Python with no imports, returning tuples of name, cost, QALYs and ICER.Test (Both ends of the frontier kept): The cheapest strategy and the strategy with the most QALYs are always on the frontier. Expected result TRUE. Excel check
=AND(INDEX(FrontierCosts,1)=MIN(Costs),INDEX(FrontierQALYs,ROWS(FrontierQALYs))=MAX(QALYs))Test (Four-option example returns the ratio of D against B): After C is removed, D against B gives GBP 18,000 per QALY, and C's ratio was higher than D's. Expected result TRUE. Excel check
=AND(ROUND((22000-13000)/(4.8-4.3),0)=18000,(18000-13000)/(4.5-4.3)>(22000-18000)/(4.8-4.5))Common error (Testing extended dominance before strict dominance): Left in the list, R2 gives a ratio of minus GBP 75,000 per QALY against R1, and the removal rule then drops R1, R2 and R3 in turn. The frontier becomes R0, R4 and R5 with ratios of about GBP 26,667 and 60,000, so at GBP 25,000 the choice is R0 and GBP 500 per person of net monetary benefit is lost against R1 (computed here for illustration).
Source: Suen S, Goldhaber-Fiebert JD. An efficient, non-iterative method of identifying the cost-effectiveness frontier. Medical Decision Making. 2016;36(1) 132-136. Introduction, which describes the conventional algorithm as ordering strategies by ascending cost, eliminating those that cost more but provide less benefit, computing pairwise ICERs and then iteratively discarding strategies whose ICER is higher than that of the following strategy until no more can be eliminated, with recalculation after each removal. 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.10.8 on the fully incremental analysis with dominated and extendedly dominated technologies removed.
r_2 = (C_2 - C_1) / (Q_2 - Q_1); r_3 = (C_3 - C_2) / (Q_3 - Q_2); r_4 = (C_4 - C_3) / (Q_4 - Q_3); exd_2 = r_2 > r_3; exd_3 = r_3 > r_4; r_42 = (C_4 - C_2) / (Q_4 - Q_2)
Try this function
Implementations
Excel
Threshold range check and frontier choice from named cells
The first formula returns TRUE when the value in ValuePerQALY lies within the range of the strategy in CostStrategy and QALYStrategy, with its frontier neighbours in CostLower, QALYLower, CostHigher and QALYHigher. The second returns the chosen strategy from a finished frontier, with names in FrontierNames and ICERs in FrontierICERs sorted by cost and the cheapest strategy's ICER entered as 0. MATCH with match type 1 finds the largest ICER not above the value, which needs the ICERs to rise.
=AND(ValuePerQALY>=(CostStrategy-CostLower)/(QALYStrategy-QALYLower),ValuePerQALY<=(CostHigher-CostStrategy)/(QALYHigher-QALYStrategy)); =INDEX(FrontierNames,MATCH(ValuePerQALY,FrontierICERs,1))
Assumptions
Neighbours taken from the finished cost-effectiveness frontier
Strategies i and j are the adjacent strategies on the frontier after dominated strategies, ties included (HE-FM-DOM-002), and extendedly dominated strategies have been removed (HE-CF-CEF-001), so Q_i is below Q_k, Q_k is below Q_j and costs rise in the same order. Neighbours taken from a list that still holds a dominated strategy give slopes against the wrong comparator and a wrong range.
End strategies of the cost-effectiveness frontier
For the cheapest frontier strategy lambda_in is replaced by zero, since at a value of zero the cheapest strategy has the highest net monetary benefit. For the most effective strategy lambda_out has no upper limit, since as λ grows without limit the strategy with the most QALYs has the highest net monetary benefit (Suen and Goldhaber-Fiebert, section III of the proof).
Expected values for one population on the frontier
Costs and QALYs are expected totals per person for the same population, perspective, time horizon and price year. The range describes the choice on expected values and does not show the probability that the choice is cost effective, which the acceptability frontier of HE-FM-CEAC-003 shows.
Worked examples
Rehabilitation programme R1 chosen at GBP 25,000 per QALY
In the article's illustrative rehabilitation example R1 (GBP 4,000, 5.10 QALYs) lies on the frontier between usual care R0 (GBP 2,000, 5.00 QALYs) and R4 (GBP 10,000, 5.30 QALYs). The segment entering R1 has a slope of GBP 20,000 per QALY and the segment leaving it GBP 30,000, so R1 is chosen at GBP 25,000, where its net monetary benefit of GBP 123,500 is the highest of the six options in the article's table.
C_i = 2000; Q_i = 5.00; C_k = 4000; Q_k = 5.10; C_j = 10000; Q_j = 5.30; lambda = 25000; lambda_in = 20000; lambda_out = 30000; best = 1
Rehabilitation programme R4 chosen at GBP 35,000 per QALY
R4 lies on the frontier between R1 and R5 (GBP 19,000, 5.45 QALYs), with slopes of GBP 30,000 and GBP 60,000 per QALY into and out of it, so it is chosen at GBP 35,000, where its net monetary benefit of GBP 175,500 is the highest in the article's table. The figures are illustrative.
C_i = 4000; Q_i = 5.10; C_k = 10000; Q_k = 5.30; C_j = 19000; Q_j = 5.45; lambda = 35000; lambda_in = 30000; lambda_out = 60000; best = 1
Empty threshold range for the extendedly dominated programme R3
Applied to R3 (GBP 9,000, 5.20 QALYs) with R1 and R4 either side, the slope into R3 is GBP 50,000 per QALY and the slope out of it GBP 10,000, so no value per QALY satisfies both conditions. At GBP 30,000, the switching value between R1 and R4, R3 is not chosen, and the same result holds at every value, as the article's line test shows. R3 is extendedly dominated, since D_M of HE-FM-EXD-001 is GBP 40,000 per QALY.
C_i = 4000; Q_i = 5.10; C_k = 9000; Q_k = 5.20; C_j = 10000; Q_j = 5.30; lambda = 30000; lambda_in = 50000; lambda_out = 10000; best = 0
Common errors
Reading the frontier choice from ratios against usual care
Against usual care alone R3 has a ratio of GBP 35,000 per QALY, which could look acceptable at GBP 35,000, yet its range is empty and the choice at that value is R4. Choosing R3 there gives up GBP 2,500 per person of net monetary benefit, GBP 173,000 against GBP 175,500.
Applying the largest-ICER rule before extended dominance is removed
With R2 removed but R3 still in the list, the ratios in cost order are GBP 20,000, 50,000, 10,000 and 60,000 per QALY. At GBP 35,000 the largest ratio not above the value is R1's GBP 20,000, so the rule picks R1 instead of R4 and gives up GBP 1,000 per person (computed here for illustration from the article's table). The rule holds only on a finished frontier whose ratios rise.
Sources
Suen and Goldhaber-Fiebert on the threshold range of a frontier strategy
Suen S, Goldhaber-Fiebert JD. An efficient, non-iterative method of identifying the cost-effectiveness frontier. Medical Decision Making. 2016;36(1) 132-136. Introduction, which states that the optimal decision is the strategy with the highest ICER at or below the threshold willingness to pay, and section II of the proof, equation 7 and the text after it, which state that λ must be larger than the slope from i to k and smaller than the slope from k to j. Section III shows that no such λ exists for a strategy above the line joining its neighbours, and treats the lowest-cost strategy at a value of zero and the highest-QALY strategy as the value grows without limit.
NICE PMG36 on the fully incremental analysis behind the frontier
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.10.8, which asks for results in a fully incremental analysis with dominated technologies and extendedly dominated technologies, where a combination of 2 or more other technologies would be more cost effective, removed, and section 4.2.16 on standard decision rules reflecting dominance and extended dominance.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0
