Methodology — Allsupers A-brand Price Index (AAPI)
The Allsupers A-brand Price Index (AAPI) tracks the weekly average price of a fixed basket of 39 packaged national-brand products across UK supermarkets. Below: scope, basket, weighting formula, weights, and stability rules.
Scope: A-brand packaged-grocery index, not ONS-representative
AAPI is an A-brand packaged-grocery index, not a full ONS-representative price index. Four ONS categories are deliberately excluded because they have too few national brands with adequate retailer coverage:
- Meat (ONS weight 19.3 %) — house brands dominate.
- Vegetables (14.5 %) — idem.
- Fruit (7.4 %) — idem.
- Fish (3.5 %) — idem.
Combined, these represent about 44.7 % of the original ONS supermarket weight. The weights of the included 8 categories are renormalised over those 8 — standard practice for CPI-style imputation. This index must not be cited as a measure of fresh-food prices.
Basket (v1, locked 2026-05-15)
39 representative packaged national-brand products spread across 8 ONS-aligned categories (bread and cereals, milk/cheese/eggs, non-alcoholic beverages, sugar/sweets, household, personal care, oils/fats, food products n.e.c.). At most 2 entries per brand per category to prevent single-brand dominance. Items must have a GTIN, a normalisable quantity, and be present at ≥ 4 retailers with a current price at lock-time.
Formula: weighted geometric mean (Jevons variant)
I_t = 100 × exp( Σ_i w_i · ln(P_i_t / P_i_base) / Σ_i w_i )
Pi_t = mean price per kg or per litre of product i in week t, averaged over all retailers where it is in stock. Pi_base = the same in the base period (December 2025). wi = the ONS-style category weight. The weighted geometric mean is the standard for CPI-type indices because it treats relative price changes symmetrically.
Error margin
Each weekly point is published together with an analytic standard error (SE) of the weighted log-mean, derived from cross-retailer spread in log-prices per item. SE is an under-estimate while many items have only one retailer observation.
Base period and provisional marker
Base period: December 2025 = 100. Base prices are pre-computed from the SCD2 price history at the end of December 2025 (per (product, retailer) the price that was current at that moment) and locked into the basket file — historical index points are therefore reproducible.
Until 12 months of history are available, every point is flagged provisional. From December 2026 the marker is removed and the index can be cited as a year-on-year comparison.
Weekly sampling rule
For every week, we sample one observation per (product, retailer): the price that was current at end of Sunday 23:59:59 UTC. This is the "weekly snapshot" rule standard in CPI-style indices. Mid-week price changes are not captured by this rule.
Stability and publication rules
The index is append-only per methodology_version. A week ever published under v1 is never retrospectively re-computed. Basket changes ship as v2; v1 stays queryable for verification. Cross-version differences are documented on this page.
Reproducibility
Every published index point preserves the per-item price contributions in the database column contributions_json. Researchers can independently verify any week from the published basket (see dataset page) and the formula above.
Questions or corrections? Email research@allsupers.co.uk.