STRASMORE/EXPLORE 2,767 QUERIES

daily_moves

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 series 24×4read in context →
daily_moves — 24 rows by 4 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelmedian_abs_move_bpsp90_abs_move_bps
2024-10-01Oct 202437
2024-11-01Nov 2024313.2
2024-12-01Dec 202447
2025-01-01Jan 202539
2025-02-01Feb 202549.2
2025-03-01Mar 202549
2025-04-01Apr 2025611
2025-05-01May 202548
2025-06-01Jun 202547.2
2025-07-01Jul 20253.57.9
2025-08-01Aug 202525
2025-09-01Sep 202535
2025-10-01Oct 202525.9
2025-11-01Nov 20252.55.3
2025-12-01Dec 202535
2026-01-01Jan 202624.2
2026-02-01Feb 202626.4
2026-03-01Mar 202658.9
2026-04-01Apr 202634
2026-05-01May 202637.3
2026-06-01Jun 202638
2026-07-01Jul 20263.56
2026-08-01Aug 202646
2026-09-01Sep 20262.58.5
Rows × columns
24 × 4
Period covered
to
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 daily_moves, derived from the stored result.
ColumnTypeRangeNotes
month date 2024-10-01 to 2026-09-01
month_label text 24 distinct values (Apr 2025, Apr 2026, Aug 2025…)
median_abs_move_bps number 2 to 6
p90_abs_move_bps number 4 to 13.2

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
    toString(toStartOfMonth(d))                                AS month,
    formatDateTime(toStartOfMonth(d), '%b %Y')                 AS month_label,
    round(quantileDeterministic(0.5)(chg_bps, toUInt32(d)), 1) AS median_abs_move_bps,
    round(quantileDeterministic(0.9)(chg_bps, toUInt32(d)), 1) AS p90_abs_move_bps
FROM
(
    SELECT
        d,
        prev,
        abs(cur - prev) * 100 AS chg_bps
    FROM
    (
        SELECT
            date                                AS d,
            toFloat64(ifNull(yield_10_year, 0)) AS cur,
            any(toFloat64(ifNull(yield_10_year, 0)))
                OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev
        FROM global_markets.treasury_yields
        WHERE date >= today() - 780
          AND yield_10_year > 0
    )
)
WHERE prev > 0
  AND d >= toStartOfMonth(today() - 700)
GROUP BY month, month_label
HAVING count() >= 5
ORDER BY month
⌘/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
monthly_curve series 24×5 → curve_today ranking 10×3 → tenor_steps ranking 2×3 → The 2s10s spread by month, full history series 604×5 → One SPY $600 LEAPS call's price over two years (expired Jan 16 2026) series 470×2 → The 5s30s spread month by month, with both legs series 241×4 → See all 2,767 queries →