DecayStats
DecayStats · Basket v1.0.12

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.

Strata
15
Archetypes
10
Weights vintage
2000
BLS CEX + NIPA 7.8 augmentation
Sum check
100.00%
validated at module import

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%
Higher-weight strata vary widely across archetypes — e.g., healthcare_premium ranges from 6.5% (Retiree) to 18.5% (lowest income quintile).

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.