STRASMORE/EXPLORE 2,549 QUERIES

daily_move_distribution

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-24, from mutual-fund-forward-pricing-rule.

as of ranking 5×3read in context →
daily_move_distribution — 5 rows by 3 columns, computed from US exchange, SIP and OPRA data.
move_bucketobservationsshare_of_sessions_pct
under 0.25%26328.7
0.25% to 0.5%19421.2
0.5% to 1%26228.6
1% to 2%17118.6
over 2%272.9
Rows × columns
5 × 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 daily_move_distribution, derived from the stored result.
ColumnTypeRangeNotes
move_bucket text 5 distinct values (0.25% to 0.5%, 0.5% to 1%, 1% to 2%…)
observations number 27 to 263
share_of_sessions_pct number 2.9 to 28.7 percent

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.

WITH d AS
(
    SELECT
        toFloat64(close)                                    AS px,
        lagInFrame(toFloat64(close)) OVER (ORDER BY date
            ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING)       AS prev_px
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'SPY'
      AND date >= '2023-01-01'
      AND date <  '2026-09-01'
),
moves AS
(
    SELECT abs(px / prev_px - 1) * 100 AS move_pct
    FROM d
    WHERE prev_px > 0
)
SELECT
    multiIf(move_pct < 0.25, 'under 0.25%',
            move_pct < 0.5,  '0.25% to 0.5%',
            move_pct < 1,    '0.5% to 1%',
            move_pct < 2,    '1% to 2%',
                             'over 2%')                     AS move_bucket,
    count()                                                 AS observations,
    round(100.0 * count() / sum(count()) OVER (), 1)        AS share_of_sessions_pct
FROM moves
GROUP BY move_bucket
ORDER BY min(move_pct)
⌘/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 analysismutual-fund-forward-pricing-rule
extreme_gaps ranking 10×4 → close_gap_by_time series 13×3 → nav_strike_calendar series 12×5 → 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,549 queries →