STRASMORE/EXPLORE 2,170 QUERIES

Where listed symbols sit by price, and which band rule governs each zone

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-08-22, from Why Stocks Halt: Limit Up-Limit Down Bands.

as of ranking 6×3read in context →
Where listed symbols sit by price, and which band rule governs each zone — 6 rows by 3 columns, computed from US exchange, SIP and OPRA data.
price_zonestock_countshare_of_tape_pct
under $0.757205.6
$0.75 to $39467.3
$3 to $20356027.5
$20 to $100656250.7
$100 to $50010838.4
$500 and up820.6
Rows × columns
6 × 3
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 Where listed symbols sit by price, and which band rule governs each zone, derived from the stored result.
ColumnTypeRangeNotes
price_zone text 6 distinct values ($0.75 to $3, $100 to $500, $20 to $100…)
stock_count number 82 to 6,562 count
share_of_tape_pct number 0.6 to 50.7 percent

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.

the exact SQL behind every number
SELECT
    price_zone,
    stock_count,
    round(stock_count * 100.0 / sum(stock_count) OVER (), 1) AS share_of_tape_pct
FROM
(
    SELECT
        multiIf(last_price < 0.75, 'under $0.75',
                last_price < 3,    '$0.75 to $3',
                last_price < 20,   '$3 to $20',
                last_price < 100,  '$20 to $100',
                last_price < 500,  '$100 to $500',
                                   '$500 and up') AS price_zone,
        count()                                   AS stock_count
    FROM
    (
        SELECT
            ticker,
            toFloat64(argMax(close, window_start)) AS last_price
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE window_start >= today() - 8
          AND window_start <  today() - 1
          AND volume > 0
        GROUP BY ticker
        HAVING last_price > 0
    )
    GROUP BY price_zone
)
ORDER BY multiIf(price_zone = 'under $0.75', 1,
                 price_zone = '$0.75 to $3', 2,
                 price_zone = '$3 to $20', 3,
                 price_zone = '$20 to $100', 4,
                 price_zone = '$100 to $500', 5,
                 6)

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

More from this analysisWhy Stocks Halt: Limit Up-Limit Down Bands
How far eight stocks move in a five minute window, trailing year ranking 8×4 What a 5 percent band is worth in dollars, by price level ranking 8×4 Average minute range through the session, five liquid names series 26×3 SPY open, midday and close volume against an average minute, by year ranking 8×4 Open, midday and close volume against an average session minute ranking 6×4 Share of regular-session volume by half hour, SPY and AAPL series 13×3 See all 2,170 queries →