STRASMORE/EXPLORE 2,433 QUERIES

How long the sub-$1 names have already been there: consecutive sessions closing under $1

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-20, from How Long Can a Stock Trade Under $1? The Rules.

as of ranking 4×3read in context →
How long the sub-$1 names have already been there: consecutive sessions closing under $1 — 4 rows by 3 columns, computed from US exchange, SIP and OPRA data.
threshold_labelnamesshare_pct
1 or more379100
30 or more22759.9
90 or more11329.8
180 or more5314
Rows × columns
4 × 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 How long the sub-$1 names have already been there: consecutive sessions closing under $1, derived from the stored result.
ColumnTypeRangeNotes
threshold_label text 4 distinct values (1 or more, 180 or more, 30 or more…)
names number 53 to 379
share_pct number 14 to 100 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.

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.

SELECT
    threshold_label,
    countIf(streak >= threshold)                             AS names,
    round(100 * countIf(streak >= threshold) / count(), 1)   AS share_pct
FROM
(
    SELECT
        ticker,
        arrayReverseSort(groupArray((date, px)))                                                    AS closes_desc,
        arrayFirstIndex(x -> tupleElement(x, 2) >= 1, closes_desc)                                  AS first_at_or_above_1,
        if(first_at_or_above_1 = 0, toInt32(length(closes_desc)), toInt32(first_at_or_above_1) - 1) AS streak
    FROM
    (
        SELECT
            ticker,
            date,
            argMax(toFloat64(close), _ingest_time) AS px
        FROM global_markets.stocks_daily_aggs
        WHERE date >= today() - 400
          AND date <= (SELECT max(date) FROM global_markets.stocks_daily_aggs
                       WHERE ticker = 'SPY' AND date >= today() - 14)
          AND ifNull(otc, 0) = 0
          AND length(ticker) <= 4
          AND ticker NOT IN ('SPCX')
          AND volume > 0
          AND close > 0
          AND ticker IN
          (
              SELECT ticker
              FROM global_markets.stocks_daily_aggs
              WHERE date = (SELECT max(date) FROM global_markets.stocks_daily_aggs
                            WHERE ticker = 'SPY' AND date >= today() - 14)
                AND volume > 0
                AND close > 0
                AND close < 1
          )
        GROUP BY ticker, date
    ) AS daily
    GROUP BY ticker
) AS per_ticker
ARRAY JOIN
    [1, 30, 90, 180]                                             AS threshold,
    ['1 or more', '30 or more', '90 or more', '180 or more']     AS threshold_label
GROUP BY threshold, threshold_label
ORDER BY threshold
⌘/Ctrl + Enter
More from this analysisHow Long Can a Stock Trade Under $1? The Rules
Listed stocks closing under $1 on the latest session, by price band ranking 5×4 Listed stocks closing under $1, session by session, trailing five months series 103×3 Reverse splits executed per month, trailing twelve full months series 12×3 Reverse splits executed Mar 2025 to Feb 2026, by consolidation ratio ranking 5×3 Median move after the split, same cohort, at 20, 60 and 120 sessions ranking 3×4 Reverse vs forward splits by execution month, trailing two years series 24×5 See all 2,433 queries →