{"slug":"treasury-curve-2026-h1","qid":"twist_rank","label":"The rank receipt: H1 2026's twist against every prior half, by absolute size","post_title":"Treasury Yield Curve, H1 2026: Twist, Not Shift","post_url":"/blog/treasury-curve-2026-h1#q-twist_rank","columns":["h1_2026_twist_bp","rank_by_magnitude","halves_compared","first_year","halves_with_inversion","last_inverted_half_start"],"rows":[{"h1_2026_twist_bp":42,"rank_by_magnitude":42,"halves_compared":100,"first_year":1976,"halves_with_inversion":28,"last_inverted_half_start":"2024-07-01"}],"shape":"scalar","sql":"SELECT\n    round(anyIf(twist, period_start = '2026-01-01'), 0) AS h1_2026_twist_bp,\n    arrayCount(x -> abs(x) > abs(anyIf(twist, period_start = '2026-01-01')), groupArrayIf(twist, period_start != '2026-01-01')) + 1 AS rank_by_magnitude,\n    count() AS halves_compared,\n    toUInt16OrZero(substring(min(period_start), 1, 4)) AS first_year,\n    countIf(min_2s10s < 0) AS halves_with_inversion,\n    max(if(min_2s10s < 0, period_start, '')) AS last_inverted_half_start\nFROM (\n    SELECT concat(toString(toYear(date)), if(toMonth(date) <= 6, '-01-01', '-07-01')) AS period_start,\n           count() AS prints,\n           (argMax(yield_2_year, date) - argMin(yield_2_year, date)) * 100\n             - (argMax(yield_10_year, date) - argMin(yield_10_year, date)) * 100 AS twist,\n           min(yield_10_year - yield_2_year) * 100 AS min_2s10s\n    FROM global_markets.treasury_yields\n    WHERE date >= toDate('1976-07-01') AND date <= toDate('2026-06-30')\n      AND isNotNull(yield_2_year) AND isNotNull(yield_10_year)\n    GROUP BY period_start\n    HAVING prints >= 100\n)","computed_at":"2026-07-26T06:16:31.200482+00:00","elapsed":0.200342465}