STRASMORE/EXPLORE 2,170 QUERIES

The receipt: AAPL's opening cross vs. everything that traded before it, July 1-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.

as of scalar 1×14read in context →
spy session bars jul02
390
jul01 close print count
1
prior close price
294.38
opening print count
1
auction price
294.1
auction et
09:30:00.491313
overnight gap pct
-0.1
first trade et
04:00:00
first trade price
296.1
trades before official open
15,832
bell to cross trades
173
official open msgs
2
listing venue open msgs
1
listing open msg price difference
0
Rows × columns
1 × 14
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 The receipt: AAPL's opening cross vs. everything that traded before it, July 1-2, 2026, derived from the stored result.
ColumnTypeRangeNotes
spy_session_bars_jul02 number every row is 390
jul01_close_print_count number every row is 1 US dollars
prior_close_price number every row is 294.38 US dollars
opening_print_count number every row is 1 count
auction_price number every row is 294.1 US dollars
auction_et text 1 distinct value (09:30:00.491313)
overnight_gap_pct number every row is -0.1 percent
first_trade_et text 1 distinct value (04:00:00)
first_trade_price number every row is 296.1 US dollars
trades_before_official_open number every row is 15,832 US dollars
bell_to_cross_trades number every row is 173 count
official_open_msgs number every row is 2 US dollars
listing_venue_open_msgs number every row is 1 US dollars
listing_open_msg_price_difference number every row is 0 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.

the exact SQL behind every number
WITH
    (
        SELECT countIf(window_start >= toDateTime('2026-07-02 09:30:00', 'America/New_York') AND window_start < toDateTime('2026-07-02 16:00:00', 'America/New_York'))
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY' AND window_start >= toDateTime('2026-07-02 00:00:00', 'America/New_York') AND window_start < toDateTime('2026-07-03 00:00:00', 'America/New_York')
    ) AS bars_jul02,
    (
        SELECT argMax(sip_timestamp, (size, sip_timestamp))
        FROM global_markets.stocks_trades
        WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00' AND has(conditions, 17)
    ) AS auction_ts,
    (
        SELECT argMax(exchange, (size, sip_timestamp))
        FROM global_markets.stocks_trades
        WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00' AND has(conditions, 17)
    ) AS listing_exchange
SELECT
    bars_jul02 AS spy_session_bars_jul02,
    countIf(has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00') AS jul01_close_print_count,
    toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00')) AS prior_close_price,
    countIf(has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00') AS opening_print_count,
    toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')) AS auction_price,
    formatDateTime(toTimeZone(auction_ts, 'America/New_York'), '%H:%i:%S.%f') AS auction_et,
    round(100 * (toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')) - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00'))) / toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 8) AND sip_timestamp < '2026-07-02 00:00:00')), 2) AS overnight_gap_pct,
    formatDateTime(toTimeZone(minIf(sip_timestamp, sip_timestamp >= '2026-07-02 00:00:00' AND NOT hasAny(conditions, [15, 16, 38])), 'America/New_York'), '%H:%i:%S') AS first_trade_et,
    toFloat64(argMinIf(price, (sip_timestamp, sequence_number), sip_timestamp >= '2026-07-02 00:00:00' AND NOT hasAny(conditions, [15, 16, 38]))) AS first_trade_price,
    countIf(sip_timestamp >= '2026-07-02 00:00:00' AND sip_timestamp < auction_ts AND NOT hasAny(conditions, [15, 16, 38])) AS trades_before_official_open,
    countIf(sip_timestamp >= toDateTime('2026-07-02 09:30:00', 'America/New_York') AND sip_timestamp < auction_ts AND NOT hasAny(conditions, [15, 16, 38])) AS bell_to_cross_trades,
    countIf(has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00') AS official_open_msgs,
    countIf(has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00' AND exchange = listing_exchange) AS listing_venue_open_msgs,
    round(toFloat64(anyIf(price, has(conditions, 16) AND sip_timestamp >= '2026-07-02 00:00:00' AND exchange = listing_exchange)) - toFloat64(argMaxIf(price, (size, sip_timestamp), has(conditions, 17) AND sip_timestamp >= '2026-07-02 00:00:00')), 4) AS listing_open_msg_price_difference
FROM global_markets.stocks_trades
WHERE ticker = 'AAPL' AND sip_timestamp >= '2026-07-01 00:00:00' AND sip_timestamp < '2026-07-03 00:00:00'

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 9:30 bar vs. the 12:30 bar: SPY, AAPL, NVDA on July 2, 2026 table 3×8 MU, the biggest-volume session of June 2026: time-adjusted vs. naive RVOL, plus the full-day figure scalar 1×8 The closing-cross window (3:59-4:00 p.m. ET): dollar volume on witching day vs. a typical June 2026 session scalar 1×5 See all 2,170 queries →