STRASMORE/EXPLORE 2,249 QUERIES

VOO: last traded price in each 30-minute bucket of the most recent complete session (ET, extended hours included)

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-15, from Can You Day Trade an Index Fund? ETFs vs Funds.

as of series 25×2read in context →
VOO: last traded price in each 30-minute bucket of the most recent complete session (ET, extended hours included) — 25 rows by 2 columns, computed from US exchange, SIP and OPRA data.
et_timelast_price
01:00698
01:30697.72
02:00697.8
02:30698.64
03:00697.5
03:30697.28
04:00698.27
04:30700.28
05:00700.52
05:30701.21
06:00701.1
06:30700.81
07:00700.49
07:30700.58
08:00700.24
08:30699.35
09:00699.61
09:30700
10:00699.77
10:30699.71
11:00699.71
11:30699.75
12:00699.59
12:30699.67
13:00699.66
Rows × columns
25 × 2
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 VOO: last traded price in each 30-minute bucket of the most recent complete session (ET, extended hours included), derived from the stored result.
ColumnTypeRangeNotes
et_time text 25 distinct values (01:00, 01:30, 02:00…)
last_price number 697.28 to 701.21 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
SELECT formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
       round(argMax(toFloat64(close), window_start), 2) AS last_price
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'VOO'
  AND window_start >= today() - 21
  AND window_start < today()
  AND toDate(toTimeZone(window_start, 'America/New_York')) = (
      SELECT max(toDate(toTimeZone(window_start, 'America/New_York')))
      FROM global_markets.delayed_stocks_minute_aggs
      WHERE ticker = 'VOO'
        AND window_start >= today() - 21
        AND window_start < today()
  )
GROUP BY et_time
ORDER BY et_time

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 analysisCan You Day Trade an Index Fund? ETFs vs Funds
Typical quoted spread on the three largest S&P 500 ETFs, trailing five days ranking 3×3 SPY five-minute price marks across one full session series 78×2 One session, many prices: VOO in half-hour marks, Wednesday July 22, 2026 series 32×3 The first active ETF share class: DFMC weekly closes since its March 2026 listing series 20×4 How far SPY sat from its own closing print, by time of day series 13×3 How long institutional managers take to file a 13F after quarter end series 12×4 See all 2,249 queries →