screener_top20
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-25, from relative-volume-screener-from-the-free-sql-api.
| ticker | rvol_time_adjusted | rvol_naive | volume_mm_by_1100 | screen_asof |
|---|---|---|---|---|
| IONQ | 5.23 | 2.16 | 32.25 | Sep 23 |
| UNG | 2.99 | 0.9 | 15.6 | Sep 23 |
| QBTS | 2.41 | 0.96 | 12.56 | Sep 23 |
| WBD | 2.33 | 0.81 | 24.42 | Sep 23 |
| RGTI | 2.14 | 0.88 | 11.62 | Sep 23 |
| CMG | 2.09 | 0.58 | 5.13 | Sep 23 |
| BB | 2.08 | 0.66 | 6.6 | Sep 23 |
| XLF | 2.04 | 0.55 | 17.05 | Sep 23 |
| PLTR | 2 | 0.75 | 15.97 | Sep 23 |
| IEMG | 1.97 | 0.45 | 4.62 | Sep 23 |
| DVN | 1.97 | 0.59 | 4.88 | Sep 23 |
| PSKY | 1.94 | 0.49 | 7.86 | Sep 23 |
| NCLH | 1.92 | 0.51 | 6.78 | Sep 23 |
| RWM | 1.91 | 0.72 | 15.01 | Sep 23 |
| ERY | 1.89 | 0.68 | 9.55 | Sep 23 |
| SOXS | 1.85 | 0.85 | 36.6 | Sep 23 |
| VG | 1.84 | 0.56 | 6.67 | Sep 23 |
| DKNG | 1.79 | 0.41 | 4.07 | Sep 23 |
| META | 1.76 | 0.7 | 11.69 | Sep 23 |
| QID | 1.74 | 0.43 | 14.15 | Sep 23 |
- 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 (BB, CMG, DKNG…) | |
rvol_time_adjusted |
number | 1.74 to 5.23 | |
rvol_naive |
number | 0.41 to 2.16 | |
volume_mm_by_1100 |
number | 4.07 to 36.6 | count |
screen_asof |
text | 1 distinct value (Sep 23) |
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.