STRASMORE/EXPLORE 2,595 QUERIES

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.

as of table 20×5read in context →
screener_top20 — 20 rows by 5 columns, computed from US exchange, SIP and OPRA data.
tickerrvol_time_adjustedrvol_naivevolume_mm_by_1100screen_asof
IONQ5.232.1632.25Sep 23
UNG2.990.915.6Sep 23
QBTS2.410.9612.56Sep 23
WBD2.330.8124.42Sep 23
RGTI2.140.8811.62Sep 23
CMG2.090.585.13Sep 23
BB2.080.666.6Sep 23
XLF2.040.5517.05Sep 23
PLTR20.7515.97Sep 23
IEMG1.970.454.62Sep 23
DVN1.970.594.88Sep 23
PSKY1.940.497.86Sep 23
NCLH1.920.516.78Sep 23
RWM1.910.7215.01Sep 23
ERY1.890.689.55Sep 23
SOXS1.850.8536.6Sep 23
VG1.840.566.67Sep 23
DKNG1.790.414.07Sep 23
META1.760.711.69Sep 23
QID1.740.4314.15Sep 23
Rows × columns
20 × 5
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 screener_top20, derived from the stored result.
ColumnTypeRangeNotes
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
⌘/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 analysisrelative-volume-screener-from-the-free-sql-api
volume_curve series 13×3 → rvol_trace series 13×3 → morning_share ranking 12×3 → The 2s10s spread, every print of the half table 124×2 → The 2s10s spread, every print of the half table 124×2 → Every half-year since 1976: the 2y and 10y change, the twist between them, and the half's lowest 2s10s print table 100×7 → See all 2,595 queries →