Methodology

How we turn official EU customs statistics into a cleaned benchmark price for a product, and how reliable each figure is.

In short

  • We use Eurostat Comext, the official EU trade statistics. The European Commission cites the same public statistics for import volumes and average import prices in its trade defence regulations.
  • Screening and aggregation follow the methods the IMF and OECD manuals describe for import prices, with Eurostat's own validation tests and the robust estimation the EU Joint Research Centre published for customs fair prices.
  • You can compare your price the way an analyst would with this data: against a cleaned benchmark, with its uncertainty.
  • Our figures are statistical benchmarks. They are not dumping margins, customs values or legal determinations, and no EU body endorses this service.

The data

Every figure starts from monthly import declarations aggregated by Eurostat: the value (in euros, at the EU border) and the quantity of one product code (CN8) imported into one EU country from one origin country in one month. We use kilograms, or pieces (pairs, litres …) where the customs code records them; the two are never mixed. Months without data are gaps, often for confidentiality, never zeros.

What a price includes

All prices are the value of the goods delivered to the border of the importing country, as customs statistics record it (a CIF-type value):

  • Included: the price of the goods, and freight and insurance up to the border. For imports from outside the EU this is the EU's external border (for example sea freight from China to Rotterdam); for trade between EU countries, the border of the receiving country.
  • Not included: import duty, VAT and excise duties, transport and handling after the border, and the margins of importers and wholesalers.

That is why every price is labelled “at the border”. A price you pay delivered to your door includes more than that, and a product with import duty costs more than the figure shown by the duty rate.

All EU means imports into the 27 member states from countries outside the EU. With the switch “Include EU-to-EU trade”, goods one member state sends to another count too. For that trade the country shown is the member state that sent the goods, not necessarily where they were made: chairs made in China that reach Sweden through a warehouse in the Netherlands count as sent from the Netherlands.

1. Screening

Before anything is averaged, every monthly figure of every trade route is checked with Eurostat's validation tests:

  • Year test: a month's price must lie between a quarter and four times the same route's average of the previous year. A tenfold jump is almost always a mis-declared quantity.
  • Month test: a route's change from last month is compared with the median change of the largest routes of the product. A route that moves more than twice as much (or half as much) as the market, also against two months back, is set aside.

