STRASMORE/EXPLORE 2,170 QUERIES

SPY by session: close, change, and share volume, July 20-24

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-08-12, from Market Recap: Week of July 20, 2026.

as of series 5×4read in context →
SPY by session: close, change, and share volume, July 20-24 — 5 rows by 4 columns, computed from US exchange, SIP and OPRA data.
datespy_closechange_pctspy_shares_m
2026-07-20742.1-0.1540.1
2026-07-21748.320.8425.6
2026-07-22747.39-0.1226.6
2026-07-23738.24-1.2248
2026-07-24738.850.0840.1
Rows × columns
5 × 4
Period covered
to
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 SPY by session: close, change, and share volume, July 20-24, derived from the stored result.
ColumnTypeRangeNotes
date date 2026-07-20 to 2026-07-24
spy_close number 738.24 to 748.32 US dollars
change_pct number -1.22 to 0.84 percent
spy_shares_m number 25.6 to 48 count

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
SELECT toString(d) AS date,
       round(c, 2) AS spy_close,
       round((c / prev_c - 1) * 100, 2) AS change_pct,
       round(shares_m, 1) AS spy_shares_m
FROM (
    SELECT d, c, shares_m,
           lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
    FROM (
        SELECT toDate(toTimeZone(window_start, 'America/New_York')) AS d,
               argMax(toFloat64(close), window_start) AS c,
               toFloat64(sum(volume)) / 1e6 AS shares_m
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND ((window_start >= '2026-07-17 13:30:00' AND window_start < '2026-07-17 20:00:00')
            OR (window_start >= '2026-07-20 13:30:00' AND window_start < '2026-07-24 20:00:00'))
          AND (toHour(window_start) * 60 + toMinute(window_start)) BETWEEN 810 AND 1199
        GROUP BY d
    )
)
WHERE d >= '2026-07-20'
ORDER BY date

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 analysisMarket Recap: Week of July 20, 2026
Treasury curve by session, July 17 print through July 24 series 6×6 SPY median quoted spread and NBBO updates per session, regular hours, July 20-24 series 5×5 Options contracts, same-day share, and call share by session, July 20-24 series 5×5 SEC filings by session and form type, July 20-24 series 5×5 Advancers and decliners per session, names with $5M+ traded, July 20-24 series 5×5 Daily short-volume file coverage: tickers on file and short shares, July 20-24 series 5×4 See all 2,170 queries →