Basket mean, lowest and highest price from five converted reference prices

Combines the converted prices c_1 to c_5 of a five-country basket, each from HE-FM-BOC-001, into the mean, the lowest and the highest price, three of the aggregation rules f in the article's P_ref. Kanavos and colleagues report that the lowest price in the basket is often used and that the average or the median is not uncommon, and Rémuzat and colleagues found the average price in use in 15 European countries and the lowest price in 7. The highest price is the PMPRB's highest international price. The median, baskets of other sizes and countries without a price are handled by HE-CF-BOC-002, and HE-FM-BOC-004 turns a reference price into a ceiling.

Signature

P_mean = (c_1 + c_2 + c_3 + c_4 + c_5) / 5; P_low = min(min(min(min(c_1, c_2), c_3), c_4), c_5); P_high = max(max(max(max(c_1, c_2), c_3), c_4), c_5)
Inputs
InputsDefinitionUnit
c_1Price in the first basket country converted to the home currency with HE-FM-BOC-001home currency per unit
c_2Price in the second basket country converted to the home currency with HE-FM-BOC-001home currency per unit
c_3Price in the third basket country converted to the home currency with HE-FM-BOC-001home currency per unit
c_4Price in the fourth basket country converted to the home currency with HE-FM-BOC-001home currency per unit
c_5Price in the fifth basket country converted to the home currency with HE-FM-BOC-001home currency per unit
Output
P_meanArithmetic mean of the five converted basket priceshome currency per unit
P_lowLowest of the five converted basket priceshome currency per unit
P_highHighest of the five converted basket prices, the highest international price in the PMPRB's termshome currency per unit

Function

Basket-of-countries reference price and currency conversion function

Maps the prices of one medicine observed in a basket of reference countries, each in its own currency, and the exchange rates or purchasing power parities that express them in one currency, to a domestic reference price under an aggregation rule and to a ceiling for a proposed domestic price. The same conversions move any cost record between currencies. A cost from another year is first moved to the common price year with the live price-year adjustment HE-FM-COST-002 of the resource costing function HE-FN-COST-001, and the index itself belongs to the Consumer Price Index concept. A basket price reflects what other countries list, while the economically justifiable price HE-FM-EJP-001 and the break-even price HE-FM-BEA-001 give the highest price at which a technology is cost-effective at home. Notation follows the Basket of Countries article.

