STRASMORE/EXPLORE 2,401 QUERIES

price_mix

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-19, from upcoming-reverse-stock-splits.

as of table 3×5read in context →
price_mix — 3 rows by 5 columns, computed from US exchange, SIP and OPRA data.
price_bucketupcoming_countupcoming_pctpast_year_countpast_year_pct
Under $1738.951363.8
$1 to $5422.215118.8
Over $5738.914017.4
Rows × columns
3 × 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 price_mix, derived from the stored result.
ColumnTypeRangeNotes
price_bucket text 3 distinct values ($1 to $5, Over $5, Under $1)
upcoming_count number 4 to 7 count
upcoming_pct number 22.2 to 38.9 percent
past_year_count number 140 to 513 count
past_year_pct number 17.4 to 63.8 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_bucket,
    upcoming_count,
    round(100.0 * upcoming_count / greatest(sum(upcoming_count) OVER (), 1), 1)   AS upcoming_pct,
    past_year_count,
    round(100.0 * past_year_count / greatest(sum(past_year_count) OVER (), 1), 1) AS past_year_pct
FROM
(
    SELECT
        b.ord                                          AS ord,
        b.price_bucket                                 AS price_bucket,
        toUInt32(countIf(m.cohort = 'upcoming'))       AS upcoming_count,
        toUInt32(countIf(m.cohort = 'past_year'))      AS past_year_count
    FROM
    (
        SELECT
            arrayJoin([1, 2, 3])                                          AS ord,
            multiIf(ord = 1, 'Under $1', ord = 2, '$1 to $5', 'Over $5')  AS price_bucket
    ) AS b
    LEFT JOIN
    (
        SELECT
            cohort,
            multiIf(pre_close < 1, 1, pre_close < 5, 2, 3) AS ord
        FROM
        (
            SELECT
                'upcoming'                          AS cohort,
                s.ticker                            AS ticker,
                argMax(toFloat64(d.close), d.date)  AS pre_close
            FROM
            (
                SELECT ticker, execution_date
                FROM global_markets.stocks_splits
                WHERE execution_date >= today()
                  AND split_from > split_to
                  AND ticker NOT IN ('SPCX')
                GROUP BY ticker, execution_date
            ) AS s
            INNER JOIN
            (
                SELECT ticker, date, close
                FROM global_markets.stocks_daily_aggs
                WHERE date >= today() - 30
                  AND date <  today()
                  AND ticker IN
                  (
                      SELECT ticker
                      FROM global_markets.stocks_splits
                      WHERE execution_date >= today()
                        AND split_from > split_to
                  )
            ) AS d ON d.ticker = s.ticker
            GROUP BY s.ticker, s.execution_date

            UNION ALL

            SELECT
                'past_year'                                                                  AS cohort,
                s.ticker                                                                     AS ticker,
                argMin(toFloat64(d.close), d.date) * any(s.to_shares) / any(s.from_shares)  AS pre_close
            FROM
            (
                SELECT
                    ticker,
                    execution_date,
                    max(toFloat64(split_from)) AS from_shares,
                    max(toFloat64(split_to))   AS to_shares
                FROM global_markets.stocks_splits
                WHERE execution_date >= today() - 365
                  AND execution_date <  today()
                  AND split_from > split_to
                  AND split_to > 0
                  AND ticker NOT IN ('SPCX')
                GROUP BY ticker, execution_date
            ) AS s
            INNER JOIN
            (
                SELECT ticker, date, close
                FROM global_markets.stocks_daily_aggs
                WHERE date >= today() - 365
                  AND date <  today()
                  AND ticker IN
                  (
                      SELECT ticker
                      FROM global_markets.stocks_splits
                      WHERE execution_date >= today() - 365
                        AND execution_date <  today()
                        AND split_from > split_to
                  )
            ) AS d ON d.ticker = s.ticker
            WHERE d.date >= s.execution_date
              AND d.date <  s.execution_date + 7
            GROUP BY s.ticker, s.execution_date
        )
    ) AS m ON m.ord = b.ord
    GROUP BY b.ord, b.price_bucket
)
ORDER BY ord

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 analysisupcoming-reverse-stock-splits
upcoming_reverse table 19×6 monthly_mix series 12×5 yearly_mix ranking 8×4 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,401 queries →