long_end
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-28, from what-is-the-5s30s-spread.
| episode | five_year_delta_bps | thirty_year_delta_bps | spread_delta_bps |
|---|---|---|---|
| Jan 26, 2000 to Sep 15, 2000 | -69 | -70 | -1 |
| Sep 19, 2000 to Sep 26, 2000 | -3 | -6 | -3 |
| Oct 26, 2000 to Nov 1, 2000 | 4 | 4 | 0 |
| Feb 9, 2006 to Mar 13, 2006 | 23 | 26 | 3 |
| Apr 1, 2022 to Apr 7, 2022 | 15 | 25 | 10 |
| Sep 13, 2022 to Oct 21, 2022 | 76 | 82 | 6 |
| Oct 28, 2022 to Nov 8, 2022 | 12 | 13 | 1 |
| Nov 17, 2022 to Dec 27, 2022 | 1 | 4 | 3 |
| Dec 29, 2022 to Jan 6, 2023 | -25 | -25 | 0 |
| Feb 3, 2023 to Mar 10, 2023 | 29 | 7 | -22 |
| Jun 9, 2023 to Aug 2, 2023 | 32 | 28 | -4 |
| Aug 11, 2023 to Aug 17, 2023 | 11 | 14 | 3 |
| Aug 21, 2023 to Aug 31, 2023 | -23 | -25 | -2 |
| Sep 6, 2023 to Sep 22, 2023 | 13 | 16 | 3 |
- Rows × columns
- 14 × 4
- 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 |
|---|---|---|---|
episode |
text | 14 distinct values | |
five_year_delta_bps |
number | -69 to 76 | |
thirty_year_delta_bps |
number | -70 to 82 | |
spread_delta_bps |
number | -22 to 10 |
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.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
WITH daily AS
(
SELECT
date,
toFloat64(yield_5_year) AS five_year,
toFloat64(yield_30_year) AS thirty_year,
toFloat64(yield_30_year) - toFloat64(yield_5_year) AS spread
FROM global_markets.treasury_yields
WHERE date >= subtractYears(today(), 30)
AND yield_5_year > 0
AND yield_30_year > 0
),
islands AS
(
SELECT
date,
five_year,
thirty_year,
spread,
row_number() OVER (ORDER BY date)
- row_number() OVER (PARTITION BY spread < 0 ORDER BY date) AS island
FROM daily
)
SELECT
concat(formatDateTime(min(date), '%b %e, %Y'), ' to ', formatDateTime(max(date), '%b %e, %Y')) AS episode,
round((argMax(five_year, date) - argMin(five_year, date)) * 100, 0) AS five_year_delta_bps,
round((argMax(thirty_year, date) - argMin(thirty_year, date)) * 100, 0) AS thirty_year_delta_bps,
round((argMax(spread, date) - argMin(spread, date)) * 100, 0) AS spread_delta_bps
FROM islands
WHERE spread < 0
GROUP BY island
HAVING count() >= 5
ORDER BY min(date)
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.