STRASMORE/EXPLORE 2,170 QUERIES

The H1 2026 move per maturity, split into quarters: the hump sits squarely on the 2-year

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-07-26, from Treasury Yield Curve, H1 2026: Twist, Not Shift.

as of ranking 7×4read in context →
The H1 2026 move per maturity, split into quarters: the hump sits squarely on the 2-year — 7 rows by 4 columns, computed from US exchange, SIP and OPRA data.
maturityq1_change_bpq2_change_bph1_change_bp
1-month2-4-2
3-month51722
1-year213051
2-year323567
5-year182745
10-year111425
30-year235
Rows × columns
7 × 4
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for The H1 2026 move per maturity, split into quarters: the hump sits squarely on the 2-year, derived from the stored result.
ColumnTypeRangeNotes
maturity text 7 distinct values (1-month, 1-year, 10-year…)
q1_change_bp number 2 to 32
q2_change_bp number -4 to 35
h1_change_bp number -2 to 67

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

the exact SQL behind every number
WITH
    (SELECT (yield_1_month, yield_3_month, yield_1_year, yield_2_year, yield_5_year, yield_10_year, yield_30_year) FROM global_markets.treasury_yields
     WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') ORDER BY date ASC LIMIT 1) AS jan_row,
    (SELECT (yield_1_month, yield_3_month, yield_1_year, yield_2_year, yield_5_year, yield_10_year, yield_30_year) FROM global_markets.treasury_yields
     WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-03-31') ORDER BY date DESC LIMIT 1) AS mar_row,
    (SELECT (yield_1_month, yield_3_month, yield_1_year, yield_2_year, yield_5_year, yield_10_year, yield_30_year) FROM global_markets.treasury_yields
     WHERE date >= toDate('2026-01-01') AND date <= toDate('2026-06-30') ORDER BY date DESC LIMIT 1) AS jun_row
SELECT z.1 AS maturity,
       round((z.3 - z.2) * 100, 0) AS q1_change_bp,
       round((z.4 - z.3) * 100, 0) AS q2_change_bp,
       round((z.4 - z.2) * 100, 0) AS h1_change_bp
FROM (
    SELECT arrayJoin(arrayZip(['1-month','3-month','1-year','2-year','5-year','10-year','30-year'],
        [jan_row.1, jan_row.2, jan_row.3, jan_row.4, jan_row.5, jan_row.6, jan_row.7],
        [mar_row.1, mar_row.2, mar_row.3, mar_row.4, mar_row.5, mar_row.6, mar_row.7],
        [jun_row.1, jun_row.2, jun_row.3, jun_row.4, jun_row.5, jun_row.6, jun_row.7])) AS z
)

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisTreasury Yield Curve, H1 2026: Twist, Not Shift
Seven maturities, three single-day snapshots: the half's first print, the last March print, and the last June print ranking 7×4 The 2s10s spread, every print of the half table 124×2 Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print table 100×7 The rank receipt: H1 2026's twist against every prior half, by absolute size scalar 1×6 The 30-year's half: start, end, the first and last 5% prints, time spent at or above 5%, and the high scalar 1×8 The 2s10s slope receipt: start, end, minimum (with its date), maximum, and print count scalar 1×6 See all 2,170 queries →