Relative volume screener: top 20 by time adjusted RVOL at 11:00 a.m. ET
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-11-07, from Relative Volume Screener in SQL: Free API.
| ticker | rvol_time_adjusted | rvol_naive | volume_mm_by_1100 | screen_asof |
|---|---|---|---|---|
| DKNG | 9.83 | 2.25 | 23.28 | Nov 6 |
| SOXX | 5.82 | 1.97 | 23.19 | Nov 6 |
| MCHP | 5.65 | 1.39 | 12.99 | Nov 6 |
| U | 3.12 | 0.9 | 8.55 | Nov 6 |
| CORZ | 3.03 | 0.88 | 13.58 | Nov 6 |
| COMP | 2.91 | 0.56 | 6.65 | Nov 6 |
| SPDN | 2.69 | 0.98 | 50.69 | Nov 6 |
| LYFT | 2.68 | 0.68 | 6.11 | Nov 6 |
| SOXL | 2.67 | 1.07 | 119.32 | Nov 6 |
| VEA | 2.55 | 0.66 | 6.56 | Nov 6 |
| WULF | 2.46 | 0.78 | 35.39 | Nov 6 |
| VXX | 2.43 | 0.7 | 12.16 | Nov 6 |
| AAOI | 2.32 | 0.85 | 9.2 | Nov 6 |
| IEFA | 2.27 | 0.55 | 4.34 | Nov 6 |
| AMD | 2.24 | 0.88 | 18.23 | Nov 6 |
| RIOT | 2.22 | 0.74 | 14.96 | Nov 6 |
| IREN | 2.06 | 0.83 | 43.48 | Nov 6 |
| ASTS | 2.05 | 0.76 | 12.69 | Nov 6 |
| SPXU | 2.05 | 0.6 | 6.12 | Nov 6 |
| IEMG | 2.04 | 0.65 | 7.71 | Nov 6 |
- Rows × columns
- 20 × 5
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
ticker |
text | 20 distinct values (AAOI, AMD, ASTS…) | |
rvol_time_adjusted |
number | 2.04 to 9.83 | |
rvol_naive |
number | 0.55 to 2.25 | |
volume_mm_by_1100 |
number | 4.34 to 119.32 | count |
screen_asof |
text | 1 distinct value (Nov 6) |
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
liquid AS (
SELECT ticker
FROM global_markets.stocks_daily_aggs
WHERE date > today() - 45
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING avg(volume) >= 10000000
AND min(close) >= 5
),
sessions AS (
SELECT date
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date > today() - 45
ORDER BY date DESC
LIMIT 21
),
bars AS (
SELECT
ticker,
toDate(et_ts) AS session_date,
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 (SELECT ticker FROM liquid)
AND window_start >= toDateTime(today() - 45)
)
WHERE session_date IN (SELECT date FROM sessions)
),
totals AS (
SELECT
ticker,
session_date,
sumIf(vol, et_min >= 570 AND et_min < 660) AS vol_by_1100,
sumIf(vol, et_min >= 570 AND et_min < 960) AS vol_day,
maxIf(et_min, et_min < 960) AS last_min
FROM bars
GROUP BY ticker, session_date
),
(
SELECT session_date
FROM totals
GROUP BY session_date
HAVING countIf(last_min >= 955) >= 100
ORDER BY session_date DESC
LIMIT 1
) AS asof
SELECT
ticker,
round(maxIf(vol_by_1100, session_date = asof) / avgIf(vol_by_1100, session_date < asof), 2) AS rvol_time_adjusted,
round(maxIf(vol_by_1100, session_date = asof) / avgIf(vol_day, session_date < asof), 2) AS rvol_naive,
round(maxIf(vol_by_1100, session_date = asof) / 1e6, 2) AS volume_mm_by_1100,
formatDateTime(asof, '%b %e') AS screen_asof
FROM totals
GROUP BY ticker
HAVING countIf(session_date < asof) >= 18
AND maxIf(last_min, session_date = asof) >= 955
AND avgIf(vol_by_1100, session_date < asof) > 0
ORDER BY rvol_time_adjusted DESC
LIMIT 20
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.