Relative Volume Screener in SQL: Free API
Share of a session's volume completed by each half hour: SPY and KOseries ·
2026-11-07 · 13×3
Relative volume screener: top 20 by time adjusted RVOL at 11:00 a.m. ETtable ·
2026-11-07 · 20×5
Cisco, September 22, 2026: naive RVOL against time adjusted RVOL through the sessionseries ·
2026-11-07 · 13×3
Share of the session completed by 11:00 a.m. ET, twelve household namesranking ·
2026-11-07 · 12×3
Stocks With the Biggest IV-RV Gap
The most negative monthly pairs: realized volatility far above impliedranking ·
2026-10-01 · 10×4
SPY: monthly 30-day implied volatility against the next month's realized volatilityseries ·
2026-10-01 · 24×4
Largest gap between 30-day implied volatility and the realized volatility that followedranking ·
2026-10-01 · 12×4
Share of liquid names whose 30-day IV exceeded the realized volatility that followedseries ·
2026-10-01 · 9×4
Covered Call Screener: Build One in SQL
The covered call screen, ranked by annualised yield, last session of August 2026table ·
2026-09-26 · 12×8
The same screen replayed monthly, and how the selected calls finishedseries ·
2026-09-26 · 11×5
Annualised call premium at 0.25 to 0.35 delta, eight liquid names, August 2026ranking ·
2026-09-26 · 8×4
AAPL call premium yield by delta band, August 2026table ·
2026-09-26 · 6×5
Share of a session's volume completed by each half hour: SPY and KO
Share of a session's volume completed by each half hour: SPY and KO
| et_time | spy_share_pct | ko_share_pct |
|---|---|---|
| 09:30 | 11.7 | 14.1 |
| 10:00 | 19.8 | 23.4 |
| 10:30 | 27.1 | 31.2 |
| 11:00 | 33.7 | 38.3 |
| 11:30 | 39.2 | 44 |
| 12:00 | 43.9 | 48.7 |
| 12:30 | 48.7 | 53.6 |
| 13:00 | 53.3 | 58.3 |
| 13:30 | 58 | 63.3 |
| 14:00 | 63.6 | 68.1 |
| 14:30 | 69.5 | 73.3 |
| 15:00 | 76.7 | 80.1 |
| 15:30 | 100 | 100 |
the exact SQL behind every number
WITH
bars AS (
SELECT
ticker,
toDate(et_ts) AS session_date,
formatDateTime(toStartOfInterval(et_ts, INTERVAL 30 MINUTE), '%H:%i') AS et_time,
toHour(et_ts) * 60 + toMinute(et_ts) AS et_min,
toFloat64(volume) AS vol
FROM
(
SELECT
ticker,
toTimeZone(window_start, 'America/New_York') AS et_ts,
volume
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'KO')
AND window_start >= toDateTime(today() - 40)
)
),
slots AS (
SELECT
ticker,
session_date,
et_time,
min(et_min) AS slot_min,
sum(vol) AS slot_vol
FROM bars
WHERE et_min >= 570 AND et_min < 960
GROUP BY ticker, session_date, et_time
),
complete AS (
SELECT ticker, session_date
FROM slots
GROUP BY ticker, session_date
HAVING max(slot_min) >= 930
),
slot_avg AS (
SELECT
ticker,
et_time,
min(slot_min) AS slot_min,
avg(slot_vol) AS avg_slot_vol
FROM slots
WHERE (ticker, session_date) IN (SELECT ticker, session_date FROM complete)
GROUP BY ticker, et_time
),
cum AS (
SELECT
ticker,
et_time,
slot_min,
sum(avg_slot_vol) OVER (PARTITION BY ticker ORDER BY slot_min) AS cum_vol,
sum(avg_slot_vol) OVER (PARTITION BY ticker) AS day_vol
FROM slot_avg
)
SELECT
et_time,
round(100 * maxIf(cum_vol / day_vol, ticker = 'SPY'), 1) AS spy_share_pct,
round(100 * maxIf(cum_vol / day_vol, ticker = 'KO'), 1) AS ko_share_pct
FROM cum
GROUP BY et_time
ORDER BY min(slot_min)
More from this analysisRelative Volume Screener in SQL: Free API
Cisco, September 22, 2026: naive RVOL against time adjusted RVOL through the session
series 13×3
→
Relative volume screener: top 20 by time adjusted RVOL at 11:00 a.m. ET
table 20×5
→
Share of the session completed by 11:00 a.m. ET, twelve household names
ranking 12×3
→
SPY: median shares traded per minute, by 30-minute clock bucket (ET, last 30 days, extended hours)
series 32×2
→
See all 3,293 queries →