The 2s10s over the trailing six months, with the 2-year and 10-year moves that produced it
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-09-19, from What Happens When the Yield Curve Un-Inverts.
| week | week_label | y2_yield | y10_yield | spread_2s10s | y2_move_bp | y10_move_bp | steepening_type |
|---|---|---|---|---|---|---|---|
| 2026-03-23 | Mar 23 | 3.88 | 4.44 | 0.56 | 0 | 0 | no steepening over the window |
| 2026-03-30 | Mar 30 | 3.84 | 4.35 | 0.51 | -4 | -9 | no steepening over the window |
| 2026-04-06 | Apr 6 | 3.81 | 4.31 | 0.5 | -7 | -13 | no steepening over the window |
| 2026-04-13 | Apr 13 | 3.71 | 4.26 | 0.55 | -17 | -18 | no steepening over the window |
| 2026-04-20 | Apr 20 | 3.78 | 4.31 | 0.53 | -10 | -13 | no steepening over the window |
| 2026-04-27 | Apr 27 | 3.88 | 4.39 | 0.51 | 0 | -5 | no steepening over the window |
| 2026-05-04 | May 4 | 3.9 | 4.38 | 0.48 | 2 | -6 | no steepening over the window |
| 2026-05-11 | May 11 | 4.09 | 4.59 | 0.5 | 21 | 15 | no steepening over the window |
| 2026-05-18 | May 18 | 4.13 | 4.56 | 0.43 | 25 | 12 | no steepening over the window |
| 2026-05-25 | May 25 | 3.98 | 4.45 | 0.47 | 10 | 1 | no steepening over the window |
| 2026-06-01 | Jun 1 | 4.17 | 4.55 | 0.38 | 29 | 11 | no steepening over the window |
| 2026-06-08 | Jun 8 | 4.09 | 4.48 | 0.39 | 21 | 4 | no steepening over the window |
| 2026-06-15 | Jun 15 | 4.19 | 4.46 | 0.27 | 31 | 2 | no steepening over the window |
| 2026-06-22 | Jun 22 | 4.07 | 4.38 | 0.31 | 19 | -6 | no steepening over the window |
| 2026-06-29 | Jun 29 | 4.14 | 4.49 | 0.35 | 26 | 5 | no steepening over the window |
| 2026-07-06 | Jul 6 | 4.21 | 4.56 | 0.35 | 33 | 12 | no steepening over the window |
| 2026-07-13 | Jul 13 | 4.18 | 4.55 | 0.37 | 30 | 11 | no steepening over the window |
| 2026-07-20 | Jul 20 | 4.33 | 4.69 | 0.36 | 45 | 25 | no steepening over the window |
| 2026-07-27 | Jul 27 | 4.28 | 4.75 | 0.47 | 40 | 31 | no steepening over the window |
| 2026-08-03 | Aug 3 | 4.19 | 4.65 | 0.46 | 31 | 21 | no steepening over the window |
| 2026-08-10 | Aug 10 | 4.17 | 4.68 | 0.51 | 29 | 24 | no steepening over the window |
| 2026-08-17 | Aug 17 | 4.24 | 4.74 | 0.5 | 36 | 30 | no steepening over the window |
| 2026-08-24 | Aug 24 | 4.34 | 4.73 | 0.39 | 46 | 29 | no steepening over the window |
| 2026-08-31 | Aug 31 | 4.37 | 4.78 | 0.41 | 49 | 34 | no steepening over the window |
| 2026-09-07 | Sep 7 | 4.63 | 4.96 | 0.33 | 75 | 52 | no steepening over the window |
| 2026-09-14 | Sep 14 | 4.67 | 4.94 | 0.27 | 79 | 50 | no steepening over the window |
- Rows × columns
- 26 × 8
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
week |
date | 2026-03-23 to 2026-09-14 | |
week_label |
text | 26 distinct values (Apr 13, Apr 20, Apr 27…) | |
y2_yield |
number | 3.71 to 4.67 | ratio or rate |
y10_yield |
number | 4.26 to 4.96 | ratio or rate |
spread_2s10s |
number | 0.27 to 0.56 | |
y2_move_bp |
number | -17 to 79 | |
y10_move_bp |
number | -18 to 52 | |
steepening_type |
text | 1 distinct value (no steepening over the window) |
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
SELECT
week,
week_label,
y2_yield,
y10_yield,
spread_2s10s,
y2_move_bp,
y10_move_bp,
multiIf(
(y10_move_bp - y2_move_bp) <= 0, 'no steepening over the window',
y2_move_bp < 0 AND abs(y2_move_bp) >= abs(y10_move_bp), 'bull steepener (2-year fell most)',
'bear steepener (10-year rose most)'
) AS steepening_type
FROM
(
SELECT
week,
week_label,
y2_yield,
y10_yield,
spread_2s10s,
round((y2_yield - first_value(y2_yield) OVER (ORDER BY week ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) * 100) AS y2_move_bp,
round((y10_yield - first_value(y10_yield) OVER (ORDER BY week ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)) * 100) AS y10_move_bp
FROM
(
SELECT
toStartOfWeek(date, 1) AS week,
formatDateTime(week, '%b %e') AS week_label,
round(argMax(ifNull(toFloat64(yield_2_year), 0.), date), 2) AS y2_yield,
round(argMax(ifNull(toFloat64(yield_10_year), 0.), date), 2) AS y10_yield,
round(argMax(ifNull(toFloat64(yield_10_year), 0.) - ifNull(toFloat64(yield_2_year), 0.), date), 2) AS spread_2s10s
FROM global_markets.treasury_yields
WHERE date >= today() - 182
AND yield_2_year > 0 AND yield_10_year > 0
GROUP BY week
)
)
ORDER BY week
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 analysisWhat Happens When the Yield Curve Un-Inverts
The 2s10s spread by month, full history
series 604×5
→
Which leg did the work: 2-year and 10-year moves over the 91 days before each crossing
table 7×9
→
Every 2s10s un-inversion: the crossing and the spread 3, 6 and 12 months later
table 7×8
→
SPY's change from the crossing-day close, 3, 6 and 12 months after each un-inversion
table 2×5
→
3m10y and 2s10s spreads, monthly averages over twenty years
series 241×4
→
3-month and 10-year yields with both spreads, last 90 days
series 62×6
→
See all 2,401 queries →