Computational function

  • Computational function for a basket reference price and ceiling with countries that have no price

    Takes the prices and exchange rates of any number of basket countries, a flag for whether each country has an observed price, a ceiling multiplier and a proposed domestic price, and returns the number of priced countries, their mean, median, lowest and highest converted price, the ceiling of HE-FM-BOC-004 and the margin of the proposed price over it. Countries without a price drop out of every aggregate, which is how the article's launch-sequencing case raises the ceiling. The calculator line covers five countries and the mean; the R and Python code take any number of countries and also return the median. The inputs therefore differ from the formula's variables, which assume five priced countries.

    Inputs and outputs: p_i and e_i are the price and rate of country i (HE-FM-BOC-001) and c_i the converted price. d_i is 1 when country i has an observed price and 0 when it does not. k is the ceiling multiplier and P_prop the proposed domestic price. n is the number of priced countries, P_mean their mean, T the ceiling and D the margin of the proposed price over the ceiling, positive when the price is above it.

    Assumption: At least one country has a price, so n is 1 or more. A country without a price is a missing observation, not a price of zero, and the rule for missing prices is stated with the basket, as the article recommends. The prices are the article's illustrative prices, already in the home currency, so every e_i is 1.

    Worked example (Basket B before the country priced at 70 launches): As in the article, the four observed prices give a mean of 96.25 and a ceiling of 120.3125, and the proposed price of 130 is 9.6875 above it. The median of the four is 97.5 (computed here for illustration). d_1 = 0; c_1 = 70; d_2 = 1; c_2 = 80; d_3 = 1; c_3 = 95; d_4 = 1; c_4 = 100; d_5 = 1; c_5 = 110; k = 1.25; P_prop = 130; n = 4; P_mean = 96.25; T = 120.3125; D = 9.6875

    Worked example (Basket B after launch): With all five prices observed the ceiling falls to 113.75 and the margin rises to 16.25; the median is 95. d_1 = 1; c_1 = 70; d_2 = 1; c_2 = 80; d_3 = 1; c_3 = 95; d_4 = 1; c_4 = 100; d_5 = 1; c_5 = 110; k = 1.25; P_prop = 130; n = 5; P_mean = 91; T = 113.75; D = 16.25

    Worked example (Basket A): The proposed price is 1.25 below the ceiling and is accepted; the median is 100. d_1 = 1; c_1 = 80; d_2 = 1; c_2 = 95; d_3 = 1; c_3 = 100; d_4 = 1; c_4 = 110; d_5 = 1; c_5 = 140; k = 1.25; P_prop = 130; n = 5; P_mean = 105; T = 131.25; D = -1.25

    Excel: With the flags in ObservedFlags and the converted prices in ConvertedPrices, =SUMPRODUCT(ObservedFlags,ConvertedPrices)/SUM(ObservedFlags) returns the mean into BasketMeanObserved and =CeilingMultiplier*BasketMeanObserved the ceiling into BasketCeilingObserved. For the median a helper column holds =IF(D2=1,C2,"") for each country, with the flag in column D and the converted price in column C, and =MEDIAN(HelperPrices) over that column returns BasketMedianObserved, since MEDIAN skips text.

    R: basket_ref <- function(p, e, d, k, proposed) { c_obs <- (p*e)[d == 1]; m <- mean(c_obs); list(n = length(c_obs), mean = m, median = median(c_obs), lowest = min(c_obs), highest = max(c_obs), ceiling = k*m, margin = proposed-k*m) } Returns a named list.

    Python: def basket_ref(p, e, d, k, proposed): c = sorted(pi*ei for pi, ei, di in zip(p, e, d) if di == 1); n = len(c); m = sum(c)/n; med = (c[(n-1)//2]+c[n//2])/2; return n, m, med, c[0], c[-1], k*m, proposed-k*m Plain Python with no imports, returning a tuple in the order of the outputs.

    Test (Launch-sequencing ceiling reproduced): With the first worked example's inputs BasketCeilingObserved is 120.3125. Expected result TRUE. Flagging the unlaunched country as observed with a price of 0 gives a mean of 77 and a ceiling of 96.25, and keeping its price of 70 gives 113.75; either makes it FALSE. Excel check =ABS(BasketCeilingObserved-120.3125)<1E-9

    Test (Median of the priced countries): With the same inputs BasketMedianObserved is 97.5. Expected result TRUE. Leaving the unlaunched country's 70 in the helper column gives 95 and makes it FALSE. Excel check =ABS(BasketMedianObserved-97.5)<1E-9

    Common error (Launch order ignored when comparing ceilings): Taking Basket B's ceiling as 113.75 while the country priced at 70 has not launched understates it by 6.5625, against 120.3125, and puts the margin of the proposed price of 130 at 16.25 instead of 9.6875, the effect of launch order that the article describes.

    Source: Rémuzat C, Urbinati D, Mzoughi O, El Hammi E, Belgaied W, Toumi M. Overview of external reference pricing systems in Europe. Journal of Market Access and Health Policy. 2015;3:27675. Section Potential consequences of ERP, subsection Patient access to medicines, on launch sequence strategies used to delay or avoid launching new drugs in countries with potentially lower prices. Kanavos P, Fontrier AM, Gill J, Efthymiadou O. Does external reference pricing deliver what it promises? Evidence on its impact at national level. European Journal of Health Economics. 2020;21(1):129-151. Introduction, on the lowest price, the average and the median as reference-price rules.

    n = d_1 + d_2 + d_3 + d_4 + d_5; P_mean = (d_1 * c_1 + d_2 * c_2 + d_3 * c_3 + d_4 * c_4 + d_5 * c_5) / n; T = k * P_mean; D = P_prop - T

Try this function

Implementations

  • Excel

    Basket aggregates from a named range of converted prices

    With the five converted prices in the range BasketPrices, the four formulas return the values held in BasketMean, BasketLowest, BasketHighest and BasketMedian. AVERAGE, MIN, MAX and MEDIAN skip blank cells, so a country without a price is left blank, never set to zero.

    =AVERAGE(BasketPrices); =MIN(BasketPrices); =MAX(BasketPrices); =MEDIAN(BasketPrices)

Assumptions

  • Same product and price type across the basket

    Every c_i is for the same strength and dosage form, as in the PMPRB definition of the highest international price, and for the same price type. Kanavos and colleagues report that ex-factory prices are mostly used and that pricing authorities rely mostly on list prices rather than transaction prices, so confidential discounts are not reflected.

  • All five basket countries priced

    Each of the five countries has a price. The article treats a missing price as informative, since it may reflect a delayed launch, so a country without a price is dropped from the count, as HE-CF-BOC-002 does, never entered as a zero.

Worked examples

  • Article's Basket A mean, lowest and highest prices

    Basket A of the article, 80, 95, 100, 110 and 140, has a mean of 105, a lowest price of 80 and a highest price of 140 (illustrative prices already in the home currency).

    c_1 = 80; c_2 = 95; c_3 = 100; c_4 = 110; c_5 = 140; P_mean = 105; P_low = 80; P_high = 140
  • Article's Basket B mean, lowest and highest prices

    Basket B drops the country priced at 140 and adds one priced at 70, so the mean falls to 91, the lowest price to 70 and the highest to 110, as in the article.

    c_1 = 70; c_2 = 80; c_3 = 95; c_4 = 100; c_5 = 110; P_mean = 91; P_low = 70; P_high = 110
  • Basket with one common price

    When all five countries list the same converted price the three aggregates are equal, a limiting case that checks an implementation.

    c_1 = 100; c_2 = 100; c_3 = 100; c_4 = 100; c_5 = 100; P_mean = 100; P_low = 100; P_high = 100

Common errors

  • Missing basket price entered as zero

    Recording the unlaunched country of Basket B as 0 gives a mean of 77 and a lowest price of 0, against 96.25 and 80 when it is left out, and a ceiling at 1.25 times the mean of 96.25 in place of 120.31 (computed here for illustration).

  • Larger basket assumed to give a lower reference price

    Adding a sixth country priced at 130 to Basket A raises the mean from 105 to about 109.17 while the lowest price stays at 80 (computed here for illustration). Under a lowest-price rule an added country can never raise the benchmark, as the article notes, while under the mean or the median it can.

Sources

  • Kanavos and colleagues on list prices and aggregation rules in external reference pricing

    Kanavos P, Fontrier AM, Gill J, Efthymiadou O. Does external reference pricing deliver what it promises? Evidence on its impact at national level. European Journal of Health Economics. 2020;21(1):129-151. Introduction, which states that ex-factory prices are used in the majority of cases and that pricing authorities rely mostly on list prices rather than transaction prices, and that the lowest price in the basket is often used but the average or the median is not uncommon.

    View source →

  • Rémuzat and colleagues on basket calculation methods in Europe

    Rémuzat C, Urbinati D, Mzoughi O, El Hammi E, Belgaied W, Toumi M. Overview of external reference pricing systems in Europe. Journal of Market Access and Health Policy. 2015;3:27675. Abstract results, 15 countries using the average price, 7 the lowest price and 7 other methods, with baskets of 1 to 31 countries; and the Results subsection Main calculation methods, which names the average price, the average of the three or four lowest prices and the lowest price among the reference countries.

    View source →

  • PMPRB definition of the highest international price

    Patented Medicine Prices Review Board. Guidelines for PMPRB Staff, in effect 1 January 2026. Glossary, which defines the highest international price (HIP) as the highest price of the same strength and dosage form of the same patented medicine among the Schedule Countries.

    View source →

Canonical Identity

Basket mean, lowest and highest price from five converted reference prices | HealthEconomics.wiki