The Basket
A fixed bundle of household consumption items, weighted from BLS Consumer Expenditure Survey 2000 standard tables with one explicit augmentation (NIPA Table 7.8 line 17, employer-paid private group health insurance). Weights are frozen at the 2000 vintage; any change to a SKU, source, weight, or stratum requires a basket version bump.
Methodology summary
Weights are computed from BLS Consumer Expenditure Survey 2000 standard tables (Tables 1, 3, 5, 7), with employer-paid private group health insurance added to the healthcare premium stratum and basket denominator from NIPA Table 7.8 line 17. Weights are fixed at the 2000 vintage — they do not re-weight when BLS releases updated CEX tabulations or when BEA rebenchmarks NIPA.
The basket excludes mortgage interest (debt service, deferred to companion AEI v1.1+), personal insurance and pensions (savings, not consumption), taxes (deferred to companion DIEI v1.1+), and Owners' Equivalent Rent (replaced by market rent plus a composite owned-shelter operating cost line).
Any change to a SKU, source, weight, or stratum is logged in
the Substitution Log with a basket version bump; prior basket
versions remain reproducible from observations tagged with
their basket_version.
Canonical weights — National Average archetype
Read directly from app/engine/weights.py.
Sum = 1.0000 (validated to 1.0 ± 0.0001 at module import).
| # | Stratum | Weight | What it measures |
|---|---|---|---|
| 1 |
Food at home food_at_home |
11.3105% | Groceries: 13 single-SKU items from BLS APU (milk, eggs, ground beef, whole chicken, white bread, bananas, potatoes, sugar, coffee, rice, oranges, tomatoes, cheddar). |
| 2 |
Gasoline energy_gasoline |
4.8335% | Motor gasoline, EIA regular unleaded weekly. State queries route to state-specific EIA series via the geography-aware ladder. |
| 3 |
Home energy energy_home |
4.9235% | Residential electricity + residential natural gas, EIA monthly. State coverage via SEDS. |
| 4 |
Shelter — rent shelter_rent |
7.6156% | Observed market rent: Zillow Observed Rent Index (ZORI) US national, 2015-01+, spliced to Census Housing Vacancy Survey median asking rent pre-2015. No CPI (market rent, not OER). |
| 5 |
Shelter — owned operating cost shelter_owned_operating |
7.3533% | Owned-shelter operating cost anchored on US property tax per capita (Census T01 quarterly / FRED POPTHM, trailing-4Q), the largest CEX-2000 sub-component (~40%). No CPI. |
| 6 |
Other lodging other_lodging |
1.7897% | Hotels, motels, short-term rentals: STR/CoStar US national hotel average daily rate (ADR) — an observed transaction-price aggregate, not a CPI index. |
| 7 |
Communications communications |
3.2835% | Telephone services per CEX 2000 taxonomy: wireless (FCC Communications Marketplace Report ARPU 2000+), residential voice (FCC Urban Rate Survey 2022+), residential broadband (FCC URS 100/20 benchmark 2019+). Multi-SKU Carli aggregation, no CPI. |
| 8 |
Apparel apparel |
6.9491% | Clothing and footwear, single-SKU representative: Levi's 501 STF MSRP (2000+, Wayback-anchored). No CPI fallback. |
| 9 |
Transportation — vehicles transportation_vehicles |
12.7978% | Vehicle purchase prices: Manheim Used Vehicle Value Index (seasonally-adjusted). |
| 10 |
Transportation — services transportation_services |
10.1391% | Multi-SKU non-CPI basket: AAA Your Driving Costs annual composite cents-per-mile (auto-driving, 2004+) + BTS National-Level Domestic Average Air Fare quarterly (airfare, 1995+). Captures CEX 2000 'Other vehicle expenses' and 'Public transportation' sub-components. |
| 11 |
Healthcare — total premium healthcare_premium |
14.9495% | Family health insurance premium including employer share: KFF EHBS national; MEPS-IC state with cross-source calibration. |
| 12 |
Healthcare — out-of-pocket healthcare_oop |
4.0552% | 5 NADAC prescription drugs + 2 CMS Physician Fee Schedule CPT codes (office visit, ED visit professional component). |
| 13 |
Entertainment and reading entertainment |
7.5216% | Multi-SKU non-CPI basket: US average movie ticket annual (NATO 1999-2024, continued by The Numbers gross/admissions for 2024+ — their 2024 figures match to the cent) + FCC Cable Expanded Basic monthly (2000-2011) + Netflix US Standard plan monthly (2014+). Cable + Netflix were recategorized from `communications` at v1.0.10 per CEX 2000 taxonomy; the ticket continuation was added at data tag v1.0.11. |
| 14 |
Education education |
2.3658% | In-state tuition and fees at 4-year public institutions: IPEDS per-institution mean (2004+) spliced to NCES Digest Table 330.10 (pre-2004). No CPI fallback. |
| 15 |
Postage (USPS) misc_postage |
0.1123% | USPS first-class single-piece 1oz stamp rate. Carved out of the prior misc_other catch-all under the v1.7 no-fallback doctrine; cash contributions and miscellaneous residual exited the basket-relevant denominator at v1.0.9. |
| TOTAL | 100.0000% |
Per-stratum source map
Each stratum's precedence ladder, from app/engine/strata.py.
Lower precedence wins where multiple sources cover the same period.
Food at home · food_at_home
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000709112
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000708111
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000703112
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000706111
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000702111
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000711211
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000712112
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000715211
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000717311
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000701312
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000711311
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000712311
Precedence 0
— BLS Average Price Data (APU), monthly, national.
series_id: APU0000710212
Gasoline · energy_gasoline
Precedence 0
— EIA, weekly (rolled to monthly), national + state ladder.
series_id: eia_gasoline_regular_weekly
Home energy · energy_home
Precedence 0
— EIA, monthly, national + state ladder.
series_id: eia_electricity_residential_monthly
Precedence 0
— EIA, monthly, national + state ladder.
series_id: eia_natgas_residential_monthly
Shelter — rent · shelter_rent
Precedence 0
— zillow_zori, national.
series_id: zillow_zori_us_national_smoothed
Precedence 1
— census_hvs, national.
series_id: census_hvs_median_asking_rent_us
Shelter — owned operating cost · shelter_owned_operating
Precedence 0
— census_property_tax, national.
series_id: fred_us_property_tax_per_capita_quarterly
Other lodging · other_lodging
Precedence 0
— ahla_str_adr, national.
series_id: str_us_hotel_adr_annual
Apparel · apparel
Precedence 0
— levis_501, national.
series_id: levis_501_stf_msrp_us
Transportation — vehicles · transportation_vehicles
Precedence 0
— manheim_uvvi, national.
series_id: manheim_uvvi_seasonally_adjusted
Transportation — services · transportation_services
Precedence 0
— aaa_driving, national.
series_id: aaa_ydc_composite_cents_per_mile
Precedence 0
— bts_atpi, national.
series_id: bts_us_domestic_air_fare_quarterly
Healthcare — total premium · healthcare_premium
Precedence 0
— KFF Employer Health Benefits Survey, annual, national.
series_id: kff_ehbs_premium_family_total
Healthcare — out-of-pocket · healthcare_oop
Precedence 0
— NADAC (CMS National Average Drug Acquisition Cost), weekly (rolled to monthly), national.
series_id: nadac_metformin_hcl_500mg_tablet
Precedence 0
— NADAC (CMS National Average Drug Acquisition Cost), weekly (rolled to monthly), national.
series_id: nadac_atorvastatin_20mg_tablet
Precedence 0
— NADAC (CMS National Average Drug Acquisition Cost), weekly (rolled to monthly), national.
series_id: nadac_lisinopril_10mg_tablet
Precedence 0
— NADAC (CMS National Average Drug Acquisition Cost), weekly (rolled to monthly), national.
series_id: nadac_levothyroxine_50mcg_tablet
Precedence 0
— NADAC (CMS National Average Drug Acquisition Cost), weekly (rolled to monthly), national.
series_id: nadac_amoxicillin_500mg_capsule
Precedence 0
— CMS Physician Fee Schedule, annual, national.
series_id: cms_pfs_99213_non_facility
Precedence 0
— CMS Physician Fee Schedule, annual, national.
series_id: cms_pfs_99283_facility
Education · education
Precedence 0
— nces_digest, national.
series_id: nces_avg_tuition_fees_all_inst_us
Precedence 1
— NCES IPEDS, annual, national + state ladder.
series_id: ipeds_in_state_tuition_and_fees
Communications · communications
Precedence 0
— FCC URS, national.
series_id: fcc_urs_voice_us_residential_annual
Precedence 0
— FCC URS, national.
series_id: fcc_urs_broadband_us_residential_annual
Precedence 0
— fcc_wireless_arpu, national.
series_id: fcc_us_wireless_arpu_annual
Entertainment and reading · entertainment
Precedence 0
— nato_tickets, national.
series_id: nato_us_avg_ticket_price
Precedence 0
— the_numbers_tickets, national.
series_id: the_numbers_us_avg_ticket_price
Precedence 0
— household_subscription, national.
series_id: cable_fcc_expanded_basic_monthly
Precedence 0
— household_subscription, national.
series_id: netflix_us_standard_monthly
Postage (USPS) · misc_postage
Precedence 0
— usps_stamp, national.
series_id: usps_first_class_stamp_1oz
Archetype comparison
Weights for the four highest-weighted strata (National Average)
across all 10 published archetypes. Read directly from
weights.py.
| Archetype | Healthcare | Transportation | Food at home | Transportation |
|---|---|---|---|---|
| National Average national_average |
14.9495% | 12.7978% | 11.3105% | 10.1391% |
| Homeowner homeowner |
14.7628% | 13.6433% | 11.5885% | 10.9330% |
| Renter renter |
15.4041% | 10.7684% | 10.6428% | 8.2309% |
| Working Parent working_parent |
13.2223% | 13.3955% | 12.1785% | 9.7867% |
| Retiree retiree |
8.9527% | 10.5282% | 13.5397% | 9.7263% |
| Income — Lowest Quintile income_lowest_quintile |
22.5795% | 8.8059% | 11.1432% | 6.9386% |
| Income — Second Quintile income_second_quintile |
18.4347% | 10.7301% | 12.8882% | 8.2783% |
| Income — Middle Quintile income_middle_quintile |
15.5775% | 12.7719% | 12.1413% | 9.8162% |
| Income — Fourth Quintile income_fourth_quintile |
13.4530% | 14.1652% | 11.7795% | 10.7460% |
| Income — Highest Quintile income_highest_quintile |
9.9857% | 14.0935% | 10.5549% | 12.2832% |
Substitution log
Every change to the basket. Newest first. Each entry: date, version, what changed, why (one factual sentence).
2026-05-30 — Movie-ticket series continued: NATO → The Numbers
Version: data tag 1.0.10 → 1.0.11
What changed. The entertainment stratum's movie-ticket SKU gained a continuation source. NATO rebranded to Cinema United (Mar 2025) and stopped publishing the annual US average ticket price, so the NATO series ends at 2024. The Numbers (the-numbers.com) computes the same quantity by the same method — total box-office gross ÷ admissions — and its 2024 figure ($11.31) matches NATO's final figure to the cent. It is wired in as its own parallel series (2024 overlap anchor + 2025 = $11.96), and the chain-link engine splices NATO → The Numbers automatically across the 2024/2025 boundary.
Why. With NATO dead after 2024 and cable ending in 2011, entertainment was 100% Netflix for 2025 — so the whole stratum's 2025 reading was the Netflix January price hike (+16%), a single-SKU over-weighting artifact. Restoring a real theatrical-ticket price gives 2025+ a representative streaming + theatrical blend. No BLS CPI is involved; non-CPI share stays 100%.
Effect on headline. Entertainment's 2024→2025 move drops from +16.1% (Netflix-only) to +12.3% (blended). Long-run decay is essentially unchanged (3.55 → 3.54%/yr — one annual SKU over 25 years); the trailing-12 rate corrects from 3.29%/yr to 2.95%/yr. Surviving rows were re-stamped basket_version 1.0.10 → 1.0.11 (values unchanged); the new ticket rows were ingested at 1.0.11. Strata count stays 15.
2026-05-29 — Zero-CPI recomposition, chain-linked headline, CPI ingester removed
Version: v1.1.4 → v2.0.0
What changed. Retired BLS CPI from the index entirely and removed its last infrastructure. (1) Five CPI/proxy-dependent strata EXITED and weights renormalized over the surviving 15: household_goods, personal_care, alcohol (pure CPI primaries), food_away (single-chain Big Mac proxy, rejected as non-representative), and tobacco (CPI Tobacco was its only 2020+ path). (2) The last CPI bridge — CUUR0000SEMF01 (Rx CPI) — removed from healthcare_oop, now NADAC (5 generic drugs) + CMS PFS (2 CPT codes) only. (3) shelter_rent moved to Zillow ZORI (2015+) spliced to Census HVS median asking rent (≤2014), and the state healthcare_premium chain-link to BLS CPI SEME was dropped — these SUPERSEDE the v1.1.2 'chain-link to BLS CPI SEME for 2025+' and v1.1.3 'leaving BLS CPI Rent of Primary Residence as sole source' entries below, which describe the now-replaced v1.1.x state. (4) Headline switched to a drift-free fixed-base-within-spans construction, chain-linked only at composition boundaries, so late-starters splice in at entry with no level jump and the index spans the full window. (5) The dormant bls_cpi ingester, its CLI/freshness/reingest wiring, its fixture, and 7,174 inert CUUR rows were deleted from price_observations (local + prod).
Why. The load-bearing commitment is that the index contains NO BLS CPI anywhere — not a primary, not a bridge, not a fallback — because claiming to improve on CPI while still consuming CPI is incoherent. These changes realize it fully: non-CPI share = 100%.
Effect on headline. Published window 2000-01 → 2025-12 (312 months, up from a truncated 2010-2023); long-run decay 3.440%/yr; Dollar Half-Life 20.5 yr; CPI series in index 0; strata count 20 → 15. Price rows remain tagged basket_version=1.0.10 (a weighting + engine-construction change, not a re-ingest); exited strata's rows stay in the store at weight 0 so prior versions remain reconstructable.
2026-05-27 — /state/<code>/coverage endpoint rebuilt
Version: v1.1.3 → v1.1.4
What changed. Public API endpoint /api/v1/state/<code>/coverage rebuilt to surface per-stratum source, state_coverage_first_month, state_coverage_last_month, and weight_national_average; replaces v1.1 endpoint with a band-inference logic bug exposed by the v1.1.1 splice fix.
Why. METHODOLOGY.md §5.8 publication obligation requires per-stratum first-month state-coverage disclosure so consumers can identify which months mix state-specific signal with national fallback.
Effect on headline. None (disclosure surface only).
2026-05-27 — HUD FMR removed from engine path
Version: v1.1.2 → v1.1.3
What changed. Removed HUD Fair Market Rents ingester, series, fixture, tests, and schedule entries; deleted 46,833 HUD FMR rows from price_observations; shelter_rent precedence-1 fallback dropped, leaving BLS CPI Rent of Primary Residence as sole source.
Why. HUD FMR is administrative data (40th-percentile ceiling for Section 8 vouchers, derived from 5-year-smoothed ACS gross-rent data) measuring assistance-payment standards rather than market rent; never fired as a fallback under existing BLS coverage; retention implied a methodology promise the engine was not honoring.
Effect on headline. ~0.001 pp (rounding noise).
2026-05-27 — Full annual KFF state series + post-2024 trim
Version: v1.1.1 → v1.1.2
What changed. State-level healthcare_premium rebuilt from the complete 2013-2024 annual MEPS-IC publication (12 years × 51 geographies = 612 measurements), replacing the 3-anchor (2014/2019/2024) v1.1.0 simplification; post-2024 hold-forward removed; state series chain-link to BLS CPI SEME for 2025+.
Why. The 3-anchor approach forced stepped hold-forward interpolation between anchors and a post-2024 flat tail that depressed long-run decay rates by ~20-40 bp vs national; KFF publishes annually so ingesting all 12 years removes both artifacts.
Effect on headline. National unchanged. State-vs-region gaps moved from -240/-380 bp to -3/-125 bp.
2026-05-27 — Per-period geography splice + unified series_ids
Version: v1.1.0 → v1.1.1
What changed. EIA and BLS-CPI now write per-state and per-region rows under the same internal series_id as their national equivalent with the geography column differentiating; the §5.4 fallback ladder rewritten from per-ref to per-period with chain-link rescale at geography transitions.
Why. The prior per-ref geography routing silently dropped KFF national 1999-2013 rows for state queries (because the engine picked a single best geography for the whole window); the audit revealed pop-weighted state-vs-national headline gaps of -240/-380 bp driven by a -1860/-2120 bp gap in healthcare_premium that traced to this routing.
Effect on headline. National unchanged. State headlines moved 25-40 bp toward their region's value; per-stratum decomposition now surfaces real state divergence in 4 of 20 strata.
2026-05-27 — Cross-source calibration for state healthcare_premium
Version: v1.0.2 → v1.0.3
What changed. State-level healthcare_premium rows are now emitted with the calibration calibrated_state(s, y) = MEPS_IC_state(s, y) × (KFF_EHBS_US(y) / MEPS_IC_US(y)), with the calibration ratio, raw MEPS-IC value, and adjustment basis surfaced in each observation's raw_payload.
Why. MEPS-IC (the state-level source) and KFF EHBS Figure 1.12 (the national source) measure the same construct through different operational definitions and persistently disagree at the US level by 3-5% in levels; without calibration, state-vs-national comparisons mixed two surveys and state pop-weighted aggregates did not match the national headline.
Effect on headline. None at national level. State family premium values run ~1-4% higher than raw KFF State Health Facts; per-state ranking unchanged.
2026-05-25 — Weighting basis pivot — BEA PCE to BLS CEX + NIPA 7.8 augmentation
Version: v1.0.1 → v1.0.2
What changed. Weight source changed from BEA PCE 2000 to BLS CEX 2000 standard tables with NIPA Table 7.8 line 17 employer-paid private group health insurance augmentation ($329.199 billion in 2000, $3,010/CU for working-age archetypes, $0 for Retiree); basket extended to ten archetypes (five demographic + five income quintile); stratum count increased from 18 to 20 (alcohol, tobacco, other_lodging broken out).
Why. PCE is a national-accounts construct that includes OER, Medicare/Medicaid, imputed banking services, and nonprofit consumption — categories that do not represent cash leaving a household; CEX is what households self-report spending out of pocket; CEX 2000 tabulations are vintage-stable while PCE comprehensive revisions would force a vintage-policy stance.
2026-05-25 — Food-at-home BLS APU coverage audit
Version: v1.0.0 → v1.0.1
What changed. Chicken: APU0000FF1101 (boneless breast) replaced with APU0000706111 (whole fresh chicken). Apples (APU0000711111, Red Delicious) removed — BLS ceased publishing after 2017-10. Butter (APU0000FS1101) removed — six-year publishing gap May 2012 to March 2018 that would require interpolation.
Why. Boneless-breast series begins 2006-01; whole fresh chicken is continuously published 2000-01 to present. Apples and butter have no continuously-published alternative SKU.
Excluded from basket
What is not in the basket, and why. Pure factual list — the underlying methodology rationale lives in METHODOLOGY.md §3.2.
| Excluded category | Reason | Disposition |
|---|---|---|
| Mortgage interest | Debt service, not consumption. | Published in companion AEI v1.1+. |
| Personal insurance and pensions | Savings, not consumption. | Excluded from basket denominator. |
| Taxes (federal + state income, payroll, property) | Out of scope for a price-of-consumption index. | Published in companion DIEI v1.1+. |
| Owners' Equivalent Rent (OER) | Imputed price, not a market transaction. | Replaced by market rent + composite owned-shelter operating cost per METHODOLOGY.md §3.2.6 and §4.2. |
| Medicare and Medicaid (government-paid) | Not household cash burden. | Excluded from healthcare premium numerator; only worker-paid + employer-paid private group health insurance counted. |
| Imputed banking services | National-accounts construct, not household cash. | Excluded with PCE pivot in v1.0.2. |
| Nonprofit consumption | National-accounts construct, not household cash. | Excluded with PCE pivot in v1.0.2. |
| OPPS facility component of ED visit | Not yet ingested; CMS PFS 99283 captures professional component only. | Documented gap; v1.1 candidate. |
| Property tax and maintenance/repair components of owned-shelter operating cost | No clean 2000-current annual national series available without methodological interpolation. | Documented partial composite; v1.x candidate. |