STRASMORE/EXPLORE 2,358 QUERIES

split_history

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-18, from stock-split-candidates.

as of table 16×6read in context →
split_history — 16 rows by 6 columns, computed from US exchange, SIP and OPRA data.
tickerexecutedexecuted_onratiopre_split_closeimplied_post_split_price
BKNG2026-04-06April 6, 202625-for-14194.31167.77
CMG2024-06-26June 26, 202450-for-13283.0465.66
AMZN2022-06-06June 6, 202220-for-12447122.35
KLAC2026-06-12June 12, 202610-for-12411.64241.16
GOOG2022-07-18July 18, 202220-for-12255.34112.77
GOOGL2022-07-18July 18, 202220-for-12235.55111.78
TSLA2020-08-31August 31, 20205-for-12213.4442.68
AVGO2024-07-15July 15, 202410-for-11700.67170.07
TPL2024-03-27March 27, 20243-for-11679.18559.73
ORLY2025-06-10June 10, 202515-for-11348.189.87
MSTR2024-08-08August 8, 202410-for-11246.85124.68
NVDA2024-06-10June 10, 202410-for-11208.88120.89
NFLX2025-11-17November 17, 202510-for-11112.17111.22
ISRG2021-10-05October 5, 20213-for-1970.5323.5
TPL2025-12-23December 23, 20253-for-1908.4302.8
TSLA2022-08-25August 25, 20223-for-1891.29297.1
Rows × columns
16 × 6
Period covered
to
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 split_history, derived from the stored result.
ColumnTypeRangeNotes
ticker text 14 distinct values (AMZN, AVGO, BKNG…)
executed date 2020-08-31 to 2026-06-12
executed_on text 15 distinct values
ratio text 7 distinct values (10-for-1, 15-for-1, 20-for-1…)
pre_split_close number 891.29 to 4,194.31 US dollars
implied_post_split_price number 65.66 to 559.73 US dollars

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
WITH
big_caps AS
(
    SELECT
        ticker,
        argMax(market_cap, date) AS market_cap
    FROM global_markets.stocks_ratios
    WHERE date >= today() - 45
    GROUP BY ticker
    HAVING toFloat64(market_cap) >= 20e9
),
on_file AS
(
    SELECT
        ticker,
        execution_date,
        any(split_from) AS from_shares,
        any(split_to)   AS to_shares
    FROM global_markets.stocks_splits
    WHERE execution_date <= today()
      AND ticker NOT IN ('SPCX')
      AND ticker IN (SELECT ticker FROM big_caps)
    GROUP BY ticker, execution_date
),
splits AS
(
    SELECT
        a.ticker         AS ticker,
        a.execution_date AS execution_date,
        a.from_shares    AS from_shares,
        a.to_shares      AS to_shares,
        arrayProduct(groupArray(toFloat64(b.to_shares) / toFloat64(b.from_shares))) AS to_raw
    FROM on_file AS a
    INNER JOIN on_file AS b ON b.ticker = a.ticker
    WHERE b.execution_date >= a.execution_date
      AND a.execution_date >= '2020-01-01'
      AND a.to_shares > a.from_shares
    GROUP BY a.ticker, a.execution_date, a.from_shares, a.to_shares
)
SELECT
    s.ticker                                                                            AS ticker,
    toString(s.execution_date)                                                          AS executed,
    concat(monthName(s.execution_date), ' ', toString(toDayOfMonth(s.execution_date)), ', ', toString(toYear(s.execution_date))) AS executed_on,
    concat(toString(toFloat64(s.to_shares)), '-for-', toString(toFloat64(s.from_shares))) AS ratio,
    round(toFloat64(argMax(d.close, d.date)) * s.to_raw, 2)                             AS pre_split_close,
    round(toFloat64(argMax(d.close, d.date)) * s.to_raw * toFloat64(s.from_shares) / toFloat64(s.to_shares), 2) AS implied_post_split_price
FROM
(
    SELECT ticker, date, close
    FROM global_markets.stocks_daily_aggs
    WHERE date >= '2019-12-01'
      AND ticker IN (SELECT ticker FROM splits)
) AS d
INNER JOIN splits AS s ON s.ticker = d.ticker
WHERE d.date <  s.execution_date
  AND d.date >= s.execution_date - 7
GROUP BY s.ticker, s.execution_date, s.to_shares, s.from_shares, s.to_raw
HAVING pre_split_close >= 300
ORDER BY pre_split_close DESC
LIMIT 16

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 analysisstock-split-candidates
candidates table 15×8 stubborn table 12×5 aapl_splits table 3×5 aapl_trace series 84×4 The 2s10s spread, every print of the half table 124×2 The 2s10s spread, every print of the half table 124×2 See all 2,358 queries →