The Plumbline.
Plumb, level, true.
10/12 stabilizing relationships holding 40/66 indicators calm See the full board →
As of 25 June 2026, the board is mostly quiet: 10 of 12 relationships are behaving and 40 of 66 levels read calm; across 50 scorable levels that is busier than chance alone would predict (chance puts ~7.2 on watch and ~1.2 at extreme).
The Plumbline tracks whether the basic cost of life is still bearable.
For the renter who cannot afford to move. For the patient whose healthcare is not optional. For the family whose heating bill is not a choice.
In markets where consumers have little agency (shelter, healthcare, energy, insurance), prices are not disciplined by competition. Standard aggregates like GDP and unemployment rates don't capture this. The squeeze happens below the headline.
When it becomes unbearable, the numbers will show it here before the headlines do.
Household Stress
Are the non-negotiables still affordable?Three diagnostic questions, read from the bottom up: captive-demand costs, what is left after the bills, and where the arithmetic has already broken. The instruments are in calibration; their rosters are declared below, never a fabricated reading before they are scored.
Can households afford the non-negotiables?
Captive DemandInflation decomposed by whether the consumer can say no. Shelter, healthcare, energy, and insurance are priced without the discipline of optionality; these tiles read how fast that captive cost is rising against what households earn.
Headline CPI reads +4.3% this year , the blended average. Measured from 2019, the essentials households cannot skip have run far higher:
Bars show the cumulative change since 2019; the small figure is this year's. The year-over-year is where a multi-year run-up disappears.
Break down energy: +57% since 2019 , this year +23.0%
Bars show the cumulative change since 2019, the run-up the calm year-over-year hides. The legs running above the leg's own average carry the rust.
Seasonally adjusted; 2019 calendar-year average as the base.
Break down food: +33% since 2019 , this year +2.7%
Bars show the cumulative change since 2019, the run-up the calm year-over-year hides. The legs running above the leg's own average carry the rust.
Eggs alone: +39% since 2019 . Seasonally adjusted; 2019 calendar-year average as the base.
Break down shelter: +35% since 2019 , this year +3.4%
Bars show the cumulative change since 2019, the run-up the calm year-over-year hides. The legs running above the leg's own average carry the rust.
Seasonally adjusted; 2019 calendar-year average as the base.
Break down medical: +19% since 2019 , this year +2.6%
Bars show the cumulative change since 2019, the run-up the calm year-over-year hides. The legs running above the leg's own average carry the rust.
Health insurance (measured indirectly by BLS and highly volatile) is not shown separately. These lines do not fully partition medical care. Seasonally adjusted; 2019 calendar-year average as the base.
Is there anything left over?
Household MarginThe operative measure of financial health at street level. What remains after rent, debt service, and the captive costs: the space where saving, resilience, and discretionary life actually happen. When it compresses, households stop saving, then borrow, then break.
Enrollment reflects eligibility POLICY as well as need. Pandemic expansions raised it, and H.R.1's 2025 cuts are lowering it independent of food need, so a falling rate here is not necessarily less hardship. Annual FY data, sourced from USDA FNS.
Where is it breaking?
Breaking PointsNot stress: fracture. Where the cost of a non-discretionary necessity exceeds what any reasonable budget can absorb. These tiles carry lower reliability scores by design: the signal is real, the measurement is imperfect in real time, and both are disclosed.
Annual ACS: lags 9–21 months; the national average understates coastal metros. Bands recalibrated from the spec's 9–14% (a denominator error vs the real ~22–25% renter severe-burden share) to the pre-2020 baseline; see the methodology changelog. The monthly rent-vs-wage proxy below leads the next annual read.
Medical bankruptcy is real but not directly measurable in real time from public data. This tile shows the edges of the fracture (who is uninsured, who has medical debt in collections, how fast medical prices are rising) as context, NOT a scored status. The signal is real; the measurement is too indirect and infrequent to score.
The Cost of Existence
What life costs, and how it diverges from how it feelsFour readings of one squeeze: what a middle-class life claims of income today, how the big-ticket costs have outrun that income since 2000, how far real wages have fallen behind, and how much worse it all feels than the fundamentals alone predict.
Each carries its own confidence label; every line traces to an official series, and the math is one click away.
The share of each income already spoken for before a single free choice: the same arithmetic at three incomes, recomputed live as you change the assumptions below. The lower household carries the larger share because health premiums, food, fuel, and the shelter floor are flat dollars, and flat dollars are regressive. Select a bracket to see its breakdown.
Breakdown: median household, $83,730: $56,639 claimed (67.6%)
| Taxes | $12,093 | ROBUST |
| Debt service | $9,481 | PLAUSIBLE |
| Shelter | $11,700 | ROBUST |
| Food (thrifty, 2+0) | $7,484 | ROBUST |
| Fuel (live, $4.052/gal) | $2,759 | PLAUSIBLE |
| Health premiums | $6,850 | ROBUST |
| Retirement gap | $6,271 | CONTESTED |
| Out-of-pocket health | – | DISABLED: NO VERIFIED MEDIAN |
Show the math
- Formula
ClaimedShare = (Taxes + Obligations + Shelter + Food + Fuel + Health + RetirementGap) / Income- Spine
- Built on the Fed's own framework: the Debt Service Ratio (11.323096% of disposable income, as of 2025-10-01) carries debt service; shelter enters separately at HUD Fair Market Rent so nothing double-counts. The Fed's broader Financial Obligations Ratio read 14.2% when it was discontinued (2023-07-01) , shown as anchor.
- Conservative where it lowers the share
- State/local taxes omitted and out-of-pocket health disabled pending a verified median. Both genuinely make the share read LOW, the conservative direction. Refundable credits are the exception: omitting the EITC and Child Tax Credit would overstate tax and read HIGH, so they are modeled and netted, not omitted. At these incomes with no children the credits are zero; add children in the editor and the tax line falls (it can go negative).
- Sources
- childcare · credits · food · fuel · fuel_price · health · income · retirement · shelter · taxes · tdsp
The Cost-to-Exist ratio reads what life costs today; this reads the trajectory. Since ~2000 the big-ticket categories that define a middle-class life have risen far faster than the median income that pays for them, the sourced, honest version of the viral "$100k-in-1995" argument. Every line traces to an official series.
CAVEAT Healthcare. CPI medical care is a per-UNIT price; it understates the TOTAL health burden, which also grew with utilization. The declared National Health Expenditures-per-capita line is the total-burden alternative.
REQUIRED CAVEAT New vehicles. CPI new vehicles is hedonically quality-adjusted and has risen far less than transaction (sticker) prices, so this line UNDER-states the wedge. The declared average-transaction-price line is the out-of-pocket counterpart; this line never renders without this note.
×2.25
Default shares are seeded from the live Cost-to-Exist default basket (shelter, food, fuel→energy, health→medical dollar lines), with tuition seeded from the editor's center-based childcare cost and vehicles seeded as a small disclosed share (the basket carries no vehicle line). It is a companion to the transparent per-category lines above, never a replacement; the lead is the multiples, which need no weights at all.
- [declared, not currently shipped] Average new-vehicle transaction price (Cox Automotive/KBB or BEA): The out-of-pocket counterpart to the quality-adjusted CPI vehicle line: what a new car actually costs at the dealer, before hedonic adjustment removes the price of added features.
- [declared, not currently shipped] National Health Expenditures per capita (CMS, annual, 1960+): The total-burden counterpart to medical-care CPI: per-unit price × rising utilization, the whole health bill per person rather than the price of one unit of care.
Screen-reader data table: every visible line's indexed value by year
| Year | All-items CPI | Housing (rent) | Tuition & childcare | Healthcare | Food | Energy | New vehicles | Median income |
|---|---|---|---|---|---|---|---|---|
| 2000 | 100 | 100 | 100 | 100 | 100 | 100 | 100 | 100 |
| 2001 | 103 | 104 | 105 | 105 | 103 | 104 | 100 | 101 |
| 2002 | 104 | 109 | 112 | 110 | 105 | 98 | 98 | 101 |
| 2003 | 107 | 112 | 119 | 114 | 107 | 110 | 97 | 103 |
| 2004 | 110 | 115 | 128 | 119 | 111 | 122 | 96 | 106 |
| 2005 | 113 | 118 | 136 | 124 | 114 | 142 | 97 | 110 |
| 2006 | 117 | 122 | 144 | 129 | 116 | 158 | 96 | 115 |
| 2007 | 120 | 128 | 153 | 135 | 121 | 167 | 95 | 120 |
| 2008 | 125 | 132 | 161 | 140 | 128 | 190 | 94 | 120 |
| 2009 | 125 | 135 | 169 | 144 | 130 | 155 | 95 | 119 |
| 2010 | 127 | 136 | 177 | 149 | 131 | 170 | 97 | 117 |
| 2011 | 131 | 138 | 184 | 153 | 136 | 196 | 99 | 119 |
| 2012 | 133 | 142 | 192 | 159 | 139 | 197 | 101 | 122 |
| 2013 | 135 | 146 | 199 | 163 | 141 | 196 | 102 | 128 |
| 2014 | 137 | 150 | 205 | 167 | 145 | 195 | 102 | 128 |
| 2015 | 138 | 156 | 213 | 171 | 147 | 163 | 103 | 135 |
| 2016 | 139 | 161 | 219 | 178 | 148 | 152 | 103 | 141 |
| 2017 | 142 | 168 | 224 | 182 | 149 | 164 | 103 | 146 |
| 2018 | 146 | 174 | 229 | 186 | 151 | 177 | 102 | 150 |
| 2019 | 148 | 180 | 235 | 191 | 154 | 173 | 103 | 164 |
| 2020 | 150 | 186 | 240 | 199 | 159 | 158 | 103 | 162 |
| 2021 | 157 | 190 | 243 | 201 | 166 | 191 | 109 | 169 |
| 2022 | 170 | 201 | 250 | 210 | 182 | 239 | 121 | 178 |
| 2023 | 177 | 217 | 258 | 211 | 192 | 227 | 125 | 192 |
| 2024 | 182 | 228 | 266 | 216 | 197 | 224 | 125 | 199 |
| 2025 | – | – | – | – | – | – | 125 | – |
Show the math
- Formula
Indexᵢ(t) = 100 × Seriesᵢ(t) / Seriesᵢ(base)- Base period
- Default 2000; selectable among 2000, 2008, 2013, 2019, 2020. The base is the chart's one disclosed assumption: why the chart is PLAUSIBLE while each line is ROBUST. The menu offers only years where every core line already exists, so no line is ever back-filled.
- Confidence
- Chart PLAUSIBLE (Sound, mechanical computation resting on one disclosed assumption: the base period.); each line ROBUST (Each line is a primary-official series, rebased mechanically.); composite CONTESTED (The basket weighting that collapses the lines into one number is a judgment.).
- Disclosures
-
- Lines are NOMINAL dollars: nominal income vs nominal prices. We do not deflate; deflating is what hides the wedge.
- Canonical cadence is ANNUAL: monthly CPI components are resampled to calendar-year averages and joined on the year. Income is annual and is never interpolated.
- Income is collected each March; the CPI components are annual averages, a timing mismatch, disclosed, not bridged.
- CPI components are seasonally-adjusted (the smoothed line) except rent of primary residence (CUUR0000SEHA, NSA); NSA is offered as the fidelity option.
- Series begin where their data begins (tuition 1978, Case-Shiller 1987); before that the line is blank, never back-filled. Default base 2000 keeps every core line present.
- The 2013 CPS income-redesign break is marked on the income line and never silently bridged.
- Income break
- The Census redesigned the income questions in the 2014 CPS (2013 income year), raising measured median income by a level shift. The break is marked and never silently bridged; the ACS median (also Census) is the cross-check where it overlaps.
- Sources
- cpi · energy · food · income · medical · shelter_home · shelter_rent · tuition · vehicles · wages
Show the math
- Formula
RealWageIndex(t) = (AHE(t)/CPI(t)) / (AHE(base)/CPI(base)) × 100- Splice discipline
- Two wage series, shown separately and never spliced: all-employees AHE begins 2006-03; production-and-nonsupervisory AHE carries the history to 1964. They differ in level and composition.
- Cousin on screen
- S2, real wage growth (the flow, ROBUST), in the cousins row below.
- Sources
- cpi · wages_long · wages_modern
Show the math
- Specification
-
OLS: sentiment ~ const + unemployment + cpi_yoy + real_wage_growth, monthly, full available joint sample; Newey-West (HAC, 12 lags) standard errors - Sample
- 1965-02-01 to 2026-04-01 (631 months)
- R²
- 0.2769: published, not hidden; a low R² means the fundamentals never explained the mood fully, which is itself the finding
- Stationarity (ADF / KPSS)
- cpi_yoy: non-stationary (both tests agree) (ADF p=0.0691, KPSS p=0.01) · real_wage_growth: inconclusive (the two tests disagree) (ADF p=0.0006, KPSS p=0.01) · sentiment: inconclusive (the two tests disagree) (ADF p=0.1449, KPSS p=0.0957) · unemployment: stationary (both tests agree) (ADF p=0.0213, KPSS p=0.0711)
- Spurious-regression test (Engle-Granger)
- Residual ADF p = 0.5491: not clearly cointegrated at 5%; treat the gap as descriptive only. The test is published precisely because it does not flatter the model.
- Coefficients (std. err.)
- const: 107.1739 (5.4807) · cpi_yoy: -2.4403 (0.5521) · real_wage_growth: -0.745 (0.9739) · unemployment: -2.3268 (0.8969)
- Wage series
- Real wage growth uses production & nonsupervisory AHE (AHETPI, 1964+) so the sample reaches 1978; disclosed.
- Cousin on screen
- S1, the Misery Index (ROBUST, the blunt old version of the same instinct), in the cousins row below.
- Sources
- cpi · sentiment · unemployment · wages
ESTABLISHED COUSINS: OFFICIAL SERIES, SHOWN FOR ANCHOR
▲ +0.32 since last month
8.57 against fixed thresholds (8/11). higher than ~74% of its last decade
In context: what this read at past stress points
| Lehman, Sep 2008 | 11.05 | ▲ EXTREME |
|---|---|---|
| Q4-2018 selloff | 5.90 | · CALM |
| Curve inversion, Aug 2019 | 5.34 | · CALM |
| COVID crash, Mar 2020 | 5.89 | · CALM |
▼ −0.44 since last month
-0.82 against fixed thresholds (0/-1.5). lower than ~83% of its last decade
In context: what this read at past stress points
| Lehman, Sep 2008 | -1.67 | – |
|---|---|---|
| Q4-2018 selloff | 1.49 | · CALM |
| Curve inversion, Aug 2019 | 1.68 | · CALM |
| COVID crash, Mar 2020 | 1.97 | · CALM |
In context: what this read at past stress points
| Lehman, Sep 2008 | 15.55 | – |
|---|---|---|
| Q4-2018 selloff | 11.67 | · CALM |
| Curve inversion, Aug 2019 | 11.65 | · CALM |
| COVID crash, Mar 2020 | 11.59 | · CALM |
In context: what this read at past stress points
| Lehman, Sep 2008 | 1.20 | ▲ EXTREME |
|---|---|---|
| Q4-2018 selloff | 1.60 | · CALM |
| Curve inversion, Aug 2019 | 1.70 | · CALM |
| COVID crash, Mar 2020 | 1.80 | · CALM |
In context: what this read at past stress points
| Lehman, Sep 2008 | 28.10 | · CALM |
|---|---|---|
| Q4-2018 selloff | 30.00 | ◆ WATCH |
| Curve inversion, Aug 2019 | 30.40 | ◆ WATCH |
| COVID crash, Mar 2020 | 29.20 | ◆ WATCH |
In context: what this read at past stress points
| Lehman, Sep 2008 | 0.44 | – |
|---|---|---|
| Q4-2018 selloff | 0.45 | – |
| Curve inversion, Aug 2019 | 0.45 | – |
| COVID crash, Mar 2020 | 0.46 | – |
In context: what this read at past stress points
| Lehman, Sep 2008 | 31.90 | ◆ WATCH |
|---|---|---|
| Q4-2018 selloff | 28.80 | · CALM |
| Curve inversion, Aug 2019 | 28.20 | ◆ WATCH |
| COVID crash, Mar 2020 | 29.60 | · CALM |
In context: what this read at past stress points
| Lehman, Sep 2008 | 60.40 | · CALM |
|---|---|---|
| Q4-2018 selloff | 57.42 | · CALM |
| Curve inversion, Aug 2019 | 57.37 | · CALM |
| COVID crash, Mar 2020 | 58.84 | · CALM |
In context: what this read at past stress points
| Lehman, Sep 2008 | 7.79 | · CALM |
|---|---|---|
| Q4-2018 selloff | 10.04 | · CALM |
| Curve inversion, Aug 2019 | 10.15 | · CALM |
| COVID crash, Mar 2020 | 9.12 | · CALM |
▼ −0.12 since last month
higher than ~65% of its full record
In context: what this read at past stress points
| Lehman, Sep 2008 | 3.28 | – |
|---|---|---|
| Q4-2018 selloff | 3.49 | ◆ WATCH |
| Curve inversion, Aug 2019 | 3.42 | ◆ WATCH |
| COVID crash, Mar 2020 | 3.46 | ◆ WATCH |
▼ −0.43 since last month
lower than ~88% of its last 30 years
In context: what this read at past stress points
| Lehman, Sep 2008 | -1.25 | · CALM |
|---|---|---|
| Q4-2018 selloff | 1.68 | · CALM |
| Curve inversion, Aug 2019 | 1.90 | · CALM |
| COVID crash, Mar 2020 | 2.07 | · CALM |
Start with the three questions: can households afford the non-negotiables, is there anything left over, and where is it breaking. Every tile opens to its own page: the full history, how it is scored, and where it comes from. The macro layer (the stabilizing relationships, the context indicators, the crisis ratio) reads on the Instruments page.
Every number carries its primary source, its timestamp, and a reliability score. Every formula is one click away. On most days, most of this board should read calm, and it is built to say so.