Every displayed figure traces to a public BLS, BEA, or Federal-Reserve source.
This page records, per chart-series, the source, units, and limits — and gives an honest
accounting of the constructed heterodox series, which are a labeled real-competition
reading of the official data, not official statistics.
↓ CPI: A History of Measurement
{{ provenance }}
Inflation looks simple — prices go up. But measuring it requires answering a surprisingly hard question: how much would it cost, today, to buy what people bought yesterday? When TVs get sharper, cars last longer, and shoppers switch from full-price department stores to warehouse clubs, a naive price index misreads the world. The story of the Consumer Price Index is the story of how the United States has tried — and often failed — to answer that question. Getting it wrong isn't academic: hundreds of billions of dollars in Social Security payments, tax brackets, and Treasury-bond principal depend on what the CPI says.
The CPI began in 1913 as a practical tool: the Bureau of Labor Statistics needed to know what shipyard workers in World War I were paying for food and rent. Early price collection covered a handful of cities; the "basket" of goods was fixed for years at a time. By 1978 the BLS had introduced the CPI-U, covering all urban consumers — about 88% of the U.S. population — alongside the older CPI-W for wage earners. Even so, the index rested on a conceptual foundation that would soon prove shaky: a Laspeyres formula with weights updated roughly once a decade, and a treatment of homeownership that tracked house prices and mortgage rates rather than the cost of shelter.
That homeownership treatment came to a head in the inflationary late 1970s. When the BLS retroactively computed what the CPI would have been under a rental-equivalence approach, it found the old method had overstated inflation by 6.5 percentage points by 1982. Cumulative Social Security overpayments from this source alone reached $8.76 billion. Rental equivalence was adopted for the CPI-U in January 1983 and for the CPI-W in 1985, separating shelter costs from the investment component of homeownership for the first time.
Source for the 6.5 pp overstatement and the $8.76 billion cumulative Social Security overpayment: Gillingham & Lane, "Changing the treatment of shelter costs for homeowners in the CPI," Monthly Labor Review 105(6), June 1982, pp. 9–14; BLS Handbook of Methods, Chapter 17, February 2018.
Here is what a naive price index misses. Suppose a television costs $400 in 1990 and $400 in 1995 — but the 1995 model has a larger screen, stereo sound, and a remote control. A literal reading says no inflation; in reality, the consumer got more for the same money. The BLS had long recognized this and used "linking" methods to adjust for quality change — essentially assuming that any price difference between an old model and its replacement reflected quality, not inflation. By the early 1990s, roughly 1.65 of the 1.76 percentage points of quality adjustment in the CPI came from crude linking, not from actual measurement.
Meanwhile, the weights were nearly fossilized. The 1978 revision used 1972–73 expenditure patterns. The 1987 revision set the 1982–84 period as the base — and those weights were still in use in 1995, an 11-year lag from the midpoint. The consumer economy had changed dramatically in the interim (personal computers, warehouse clubs, generic drugs), but the CPI's basket hadn't. Throughout this era, BLS explicitly stated that the CPI was not a cost-of-living index — it was a fixed-basket price measure, and the distinction was not semantic.
In June 1995, the Senate Finance Committee appointed an Advisory Commission to Study the Consumer Price Index, chaired by Michael Boskin and including economists Robert Gordon, Zvi Griliches, Dale Jorgenson, and Ellen Dulberger. The question was simple: how much does the CPI overstate the true cost of living? The answer, delivered in December 1996, was a bombshell.
The Commission's best estimate of the size of the upward bias is 1.1 percentage points per year. The range of plausible values is 0.8 to 1.6 percentage points. — Boskin et al., Toward a More Accurate Measure of the Cost of Living, Senate Committee on Finance, December 1996
The Commission decomposed the 1.1pp bias into four sources:
The fiscal arithmetic was staggering. Because Social Security, federal pensions, tax brackets, and TIPS principal are all indexed to the CPI, a 1.1pp overstatement would add an estimated $1.07 trillion to the national debt by 2008 (Boskin et al., Toward a More Accurate Measure of the Cost of Living, December 1996, § "Implications," Table 3). The Commission's headline recommendation — "The BLS should establish a cost of living index (COLI) as its objective" — was both technically sensible and politically explosive. The AARP and other groups mobilized against any "CPI minus X" that would reduce Social Security COLAs, turning the Commission's statistical finding into one of the most consequential economic measurement debates of the late twentieth century.
The BLS did not wait for Congress to act. Between 1997 and 2002, it implemented a remarkable series of methodological improvements that addressed most of the Boskin Commission's identified biases:
Hedonic adjustment — using regression to separate quality change from pure price change — is the most technically sophisticated of these reforms and the most misunderstood. The BLS uses a "matched model" approach: hedonic coefficients are applied only when a product is replaced or becomes unavailable, not to every price quote. The products currently using hedonic quality adjustment, with implementation dates:
| Product | Since |
|---|---|
| Personal computers | Jan 1998 |
| Televisions | Jan 1999 |
| Audio equipment | Jan 2000 |
| Camcorders | Jan 2000 |
| VCRs | Apr 2000 |
| DVD players | Apr 2000 |
| Refrigerators | Jul 2000 |
| Microwave ovens | Jul 2000 |
| Clothes washers | Oct 2000 |
| Clothes dryers | Oct 2000 |
| Housing (rental equivalence) | 1983 / 1985 |
| Apparel | pre‑1998 |
Sources: Liegey, Hedonic Quality Adjustments in the U.S. CPI, BLS, 2002; BLS Handbook of Methods, Chapter 17, February 2018.
Ten years after the Boskin report, Commission member Robert Gordon revisited the question. His retrospective judgment was striking: the original bias was probably 1.2–1.3pp, not 1.1. More surprising still was the behavior of the new C-CPI-U: between 2000 and 2006 it ran 0.38pp / year below the traditional CPI-U, indicating that upper-level substitution — consumers shifting between categories like beef and chicken, not just within them — was far larger than anyone at BLS or on the Boskin Commission had expected.
Gordon estimated that the current upward bias had declined to roughly 0.8pp / year, though he cautioned that this excluded the hardest-to-measure sources: new products and quality change in non-electronic goods. With those included, the bias was "at least 1.0 percent per year or perhaps even higher." Outlet substitution bias — the shift from full-price to discount retail — remained, in Gordon's phrase, "untouched."
Beyond the Boskin framework, shelter measurement presents its own challenge. Owners' equivalent rent (OER), which now makes up about 24% of the CPI, is estimated from a rolling panel of rental units and lags market rents by roughly four quarters. This is not a "bias" in the Boskin sense — OER is conceptually correct — but it creates a well-known timing mismatch that complicates real-time inflation readings. In 2023, the BLS began moving from biennial to annual weight updates, further reducing a longstanding source of drift.
CPI measurement is not a solved problem. The index has improved dramatically since 1996, but residual bias on the order of 0.8–1.0pp per year, a shelter series that lags by four quarters, and outlet substitution bias that remains unaddressed all mean that no single number tells the whole story. Gordon therefore reports multiple measures:
All methodology is documented to the D1 (Data Authenticity) standard: every series traces to a public source, every transformation is recorded, and every interpretive choice is labeled.
| Year | Milestone |
|---|---|
| 1940 | First comprehensive revision; 1934–36 CES weights |
| 1953 | 1950 CES weights; refined to urban wage-earner families |
| 1964 | 1960–61 CES weights; single-person households added; suburbs included |
| 1978 | CPI-U and CPI-W introduced; probability sampling |
| 1983 / 1985 | Rental equivalence adopted (CPI-U / CPI-W) |
| 1987 | 1982–84 CES weights; new expenditure classification |
| 1996 | Boskin Commission report finds 1.1pp bias |
| 1998 | Hedonic regression for computers; 1993–95 weights |
| 1999 | Geometric mean formula adopted (~61% of items) |
| 2002 | C-CPI-U introduced; biennial weight updates begin |
| 2015 | C-CPI-U expanded to four preliminary estimates before final |
| 2023 | Annual weight updates begin |
Sources: BLS Handbook of Methods, Chapter 17, February 2018; Boskin et al., Toward a More Accurate Measure of the Cost of Living, Senate Committee on Finance, December 1996; Gordon, NBER Working Paper 12311, June 2006; Liegey, Hedonic Quality Adjustments in the U.S. CPI, BLS, 2002.
Three products sit alongside the curated charts: The Item Ledger ({{ "{:,}".format(f1.rows) }} observations, {{ "{:,}".format(f1.item_strata) }} item strata × {{ f1.areas }} areas, {{ f1.first }}–{{ f1.last }}), The Price Map ({{ "{:,}".format(f2.rows_levels) }} dollar prices, {{ "{:,}".format(f2.rows_costmap) }} metropolitan price comparisons and {{ "{:,}".format(f2.rows_wholesale) }} daily wholesale rows) and The Local Labor Market ({{ "{:,}".format(f3.rows) }} observations, {{ f3.geographies }} geographies × {{ f3.measures }} measures, {{ f3.first }}–{{ f3.last }}). All three are rebuilt by scripts that assert their own output before writing it, and every count on their pages is read from the manifest those scripts emit.
The item ledger reports an index: a unitless number answering how much a basket has changed since a base period. Two areas can both read 100 and have nothing in common. The price map reports levels — dollars per gallon, dollars per carton, and a price parity saying how far a place’s overall price level sits from the national average. They are kept as separate products rather than as two views of one because they answer different questions from different sources, and because their freshness differs by more than a year: the dollar prices run to {{ f2.levels_last }} while the index runs to {{ f1.last }}. Deliberately, the price map offers no percent-change transform.
The price map carries three sources at three frequencies, and reports a separate last-real-observation for each rather than one flattering site-wide “updated” date: dollar prices monthly to {{ f2.levels_last }}, the metropolitan cost map annually to {{ f2.costmap_last }}, and terminal-market wholesale quotes daily to {{ f2.wholesale_last }} across a rolling window of {{ f2.wholesale_days }} trading days. The dollar prices and the wholesale quotes measure different stages of the same supply chain — one retail, one trade — and are never drawn on one axis.
The metropolitan cost map is a partial grid and is published as one: {{ "{:,}".format(f2.costmap_pairs_held) }} place-and-measure pairs exist of {{ "{:,}".format(f2.costmap_pairs_possible) }} possible, so the number of places shown is always the number for the measure selected. The daily wholesale panel ships as an aggregate — {{ "{:,}".format(f2.rows_wholesale) }} rows standing for {{ "{:,}".format(f2.quotes_behind) }} individual quotes, one row per day, city, commodity and package, keeping the low-to-high spread so the range stays visible. The columns dropped in that aggregation are named in the product’s manifest, not left to be discovered. {{ "{:,}".format(f2.quotes_no_package) }} quotes arrive with no package recorded at all; they are labelled unrecorded, grouped only with each other, and never used as an opening view, because a price whose package is unknown cannot honestly be compared with one whose package is known.
The harmonized price panel arrived with all {{ "{:,}".format(f1.rows) }} of its rows labelled “national”, even though the series identifiers carried {{ f1.areas }} distinct area codes: the upstream harmonizer had no branch for the price survey and fell through to a national default. The defect was fixed at that builder, so a rebuild now emits the axis correctly, and the product’s own builder derives the axis independently so it does not have to wait for one.
The area names were a second problem. The Bureau publishes lookup tables mapping
area and item codes to names, but no usable copy of those tables is held here — the
files that exist are HTTP error pages saved under the right filename. The names are
therefore recovered from the Bureau’s own series titles, which name the area in a
fixed position (“<item> in <area>, all urban
consumers…”). All 8,104 titles in the series master parse, and every area code
resolves to exactly one name. Six codes are asserted against independently-known values on
every build — 0000 = U.S. city average, S49A = Los
Angeles-Long Beach-Anaheim CA, S12A = New York-Newark-Jersey City NY-NJ-PA,
S37A = Dallas-Fort Worth-Arlington TX, S35B = Miami-Fort
Lauderdale-West Palm Beach FL, A104 = Pittsburgh PA — and the build
fails rather than publish a label it cannot verify. Anything unresolvable is written
as the literal string NOT CAPTURED; nothing is inferred from a neighbour.
Where the same statistical concept is held at two different vintages, both ship as separate files with separate labels and separate last-real-observations. The price product’s long history ({{ f1.spine_first }}–{{ f1.spine_last }}, {{ "{:,}".format(f1.spine_rows) }} observations) is a distinct and older vintage from its main panel, and is never concatenated onto it. The same holds for the labor product’s county tier (through {{ f3.county_last }}) and its area-by-industry tier (through {{ f3.industry_last }}), both older than its main panel (through {{ f3.last }}). A build assertion fails if a tier described as fresher is not in fact fresher.
Full panels ship as Parquet; the compact dimension and summary tables ship as both CSV and Parquet. A CSV of a million-row panel would add tens of megabytes to the deployment for a format the per-slice download routes already serve on demand, so every chart slice on both pages is downloadable as genuine CSV or genuine Parquet bytes. That omission is recorded per table in each product’s manifest rather than left for a reader to discover.
Gordon ships a neutral data layer (CPI/PCE, the labor-force and payroll surveys, JOLTS, productivity and unit labor costs) that stands on its own, and a labeled interpretive layer — the heterodox real-competition (Shaikh) reading. The interpretive charts are tagged heterodox lens throughout the site. The underlying official series in those charts (labor share, unit labor costs, profit share, corporate profits, the capital stock) are real BLS/BEA data; the framing — that the profit rate and distributive conflict, not a stable NAIRU, regulate wage–price dynamics — is the interpretation.
These series are either explicitly constructed or use a documented approximation. They are labeled as such wherever they appear:
{% for c in constructed %}The productive/unproductive employment split is a constructed Shaikh-Tonak classification applied to BLS CES industry employment (1964→present). It is an interpretive aggregate, not an official BLS series, and is presented as such. The productive/unproductive mapping follows the framework of Anwar Shaikh & E. Ahmet Tonak, Measuring the Wealth of Nations: The Political Economy of National Accounts (Cambridge University Press, 1994), Ch. 3 and Appendix A.
| Chart | Group | Units | Source(s) | Lens |
|---|---|---|---|---|
| {{ c.title }} | {{ c.group }} | {{ c.units }} | {{ c.sources | join("; ") }} | {% if c.interpretation %}heterodox{% else %}neutral{% endif %} |