Large flows (over 10% of a month's quantity) are never set aside automatically, as the OECD recommends. Figures that are set aside are counted and shown, not silently deleted, as the IMF manual asks. We never treat a country or origin that steadily pays less as an error: that is exactly what you want to see.

2. Estimation

The benchmark price comes from a regression of value on quantity through the origin, as the EU Joint Research Centre does for customs fair prices. Observations that do not fit are found with a backward search (a statistical test on each observation, with a Bonferroni correction) and left out; large flows are protected. Each observation is weighted by its quantity, so the price equals total value ÷ total quantity of the observations kept: the unit value that Eurostat and OECD indices use.

  • For one trade route (a country and an origin), each month is one observation.
  • For the whole EU, each member state is one observation, so one large country cannot drown the others.
  • Changes over time compare the last 12 months with the 12 before, and the last 3 months with the same months a year earlier. For all origins together we use a Fisher price index across the origins, so a shift from cheap to expensive origins is not reported as a price change.

3. How reliable is it?

Every benchmark shows how it was calculated and how far it can be trusted:

  • 95% interval of the price, and the fit (R²; below 0.7 means use with caution).
  • Observations used and left out, and the share of the trade value the figure rests on.
  • Normal variation: how much the price usually moves from month to month. A change between two periods is marked as within normal variation when it is smaller than twice that movement, scaled down for longer periods (an average of 12 months varies much less than a single month).
  • Agreement: in how many EU countries the price moved the same way.
  • Warnings when a customs code mixes very different goods, or when the weight per piece shifts (a change in what is bought, not only in price).
  • A summary label: Reliable (interval within ±5%, good fit, at least 80% of the trade used), Fairly reliable (within ±15%) or Use with care.

4. Comparing your price

Your price is compared as you give it, with no adjustment. Market prices are at the border, so a price delivered to your door naturally sits somewhat higher: it also pays for transport, handling and margins after the border. Your price is placed among the market's monthly prices of the last 12 months, and your own change since a date you give is compared with the market's change over the same months.

Our own rules

The methods above come from the IMF, the OECD, Eurostat and the EU Joint Research Centre. The choices below are ours: they are not taken from those sources, and we show them so you can judge them.

  • Normal variation. With m the median month-to-month movement of the price, a change between two periods of k months each is within normal variation when it is smaller than 2 × m × √(2/k). When m is unknown the band is ±5%.
  • Reliability labels. Reliable: the 95% interval is within ±5% of the price, R² is at least 0.7 and at least 80% of the trade value is used. Fairly reliable: within ±15% and R² at least 0.5. Use with care: everything else, and any benchmark from fewer than 3 observations.
  • Price position labels. Your price is within the typical range between the 25th and 75th percentile of the monthly prices (P25–P75); below it under P25; above it over P75; well above it over P90 or over 1.5 × P75. With fewer than 12 months of data, or on a route with grade D, we say there is not enough data.
  • Route grades A–D (data quality of a trade route, from the last 12 months): A when the price varies less than 10% (coefficient of variation), the route has at least 24 months of data and at least €500,000 of imports; B under 20%, 18 months and €100,000; C under 40% and €20,000; D otherwise. A route whose typical price per kg is below €0.02, above €50,000, or more than ten times off the median of its product code cannot get A or B.
  • Large-flow protection. Flows over 10% of the quantity are never set aside automatically, in screening (in months with at least five flows) or in the robust estimation. The OECD recommends checking large flows by hand; we measure the share on quantity rather than value, so that a mis-priced flow cannot protect itself through its inflated value.
  • Minimum data for a change. A change over time is shown only when both periods rest on at least 6 monthly figures (one trade route) or at least 3 countries (member states or origins pooled together).
  • The older average curve. Where no cleaned monthly benchmark is stored, the price curve is the average import price: total value ÷ total quantity over the 15 largest origins by value, and a month is shown only when the origins that reported it carry at least half of the 12-month import value.
  • Supplier report. Each product is compared first with the benchmark from all origins, and next to it with the one from its production country (only that one where no all-origins benchmark exists). The overall figure is a volume-weighted average of the products' positions when every product has a volume (by yearly spend, units per year × your price, or by the share of volume you give), otherwise a simple average; the report says which.
  • Products far from the others. In a list of your products, a product whose position (your price ÷ benchmark) is far from the others is marked and left out of the average: from four products, a robust z-score above 3 on the log of the ratio (median and median absolute deviation); from three, a ratio more than 3× off the median. This usually means a price in the wrong unit or a very special product. It is never applied to a majority of the list.
  • Per kg and per piece. Every product code has a benchmark per kg. A benchmark per piece (or pair, litre …) is added wherever a stable volume reports that unit: at least 6 months of a trade route, or 3 countries or origins together, however small a share of the total trade that is. The two are never mixed; each shows the share of the trade it rests on, and where both exist they are shown side by side. Your price is compared in your own unit first.

Data we keep

When you prepare a report for a supplier, your prices, volumes and the supplier's name stay in your browser. The supplier's name is printed on the report only and is never sent to us. To look up the benchmarks, we receive only the product codes, the countries, and the currencies and months of your prices.

In the free version we keep one anonymous line per compared product in a table of price contributions (premium access, when it opens, will keep nothing):

  • the product code, the importing country, the production country and the month the price was set;
  • how your price compared with the benchmark, in percent;
  • a coarse volume band (for example 1,000–10,000 kg a year, or 10–25% of your volume);
  • which benchmark it was compared with (the production country or all origins, its unit, its 12-month window and method version), and when the line was saved.

We never keep who you are, who the supplier is, or what you actually pay: no name, no account, no IP address, no price, no currency and no quantity. The table cannot be read publicly. Any figure we ever show from these contributions will rest on at least 5 contributions; with fewer we show nothing, not even the count.

Sources

Method version bm-2026-09-v1.