The 9:30 bar vs. the 12:30 bar: SPY, AAPL, NVDA on July 2, 2026
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-07-26, from What Is the Opening Auction? How Stocks Open.
| ticker | bar_0930_open | official_open | bar_open_minus_official_cents | bar_0930_vol_k | bar_0930_trades | bar_1230_vol_k | x_0930_vs_1230 |
|---|---|---|---|---|---|---|---|
| SPY | 747.4 | 747.22 | 18 | 479 | 8632 | 133 | 3.6 |
| AAPL | 294.12 | 294.1 | 2 | 743 | 14662 | 121 | 6.1 |
| NVDA | 197.14 | 197.12 | 2 | 1688 | 36319 | 226 | 7.5 |
- Rows × columns
- 3 × 8
- 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 |
|---|---|---|---|
ticker |
text | 3 distinct values (AAPL, NVDA, SPY) | |
bar_0930_open |
number | 197.14 to 747.4 | US dollars |
official_open |
number | 197.12 to 747.22 | US dollars |
bar_open_minus_official_cents |
number | 2 to 18 | US dollars |
bar_0930_vol_k |
number | 479 to 1,688 | |
bar_0930_trades |
number | 8,632 to 36,319 | count |
bar_1230_vol_k |
number | 121 to 226 | |
x_0930_vs_1230 |
number | 3.6 to 7.5 |
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.
the exact SQL behind every number
WITH auctions AS (
SELECT ticker, toFloat64(argMax(price, (size, sip_timestamp))) AS official_open
FROM global_markets.stocks_trades
WHERE ticker IN ('SPY', 'AAPL', 'NVDA')
AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'
AND has(conditions, 17)
GROUP BY ticker
)
SELECT
b.ticker AS ticker,
toFloat64(anyIf(b.open, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York'))) AS bar_0930_open,
a.official_open AS official_open,
round(100 * (toFloat64(anyIf(b.open, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York'))) - a.official_open), 0) AS bar_open_minus_official_cents,
round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) / 1e3) AS bar_0930_vol_k,
anyIf(b.transactions, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) AS bar_0930_trades,
round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 12:30:00', 'America/New_York')) / 1e3) AS bar_1230_vol_k,
round(sumIf(b.volume, b.window_start = toDateTime('2026-07-02 09:30:00', 'America/New_York')) / sumIf(b.volume, b.window_start = toDateTime('2026-07-02 12:30:00', 'America/New_York')), 1) AS x_0930_vs_1230
FROM global_markets.delayed_stocks_minute_aggs AS b
INNER JOIN auctions AS a ON a.ticker = b.ticker
WHERE b.ticker IN ('SPY', 'AAPL', 'NVDA')
AND b.window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York')
AND b.window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
GROUP BY b.ticker, a.official_open
ORDER BY indexOf(['SPY', 'AAPL', 'NVDA'], b.ticker)
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisWhat Is the Opening Auction? How Stocks Open
AAPL volume by quarter-hour, July 2, 2026: pre-market to after-hours (ET)
series 64×2
→
The tape's own labels for the open, straight from the code dictionary
ranking 5×3
→
The opening cross vs. the rest of the day: SPY, AAPL, NVDA on July 2, 2026
series 3×12
→
The receipt: AAPL's opening cross vs. everything that traded before it, July 1-2, 2026
scalar 1×14
→
20-session regular-hours ADV: shares, dollars, and the extended-hours share (June 11 – July 10, 2026)
table 5×5
→
Where AAPL's 10,000-share-and-up prints executed: July 6, 2026
table 4×5
→
See all 2,170 queries →