STRASMORE/EXPLORE 2,767 QUERIES

tenor_steps

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-29, from off-the-run-vs-on-the-run-treasuries.

as of ranking 2×3read in context →
tenor_steps — 2 rows by 3 columns, computed from US exchange, SIP and OPRA data.
tenor_pairavg_gap_bpsabs_bps_per_year
2-year to 10-year38.64.8
10-year to 30-year47.92.4
Rows × columns
2 × 3
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 tenor_steps, derived from the stored result.
ColumnTypeRangeNotes
tenor_pair text 2 distinct values (10-year to 30-year, 2-year to 10-year)
avg_gap_bps number 38.6 to 47.9
abs_bps_per_year number 2.4 to 4.8

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
    tenor_pair,
    round(avg(gap_pct) * 100, 1)                   AS avg_gap_bps,
    round(abs(avg(gap_pct)) * 100 / max(years), 1) AS abs_bps_per_year
FROM
(
    SELECT
        step.1 AS tenor_pair,
        step.2 AS gap_pct,
        step.3 AS years,
        step.4 AS step_order
    FROM
    (
        SELECT arrayJoin([
            ('2-year to 10-year',  toFloat64(yield_10_year) - toFloat64(yield_2_year),   8.0, 1),
            ('10-year to 30-year', toFloat64(yield_30_year) - toFloat64(yield_10_year), 20.0, 2)
        ]) AS step
        FROM global_markets.treasury_yields
        WHERE date >= today() - 120
          AND yield_2_year > 0
          AND yield_10_year > 0
          AND yield_30_year > 0
    )
)
GROUP BY tenor_pair
HAVING count() > 0
ORDER BY max(step_order)
⌘/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 analysisoff-the-run-vs-on-the-run-treasuries
curve_today ranking 10×3 → monthly_curve series 24×5 → daily_moves series 24×4 → Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays ranking 25×4 → Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years) ranking 25×3 → SPY options median spread by expiration date, near-the-money strikes only ranking 25×4 → See all 2,767 queries →