Methodology — Stealth price hikes

We flag a “stealth price hike” when a retailer ends a temporary promotion and the subsequent regular price sits more than 5% abovethe median price of the four weeks before the promotion. In short: the promotion ends, but the “new normal” sits above the old one.

1. How is the baseline determined?

For each retailer product we look at every non-promotional price row in the 35 days before the promotion ended, excluding a 7-day buffer around the promotion itself. We require at least 2 distinct rows covering a span of at least 21 days, and take the median across them. A single possibly-mis-scraped outlier therefore cannot define the baseline.

2. Threshold

An event is only recorded when the first non-promotional price after the promotion ends is at least 1.05x the baseline. Below that we treat the change as noise.

3. Per-retailer filter rules

Some promotions are structurally different from a classic price cut — loyalty card discounts, price-match guarantees, multibuy promotions — so we exclude them at the detector layer to avoid generating false stealth-hike events when they end.

  • Morrisons: promotions with the text More Card, Price Match, Buy N for £M, Any N for £M or Meal Deal are excluded.
  • Sainsbury's: excluded entirely — the per-price-row Nectar signal we receive is not yet safe to publish on. Will be re-evaluated once ISS-304 lands.
  • Tesco + ASDA: currently emit no live is_promotion=true rows in our scrape data; no filter clause is needed (ISS-305).
  • Waitrose + UK Aldi: included with no filter; re-evaluated at the D+30 audit if false-positive rate rises.

4. Examples

Example 1 — Dirk Sana First-Aid Plasters (NL)

  • Baseline (4-week median): €0.99
  • Promotion price: €0.39
  • New base after promo: €1.49
  • Real hike: +50.5% vs the baseline.

Example 2 — Morrisons Fruit Shoot Squash 750ml (UK)

  • Baseline (4-week median): £1.50
  • Promotion price: £0.75
  • New base after promo: £1.88
  • Real hike: +25.3% vs the baseline.

5. Verification cadence

The editorial team verifies new detections weekly. If the most recent verification is older than 14 days, a notice on the public page surfaces that a new verification batch is pending. The list only shows verified events — unverified detections are structurally unreachable via the public API.

6. No retrospective backfill

Detections are forward-only from the monitor's registration date (2026-05-16). Historical events from earlier months are not automatically added; they were detected under earlier, less thoroughly tested filter rules and therefore are not publishable without per-event operator verification.

7. What is not detected?

  • Cost-pass-through inflation (a commodity price rises and every retailer lifts the base simultaneously). That is not a stealth hike in our definition.
  • Price-per-unit comparisons across package sizes — those belong to the shrinkflation monitor.
  • Competitor benchmarking (“retailer A is more expensive than retailer B for product Z”).