first_print_drift
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-30, from asx-options-expiry-and-settlement.
| symbol | avg_move_bps |
|---|---|
| NVDA | 83.8 |
| MSFT | 75.8 |
| XOM | 67.5 |
| AAPL | 66.4 |
| WMT | 61.8 |
| JNJ | 58.4 |
| PG | 57.9 |
| KO | 49.9 |
- Rows × columns
- 8 × 2
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
symbol |
text | 8 distinct values (AAPL, JNJ, KO…) | |
avg_move_bps |
number | 49.9 to 83.8 |
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 opening_window AS (
SELECT
ticker AS symbol,
toDate(toTimeZone(window_start, 'America/New_York')) AS session_day,
(toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) AS et_minute,
toFloat64(open) AS bar_open,
toFloat64(close) AS bar_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'NVDA', 'KO', 'JNJ', 'PG', 'WMT', 'XOM')
AND window_start >= today() - 300
AND window_start < today() - 2
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 600
)
SELECT
symbol,
round(avg(abs(half_hour_price / first_print - 1) * 10000), 1) AS avg_move_bps
FROM
(
SELECT
symbol,
session_day,
argMin(bar_open, et_minute) AS first_print,
argMax(bar_close, et_minute) AS half_hour_price
FROM opening_window
GROUP BY symbol, session_day
HAVING first_print > 0
)
GROUP BY symbol
ORDER BY avg_move_bps DESC
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.