The Macro Picture Entering H2 2026, With Receipts
Headline CPI ran 4.2 percent year-over-year in May while core crept and long-run expectations held near anchor; unemployment improved as participation slipped.
Three macro series frame the second half: inflation that accelerated at the headline while the core crept, long-run inflation expectations that barely moved, and a labor market whose headline rate improved while its participation slipped. This page shows all three with their as-of receipts — including which prints existed at generation and which were still pending. Every number is a stored query result; expand any panel for the exact SQL.
Headline inflation accelerated; core crept
The exact SQL behind every number
SELECT toString(date) AS period_start,
round(cpi, 1) AS cpi_index,
round((cpi / any(cpi_prior) - 1) * 100, 1) AS cpi_yoy_pct,
round((cpi_core / any(core_prior) - 1) * 100, 1) AS core_yoy_pct
FROM global_markets.inflation
INNER JOIN (
SELECT date + INTERVAL 1 YEAR AS match_date, cpi AS cpi_prior, cpi_core AS core_prior
FROM global_markets.inflation
WHERE date >= toDate('2025-01-01') AND date <= toDate('2025-05-01')
) AS p ON date = p.match_date
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-05-01')
GROUP BY date, cpi, cpi_core
ORDER BY dateHeadline CPI ran 2.4% year-over-year in January and 4.2% by May — an acceleration of nearly two points in five months — while core CPI moved only from 2.5% to 2.8%. A headline running away from its core is a specific data shape: the volatile components are doing the moving. Which components, this table cannot say — and so this page doesn't.
Expectations: the anchor held
The exact SQL behind every number
SELECT toString(date) AS period_start,
round(model_1_year, 2) AS exp_1y_pct,
round(model_5_year, 2) AS exp_5y_pct,
round(model_10_year, 2) AS exp_10y_pct
FROM global_markets.inflation_expectations
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
ORDER BY dateThe one-year expectation jumped around — 2.59% in January, 3.54% in May, 3.02% in June — but the ten-year barely moved: 2.33% to 2.49%. Markets repriced the next year's inflation and left the next decade's alone; that gap between the horizons coincides with the front-pinned Treasury curve in the curve deep-dive.
The labor market: a better headline on a thinner base
The exact SQL behind every number
SELECT toString(date) AS period_start,
unemployment_rate,
labor_force_participation_rate AS participation_pct,
round(avg_hourly_earnings, 2) AS avg_hourly_earnings,
toString(toDate(_ingest_time)) AS arrived_here
FROM global_markets.labor_market
WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30')
ORDER BY dateUnemployment ended the half at 4.2% — the best print of the six months — but participation slipped from 62.1% to 61.5% over the same stretch: the rate improved while the measured labor force share shrank. The two moved together; this table records the co-movement and stops there. Average hourly earnings rose from $37.17 to $37.64.
What existed when this page was written
The exact SQL behind every number
SELECT
(SELECT count() FROM global_markets.inflation WHERE date = toDate('2026-06-01')) AS june_cpi_rows,
(SELECT count() FROM global_markets.labor_market WHERE date = toDate('2026-06-01')) AS june_labor_rows,
(SELECT count() FROM global_markets.inflation_expectations WHERE date = toDate('2026-06-01')) AS june_expectations_rows,
(SELECT toString(toDate(max(_ingest_time))) FROM global_markets.labor_market WHERE date = toDate('2026-06-01')) AS june_labor_arrivedMacro data arrives on a schedule, and honest macro pages say where that schedule stood: at generation the June labor print existed (1 row, arrived 2026-07-02 — AFTER June ended, the usual pattern), June expectations existed (1 row) — but June CPI did not (0 rows). The inflation panel above ends at May for exactly that reason, and this page regenerates when the June print lands; the zero in that receipt is the tripwire.
Data notes
Full data notes
- CPI year-over-year is computed inside the query from the index level against the same month a year earlier — never taken from a pre-computed field (the table's own year-over-year column is null in this window).
- The ingest column is this warehouse's arrival date — the June labor row was ingested July 2, which is why a June 29 analysis could not have seen it. Monthly-macro rows regularly arrive after the month they describe.
- Expectations are model-based series; the market-implied columns are sparsely populated in this window and not used.
- The rates these releases traded against: the H1 curve deep-dive. The equity half: the H1 recap.
Methodology
- Period: January 1 – June 30, 2026, monthly series. The year-over-year join reaches into 2025 by construction (that is what year-over-year means); everything else filters to the period.
- Generation runs through the gated read-only path; the public page never queries live. Warehouse state as of July 4, 2026.
Every panel is one stored object — chart, table, and SQL. Take any series further on the Strasmore terminal.