STRASMORE/EXPLORE 3,256 QUERIES 22Y EQUITIES · 12Y OPTIONS

3,256 answered market questions

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

Futures Price Limits and Price Banding
Typical and tail one-minute moves in the S&P 500 ETF, by half hour of the sessionseries · 2026-10-09 · 13×3Preview: a 13-point series, ending lower. Between-session gaps on four equity index ETFs, 2015 to datetable · 2026-10-09 · 4×5 Share of S&P 500 ETF sessions opening 1% or 2% from the prior close, by yeartable · 2026-10-09 · 12×5 S&P 500 ETF path on August 5, 2024, measured against the prior closeseries · 2026-10-09 · 39×3Preview: a 16-point series, ending lower.
Typical and tail one-minute moves in the S&P 500 ETF, by half hour of the session

Typical and tail one-minute moves in the S&P 500 ETF, by half hour of the session

most recentas of series 13×3read in context →
Typical and tail one-minute moves in the S&P 500 ETF, by half hour of the session — 13 rows by 3 columns, computed from US exchange, SIP and OPRA data.
et_timemedian_minute_move_pctp99_minute_move_pct
09:300.0250.171
10:000.0220.158
10:300.0190.138
11:000.0160.123
11:300.0150.113
12:000.0140.116
12:300.0140.114
13:000.0140.102
13:300.0130.121
14:000.0130.114
14:300.0130.113
15:000.0130.114
15:300.0170.137
the exact SQL behind every number
SELECT
    formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
    round(100 * quantileDeterministic(0.5)(abs(toFloat64(close) / toFloat64(open) - 1),
                                           toUInt64(toUnixTimestamp(window_start))), 3) AS median_minute_move_pct,
    round(100 * quantileDeterministic(0.99)(abs(toFloat64(close) / toFloat64(open) - 1),
                                            toUInt64(toUnixTimestamp(window_start))), 3) AS p99_minute_move_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= '2024-01-01 00:00:00'
  AND window_start <  '2026-10-01 00:00:00'
  AND volume > 0
  AND open > 0
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
       + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
  AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
       + toMinute(toTimeZone(window_start, 'America/New_York'))) < 960
GROUP BY et_time
ORDER BY et_time ASC
$