STRASMORE/EXPLORE 3,256 QUERIES 22Y EQUITIES · 12Y OPTIONS

3,256 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

TWAP vs VWAP vs POV Orders Explained
SPY intraday volume curve vs a flat TWAP schedule, June to August 2026series · 2026-09-28 · 13×4Preview: a 13-point series, roughly flat. How far volume falls from the open to the 12:30 half hour, five liquid namestable · 2026-09-28 · 5×6 What a 10% participation order on AAPL could fill each half hour, August 12, 2026series · 2026-09-28 · 13×4Preview: a 13-point series, ending higher. SPY: median, lowest and highest share of the day's volume per half hour, June to August 2026series · 2026-09-28 · 13×4Preview: a 13-point series, ending higher.
Anchored VWAP Explained: Formula and Uses
How much the newest session can move an anchored VWAP (AAPL)ranking · 2026-08-07 · 13×2Preview: 13 ranked values, smallest first. Anchored at each name's own lowest close of the past twelve monthstable · 2026-08-07 · 5×5 Daily session VWAP against a VWAP anchored on one date (AAPL)series · 2026-08-07 · 62×4Preview: a 16-point series, ending higher. The same stock and the same last price, twelve different anchors (AAPL)ranking · 2026-08-07 · 12×3Preview: 12 ranked values, smallest first.
What Is VWAP? Volume-Weighted Average Price
The receipt: VWAP from every individual trade vs. the minute-bar shortcut (AAPL, July 2, 2026)scalar · 2026-07-26 · 1×5305.9162 Same session, five stocks, five VWAPs: final-minute price vs. session VWAP, July 2, 2026ranking · 2026-07-26 · 5×4Preview: 5 ranked values, largest first. AAPL, July 2, 2026: session VWAP vs. equal-weight average vs. the final-minute pricescalar · 2026-07-26 · 1×8390 AAPL price vs. running VWAP: July 2, 2026 regular session, sampled every 5 minutesseries · 2026-07-26 · 78×3Preview: a 16-point series, ending higher.
SPY intraday volume curve vs a flat TWAP schedule, June to August 2026

SPY intraday volume curve vs a flat TWAP schedule, June to August 2026

most recentas of series 13×4read in context →
SPY intraday volume curve vs a flat TWAP schedule, June to August 2026 — 13 rows by 4 columns, computed from US exchange, SIP and OPRA data.
et_timeavg_volume_millionsvwap_share_pcttwap_share_pct
09:304.6111.017.69
10:003.337.977.69
10:302.796.667.69
11:002.475.897.69
11:302.485.937.69
12:002.25.257.69
12:301.974.77.69
13:002.044.887.69
13:301.874.477.69
14:002.285.457.69
14:302.465.887.69
15:003.147.527.69
15:3010.2124.397.69
the exact SQL behind every number
WITH bars AS
(
    SELECT
        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 = 'SPY'
      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
        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 = 'SPY'
      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 et_date
    HAVING countIf(has(conditions, 8)) > 0
),
per_bucket AS
(
    SELECT
        formatDateTime(toDateTime(intDiv(minute_of_day, 30) * 30 * 60, 'UTC'), '%H:%i') AS et_time,
        sum(shares)                                                                 AS bucket_shares,
        countDistinct(et_date)                                                      AS sessions
    FROM bars
    WHERE minute_of_day >= 570
      AND minute_of_day <  960
    GROUP BY et_time
)
SELECT
    b.et_time                                          AS et_time,
    round(b.bucket_shares / b.sessions / 1e6, 2)       AS avg_volume_millions,
    round(100 * b.bucket_shares / t.window_shares, 2)  AS vwap_share_pct,
    round(100 / t.bucket_count, 2)                     AS twap_share_pct
FROM per_bucket AS b
CROSS JOIN
(
    SELECT
        sum(bucket_shares) AS window_shares,
        count()            AS bucket_count
    FROM per_bucket
) AS t
ORDER BY et_time
$