expiry_morning_trace
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.
| et_time | distance_from_open_bps |
|---|---|
| 09:30 | 10.5 |
| 09:31 | 13.9 |
| 09:32 | 21.4 |
| 09:33 | 31.1 |
| 09:34 | 21.8 |
| 09:35 | 28.8 |
| 09:36 | 29.5 |
| 09:37 | 34.8 |
| 09:38 | 35.7 |
| 09:39 | 35.5 |
| 09:40 | 23.3 |
| 09:41 | 28.2 |
| 09:42 | 35.4 |
| 09:43 | 37.2 |
| 09:44 | 42.2 |
| 09:45 | 46.5 |
| 09:46 | 50.1 |
| 09:47 | 42.9 |
| 09:48 | 33.8 |
| 09:49 | 28.8 |
| 09:50 | 31.3 |
| 09:51 | 37.9 |
| 09:52 | 27.9 |
| 09:53 | 25.3 |
| 09:54 | 18.3 |
| 09:55 | 13.6 |
| 09:56 | 15.8 |
| 09:57 | 26 |
| 09:58 | 35.1 |
| 09:59 | 35.3 |
| 10:00 | 33.6 |
| 10:01 | 29.8 |
| 10:02 | 24.3 |
| 10:03 | 32.4 |
| 10:04 | 32.2 |
| 10:05 | 30.3 |
| 10:06 | 32.2 |
| 10:07 | 30.6 |
| 10:08 | 25.1 |
| 10:09 | 28.3 |
| 10:10 | 20.9 |
| 10:11 | 23.6 |
| 10:12 | 17 |
| 10:13 | 14.6 |
| 10:14 | 9 |
| 10:15 | 6.5 |
| 10:16 | 2.8 |
| 10:17 | 1.2 |
| 10:18 | 3.5 |
| 10:19 | 2.7 |
| 10:20 | 6.8 |
| 10:21 | 7.3 |
| 10:22 | 6.9 |
| 10:23 | 7.5 |
| 10:24 | 1.3 |
| 10:25 | 1.8 |
| 10:26 | 5.5 |
| 10:27 | 7.8 |
| 10:28 | 5 |
| 10:29 | 8.9 |
| 10:30 | 3.9 |
- Rows × columns
- 61 × 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 |
|---|---|---|---|
et_time |
text | 61 distinct values (09:30, 09:31, 09:32…) | |
distance_from_open_bps |
number | 1.2 to 50.1 | US dollars |
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
(
SELECT argMin(toFloat64(open), window_start)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-05-15')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
) AS opening_print
SELECT
formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_time,
round(abs(toFloat64(close) / opening_print - 1) * 10000, 1) AS distance_from_open_bps
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2026-05-15')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 630
ORDER BY et_time
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.