Signature
BCR_YX = (PVB_Y - PVB_X) / (PVC_Y - PVC_X)
| Inputs | Definition | Unit |
|---|---|---|
PVB_Y | Present value of monetised benefits of option Y | currency in the stated price year, £ million in the examples |
PVB_X | Present value of monetised benefits of option X | the same currency basis as PVB_Y |
PVC_Y | Present value of costs of option Y, greater than PVC_X | the same currency basis as PVB_Y |
PVC_X | Present value of costs of option X | the same currency basis as PVB_Y |
BCR_YX | Incremental benefit-cost ratio of option Y over option X, written BCR_{Y,X} in the article | ratio |
|---|
Function
Benefit-cost ratio comparison and classification function
Maps the present values of monetised benefits and costs of one or more options, split where needed by how consequences are classified and by who bears the costs, to ratio summaries and to their link with net present value. The basic ratio and net present value are given under cost-benefit analysis (HE-FM-CBA-002 and HE-FM-CBA-001); PVB and PVC on this page are the same quantities as PV_B and PV_C there. The formulas below relate the ratio to net present value, apply it between mutually exclusive options, and show how the classification of savings, transfers and costs outside the public sector changes it.
Computational function
Computational function: sequential incremental benefit-cost comparison of mutually exclusive options
Takes the present-value benefits and costs of any number of mutually exclusive options, including doing nothing, and returns the option with the largest net present value by applying the incremental ratio HE-FM-BCRX-002 step by step. The options are sorted by cost; the cheapest becomes the current choice, and each more costly option replaces it only if its incremental ratio over the current choice exceeds one. The inputs are lists of options rather than the two named options X and Y of the formula, and each comparison is made against the current choice, not against the next cheaper option.
Inputs and outputs:
PVB_j: Present value of monetised benefits of option j, zero for doing nothing; required. Unit: £ million.;PVC_j: Present value of costs of option j, under the same classification for every option; required. Unit: £ million.;BCR_jd: Incremental ratio of option j over the current choice d at each step, returned as an intermediate output. Unit: ratio.;d: Chosen option. Unit: option label.;NPV_d: Net present value of the chosen option, PVB_d minus PVC_d. Unit: £ million.Assumption: The options are mutually exclusive and are all described with the same classification of savings, transfers and costs. Where two options have the same cost, the one with the larger benefits is placed first and the other cannot replace it.
Worked example (Base case with savings counted as benefits): Doing nothing, X and Y are sorted by cost. X over doing nothing gives 8.0/4.0 = 2.0, so X becomes the current choice; Y over X gives 6.0/5.0 = 1.2, so Y replaces it.
PVB_j = (0, 8.0, 14.0); PVC_j = (0, 4.0, 9.0); BCR_jd = (2.0, 1.2); d = Y; NPV_d = 5.0Worked example (Cost-saving variant with savings counted as benefits): With X averting £4.5 million of treatment costs, X over doing nothing gives 9.5/4.0 = 2.375 and Y over X gives 4.5/5.0 = 0.9, so X is kept.
PVB_j = (0, 9.5, 14.0); PVC_j = (0, 4.0, 9.0); BCR_jd = (2.375, 0.9); d = X; NPV_d = 5.5Worked example (Cost-saving variant with savings netted off costs): Netted, X has a cost of minus £0.5 million and sorts below doing nothing, so it starts as the current choice. Doing nothing over X gives a ratio of minus 10 and Y over X gives 4.0/4.5 = 0.89, so X is kept with the same net present value as in the gross version, although its own netted ratio is negative.
PVB_j = (5.0, 0, 9.0); PVC_j = (-0.5, 0, 4.0); BCR_jd = (-10, 0.89); d = X; NPV_d = 5.5Excel:
=REDUCE(1,SEQUENCE(ROWS(Costs)-1,1,2),LAMBDA(best,k,IF(INDEX(Costs,k)>INDEX(Costs,best),IF((INDEX(Benefits,k)-INDEX(Benefits,best))/(INDEX(Costs,k)-INDEX(Costs,best))>1,k,best),best)))In Excel 365, with the options sorted by ascending cost (ties with larger benefits first) in ranges named Benefits and Costs, the formula returns the row of the chosen option within the ranges.R:
choose_option <- function(pvb, pvc) { o <- order(pvc, -pvb); d <- o[1]; for (j in o[-1]) if (pvc[j] > pvc[d] && (pvb[j]-pvb[d]) / (pvc[j]-pvc[d]) > 1) d <- j; d }Returns the position of the chosen option in the input vectors, which need not be sorted.Python:
def choose_option(pvb, pvc): return functools.reduce(lambda d, j: j if pvc[j] > pvc[d] and (pvb[j]-pvb[d]) / (pvc[j]-pvc[d]) > 1 else d, sorted(range(len(pvc)), key=lambda j: (pvc[j], -pvb[j])))Uses functools.reduce over the options sorted by cost and returns the index of the chosen option.Test (Chosen option has the largest net present value): The option returned by the procedure has the largest net present value of all the options listed. Expected result: TRUE. Excel check:
=INDEX(Benefits-Costs,ChosenRow)=MAX(Benefits-Costs)Test (Chosen option never has a negative net present value): Because doing nothing is listed with zero benefits and zero costs, the procedure never returns an option whose costs exceed its benefits. Expected result: TRUE. Excel check:
=INDEX(Benefits-Costs,ChosenRow)>=0Common error (Ranking the options by their own ratios): Picking the option with the highest ratio against doing nothing selects X in the base case, with a ratio of 2.0 against 1.56, and loses £1.0 million of net present value. Comparing each option with the next cheaper option rather than with the current choice can also select an option that loses to an earlier one.
Source: Office of Management and Budget. Circular A-4: Regulatory Analysis. 17 September 2003, reinstated 2025. Section D (Analytical Approaches), subsection on benefit-cost analysis, which identifies the alternative that maximises net benefits by measuring the incremental benefits and costs of successively more stringent alternatives.
sort options by PVC_j ascending; d = cheapest option; for each later option j: BCR_jd = (PVB_j - PVB_d) / (PVC_j - PVC_d); d = j if PVC_j > PVC_d and BCR_jd > 1; NPV_d = PVB_d - PVC_d
Try this function
Implementations
Excel
Incremental benefit-cost ratio in one cell
With named cells for each option's present-value benefits and costs, Excel returns the incremental ratio, or #N/A when option Y does not cost more than option X.
=IF(CostsY>CostsX,(BenefitsY-BenefitsX)/(CostsY-CostsX),NA())
Assumptions
Mutually exclusive options with the larger option costing more
Only one of X and Y can be adopted, and PVC_Y is greater than PVC_X. A ratio above one then favours Y; if the labels are swapped so that the first-named option is the cheaper one, a ratio above one favours the other option.
One classification for both options in an incremental ratio
Savings, transfers and costs are classified the same way for both options. The value of the incremental ratio still depends on the classification, but whenever the incremental cost is positive under each classification, its comparison with one does not.
Worked examples
Catch-up vaccination over routine vaccination with savings as benefits
Counting averted treatment costs as benefits, option Y has benefits of £14.0 million and costs of £9.0 million, and option X has £8.0 million and £4.0 million. The incremental ratio is 1.2, so Y has the higher net present value although X has the higher average ratio (2.0 against 1.56).
PVB_Y = 14.0; PVB_X = 8.0; PVC_Y = 9.0; PVC_X = 4.0; BCR_YX = 1.2
Catch-up vaccination over routine vaccination with savings netted off costs
Netting averted costs off programme costs, option Y has benefits of £9.0 million and net costs of £4.0 million, and option X has £5.0 million and £1.0 million. The incremental ratio is about 1.33, again above one, so the choice of Y does not depend on the classification.
PVB_Y = 9.0; PVB_X = 5.0; PVC_Y = 4.0; PVC_X = 1.0; BCR_YX = 1.33
Catch-up vaccination when routine vaccination averts more treatment costs
In the article's cost-saving variant, option X averts £4.5 million of treatment costs, so counted gross it has benefits of £9.5 million. The incremental ratio of Y over X falls to 0.9, below one, and X becomes the better option with a net present value of £5.5 million against £5.0 million.
PVB_Y = 14.0; PVB_X = 9.5; PVC_Y = 9.0; PVC_X = 4.0; BCR_YX = 0.9
Common errors
Choosing between exclusive options by their average ratios
Picking the option with the higher ratio against doing nothing selects X in the article's base case (2.0 against 1.56 counted gross, 5.0 against 2.25 netted) and gives up £1.0 million of net present value. The choice between exclusive options rests on the incremental ratio or on net present value.
Sources
Circular A-4 on incremental benefits and costs of successive alternatives
Office of Management and Budget. Circular A-4: Regulatory Analysis. Washington, DC: Executive Office of the President; 17 September 2003, reinstated 2025. Section D (Analytical Approaches), subsection on benefit-cost analysis, which measures incremental benefits and costs of successively more stringent alternatives to identify the one that maximises net benefits, and states that the ratio of benefits to costs is not a meaningful indicator of net benefits.
Canonical Identity
Stable URI · Machine-readable · Resolvable · CC BY 4.0