STRASMORE/EXPLORE 3,293 QUERIES

How far volume falls from the open to the 12:30 half hour, five liquid names

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-28, from TWAP vs VWAP vs POV Orders Explained.

as of table 5×6read in context →
How far volume falls from the open to the 12:30 half hour, five liquid names — 5 rows by 6 columns, computed from US exchange, SIP and OPRA data.
tickeropening_share_pctlunch_share_pctclosing_share_pctopen_to_lunch_ratiopov_lunch_fill_k_shares
MSFT14.94.429.53.4145
KO11.83.639.23.356
NVDA15.14.724.53.2586
AAPL134.432.53210
SPY114.724.42.3197
Rows × columns
5 × 6
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 How far volume falls from the open to the 12:30 half hour, five liquid names, derived from the stored result.
ColumnTypeRangeNotes
ticker text 5 distinct values (AAPL, KO, MSFT…)
opening_share_pct number 11 to 15.1 percent
lunch_share_pct number 3.6 to 4.7 percent
closing_share_pct number 24.4 to 39.2 percent
open_to_lunch_ratio number 2.3 to 3.4 US dollars
pov_lunch_fill_k_shares number 56 to 586 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.

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 bars AS
(
    SELECT
        ticker,
        toDate(toTimeZone(window_start, 'America/New_York'))           AS et_date,
        toHour(toTimeZone(window_start, 'America/New_York')) * 60
            + toMinute(toTimeZone(window_start, 'America/New_York'))   AS minute_of_day,
        toFloat64(volume)                                              AS shares
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO')
      AND window_start >= toDateTime('2026-06-01 00:00:00', 'UTC')
      AND window_start <  toDateTime('2026-09-01 00:00:00', 'UTC')
    UNION ALL
    SELECT
        ticker,
        toDate(toTimeZone(sip_timestamp, 'America/New_York'))          AS et_date,
        959                                                            AS minute_of_day,
        toFloat64(maxIf(size, has(conditions, 8)))                     AS shares
    FROM global_markets.stocks_trades
    WHERE ticker IN ('SPY', 'AAPL', 'MSFT', 'NVDA', 'KO')
      AND sip_timestamp >= toDateTime('2026-06-01 00:00:00', 'UTC')
      AND sip_timestamp <  toDateTime('2026-09-01 00:00:00', 'UTC')
      AND toHour(sip_timestamp, 'America/New_York') IN (13, 16)
      AND toMinute(sip_timestamp, 'America/New_York') < 10
    GROUP BY ticker, et_date
    HAVING countIf(has(conditions, 8)) > 0
)
SELECT
    ticker,
    round(100 * sumIf(shares, minute_of_day < 600) / sum(shares), 1)                            AS opening_share_pct,
    round(100 * sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780) / sum(shares), 1)   AS lunch_share_pct,
    round(100 * sumIf(shares, minute_of_day >= 930) / sum(shares), 1)                           AS closing_share_pct,
    round(sumIf(shares, minute_of_day < 600)
          / sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780), 1)                     AS open_to_lunch_ratio,
    toUInt32(round(0.10 * sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780)
                   / countDistinct(et_date) / 1e3))                                             AS pov_lunch_fill_k_shares
FROM bars
WHERE minute_of_day >= 570
  AND minute_of_day <  960
GROUP BY ticker
HAVING sumIf(shares, minute_of_day >= 750 AND minute_of_day < 780) > 0
ORDER BY open_to_lunch_ratio DESC
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisTWAP vs VWAP vs POV Orders Explained
SPY intraday volume curve vs a flat TWAP schedule, June to August 2026 series 13×4 → What a 10% participation order on AAPL could fill each half hour, August 12, 2026 series 13×4 → SPY: median, lowest and highest share of the day's volume per half hour, June to August 2026 series 13×4 → Average per-minute volume by ET hour (AAPL, 4:00 a.m. to 8:00 p.m., September 2026) table 16×5 → Most repeated price and size pairings, AAPL, June 17, 2026 table 12×5 → The eight widest prior-close to regular-open distances in AAPL, Sep 2023 to Sep 2026 table 8×5 → See all 3,293 queries →