STRASMORE/EXPLORE 3,094 QUERIES

The Treasury curve now and a year ago, by maturity

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-10-05, from What Is the Term Premium in Bond Yields?.

as of table 6×3read in context →
The Treasury curve now and a year ago, by maturity — 6 rows by 3 columns, computed from US exchange, SIP and OPRA data.
maturityyield_recent_pctyield_year_ago_pct
3M4.144.07
2Y4.723.57
5Y4.873.66
10Y5.054.12
20YNoneNone
30Y5.44.74
Rows × columns
6 × 3
Computed
Completeness
Some fields are partly empty — see the columns below
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 Treasury curve now and a year ago, by maturity, derived from the stored result.
ColumnTypeRangeNotes
maturity text 6 distinct values (10Y, 20Y, 2Y…)
yield_recent_pct number 4.14 to 5.4 percent · 5 of 6 rows populated
yield_year_ago_pct number 3.57 to 4.74 percent · 5 of 6 rows populated

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.

SELECT
    leg.1 AS maturity,
    leg.2 AS yield_recent_pct,
    leg.3 AS yield_year_ago_pct
FROM
(
    SELECT
        round(avgIf(toFloat64(yield_3_month), is_recent), 2) AS m3_now,
        round(avgIf(toFloat64(yield_3_month), is_prior), 2)  AS m3_then,
        round(avgIf(toFloat64(yield_2_year), is_recent), 2)  AS y2_now,
        round(avgIf(toFloat64(yield_2_year), is_prior), 2)   AS y2_then,
        round(avgIf(toFloat64(yield_5_year), is_recent), 2)  AS y5_now,
        round(avgIf(toFloat64(yield_5_year), is_prior), 2)   AS y5_then,
        round(avgIf(toFloat64(yield_10_year), is_recent), 2) AS y10_now,
        round(avgIf(toFloat64(yield_10_year), is_prior), 2)  AS y10_then,
        round(avgIf(toFloat64(yield_20_year), is_recent), 2) AS y20_now,
        round(avgIf(toFloat64(yield_20_year), is_prior), 2)  AS y20_then,
        round(avgIf(toFloat64(yield_30_year), is_recent), 2) AS y30_now,
        round(avgIf(toFloat64(yield_30_year), is_prior), 2)  AS y30_then
    FROM
    (
        SELECT
            yield_3_month,
            yield_2_year,
            yield_5_year,
            yield_10_year,
            yield_20_year,
            yield_30_year,
            date >= today() - 30                         AS is_recent,
            date BETWEEN today() - 400 AND today() - 370 AS is_prior
        FROM global_markets.treasury_yields
        WHERE (date >= today() - 30 OR date BETWEEN today() - 400 AND today() - 370)
          AND yield_10_year > 0
    )
    HAVING countIf(is_recent) > 0 AND countIf(is_prior) > 0
)
ARRAY JOIN
[
    ('3M',  m3_now,  m3_then),
    ('2Y',  y2_now,  y2_then),
    ('5Y',  y5_now,  y5_then),
    ('10Y', y10_now, y10_then),
    ('20Y', y20_now, y20_then),
    ('30Y', y30_now, y30_then)
] AS leg
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisWhat Is the Term Premium in Bond Yields?
Month over month change in the 3 month bill and the 10 year, in basis points series 26×4 → The 5 year, the 10 year, and the implied 5y5y forward rate series 26×5 → Ten year inflation expectations: market implied against model based series 18×5 → The 10 year yield split into implied inflation and an implied real yield series 18×5 → 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 → See all 3,094 queries →