STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

Treasury Yield Curve, H1 2026: Twist, Not Shift
The rank receipt: H1 2026's twist against every prior half, by absolute sizescalar · 2026-07-26 · 1×642 Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s printtable · 2026-07-26 · 100×7 The 30-year's half: start, end, the first and last 5% prints, time spent at or above 5%, and the highscalar · 2026-07-26 · 1×84.86 The 2s10s spread, every print of the halftable · 2026-07-26 · 124×2 The 2s10s slope receipt: start, end, minimum (with its date), maximum, and print countscalar · 2026-07-26 · 1×672 The H1 2026 move per maturity, split into quarters: the hump sits squarely on the 2-yearranking · 2026-07-26 · 7×4Preview: 7 ranked values, largest first. Seven maturities, three single-day snapshots: the half's first print, the last March print, and the last June printranking · 2026-07-26 · 7×4Preview: 7 ranked values, smallest first.
The rank receipt: H1 2026's twist against every prior half, by absolute size

The rank receipt: H1 2026's twist against every prior half, by absolute size

most recentas of scalar 1×6read in context →
h1 2026 twist bp
42
rank by magnitude
42
halves compared
100
first year
1,976
halves with inversion
28
last inverted half start
2024-07-01
the exact SQL behind every number
SELECT
    round(anyIf(twist, period_start = '2026-01-01'), 0) AS h1_2026_twist_bp,
    arrayCount(x -> abs(x) > abs(anyIf(twist, period_start = '2026-01-01')), groupArrayIf(twist, period_start != '2026-01-01')) + 1 AS rank_by_magnitude,
    count() AS halves_compared,
    toUInt16OrZero(substring(min(period_start), 1, 4)) AS first_year,
    countIf(min_2s10s < 0) AS halves_with_inversion,
    max(if(min_2s10s < 0, period_start, '')) AS last_inverted_half_start
FROM (
    SELECT concat(toString(toYear(date)), if(toMonth(date) <= 6, '-01-01', '-07-01')) AS period_start,
           count() AS prints,
           (argMax(yield_2_year, date) - argMin(yield_2_year, date)) * 100
             - (argMax(yield_10_year, date) - argMin(yield_10_year, date)) * 100 AS twist,
           min(yield_10_year - yield_2_year) * 100 AS min_2s10s
    FROM global_markets.treasury_yields
    WHERE date >= toDate('1976-07-01') AND date <= toDate('2026-06-30')
      AND isNotNull(yield_2_year) AND isNotNull(yield_10_year)
    GROUP BY period_start
    HAVING prints >= 100
)
$