methods status: spec v00.02.00 complete · public pre-registration: Oct 2026 · external review before first print

The formal object

Methods

The Restoration Index is a conditional replication-cost index in characteristics space: freeze the attribute vector of what a household actually bought last year, and price the cheapest bundle on today's same-seller menu that weakly dominates it. The Restoration Gap is that index minus the matching official CPI series.

The primitive

C(z; t) = min over q ≥ 0 of  Σ p_jt·q_j
          s.t.  Σ a_j·q_j ⪰ z    (attribute-wise weak dominance)
                same seller       (headline; cross-seller as sensitivity)

link relative   ρ_t(e) = C(z_e; t) / C(z_e; t−1)
Gap             G_t = Σ w_i [ ρ_t(i) − π_t^CPI(i) ]  + weighting term

No substitution is allowed at the experience level (a Leontief structure over Lancaster characteristics — the carry-on, the ad-free feed, the included trash pickup are coordinates, not vibes). Free substitution is allowed in procurement: if re-bundling or an à-la-carte path restores the experience more cheaply, the min finds it. Weights come from bottom-two-quintile Consumer Expenditure data using BLS's own R-CPI-I recipe, and every release decomposes the Gap into what-is-priced vs whose-basket effects.

Properties the design guarantees

The scope test

An attribute is in scope only if today's menu prices it — a named fee, or two configurations differing only in that attribute. No hedonics, no imputation, ever: if the base experience can't be repurchased at any price, the item exits the ledger and the exit is logged in the Exclusion Register. Equivalence is defined ex ante in a public codebook (a gate-checked bag is not a carry-on), and restoration routes follow a fixed hierarchy: named fee, then à-la-carte, then tier spread as a bounded interval.

Why CPI reads these events differently

Three narrow, documented seams — not a claim that BLS errs. First, a fee is captured only when it attaches to a characteristic inside the priced specification: checked-bag fees are in the CPI airline quote spec (80% of quotes carry one); carry-on rights are, in BLS's own words, "not tracked." Second, when a stripped fare becomes the lowest available fare on the half of the discount sample priced that way, the index records a price decrease with no quality adjustment — there are no hedonic models for airfares, hotels, or restaurants. Third, weights built from average realized spending read coping (trading down, skipping the add-on) as savings. BLS's own Producer Price Index made an explicit unbundling correction in 2009 — worth 1.6% by that December — which is the internal precedent for everything here. Where CPI already handles an event well (packaged-goods shrinkflation, most checked-bag fees), we say so and expect a gap near zero.

Limitations, printed every release

  1. An upper bound on constant-experience cost growth — not "true inflation," and not evidence of aggregate CPI bias in either direction.
  2. Priced restorations only; silent degradation is counted in the Register, never priced.
  3. Unbundling made light users better off — base fares fell ~$5 when $15–20 bag fees arrived; we cite that at full strength and measure the bundle-replicating population.
  4. Reproducible experiences only; permanently discontinued experiences exit, logged.
  5. A research series: larger measurement error than official statistics, with the Consumer Expenditure caveats inherited and disclosed.
placeholder — The full specification (formal statement, worked examples with verified fees, fourteen resolved design decisions, hazard register) lives in the working repository pending the public pre-registration: github.com/arthurculang/bpi. The codebook, collection protocol, and evidence archive publish with the Phase 0 note (Oct 2026).