Notable US stock splits since 2020: ratio, how the action was recorded, and the next 21 sessions vs SPY
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-07-26, from What Is a Stock Split? Ratios and Mechanics.
| ticker | executed_on | ratio | recorded_as | stock_21_sessions_pct | spy_21_sessions_pct |
|---|---|---|---|---|---|
| NFLX | 2025-11-17 | 10-for-1 | forward split | -14.1 | 0.8 |
| ORLY | 2025-06-10 | 15-for-1 | stock dividend | -0.2 | 3.4 |
| LRCX | 2024-10-03 | 10-for-1 | forward split | -7.8 | 0.6 |
| SMCI | 2024-10-01 | 10-for-1 | forward split | -18.5 | 2 |
| DECK | 2024-09-17 | 6-for-1 | forward split | 3.9 | 3.4 |
| AVGO | 2024-07-15 | 10-for-1 | forward split | -8.8 | -3.5 |
| CMG | 2024-06-26 | 50-for-1 | forward split | -24.3 | -0.2 |
| NVDA | 2024-06-10 | 10-for-1 | forward split | 4.8 | 3.9 |
| WMT | 2024-02-26 | 3-for-1 | forward split | 1.6 | 2.5 |
| TSLA | 2022-08-25 | 3-for-1 | stock dividend | -6.8 | -13.2 |
| GOOGL | 2022-07-18 | 20-for-1 | stock dividend | 11.7 | 12.5 |
| AMZN | 2022-06-06 | 20-for-1 | forward split | -6.8 | -5.5 |
| NVDA | 2021-07-20 | 4-for-1 | stock dividend | 2.3 | 1.9 |
| AAPL | 2020-08-31 | 4-for-1 | forward split | -10.3 | -4.1 |
| TSLA | 2020-08-31 | 5-for-1 | stock dividend | -13.9 | -4.1 |
- Rows × columns
- 15 × 6
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
ticker |
text | 13 distinct values (AAPL, AMZN, AVGO…) | |
executed_on |
date | 2020-08-31 to 2025-11-17 | |
ratio |
text | 8 distinct values (10-for-1, 15-for-1, 20-for-1…) | |
recorded_as |
text | 2 distinct values (forward split, stock dividend) | |
stock_21_sessions_pct |
number | -24.3 to 11.7 | percent |
spy_21_sessions_pct |
number | -13.2 to 12.5 | 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 ticker, executed_on, ratio, recorded_as, stock_21_sessions_pct, spy_21_sessions_pct
FROM (
WITH events AS (
SELECT ticker, execution_date,
concat(toString(toInt32(split_to)), '-for-', toString(toInt32(split_from))) AS ratio,
if(adjustment_type = 'stock_dividend', 'stock dividend', 'forward split') AS recorded_as
FROM global_markets.stocks_splits
WHERE ticker IN ('AAPL', 'TSLA', 'GOOGL', 'AMZN', 'NVDA', 'WMT', 'CMG', 'AVGO', 'SMCI', 'LRCX', 'DECK', 'ORLY', 'NFLX')
AND execution_date >= '2020-01-01' AND execution_date <= '2026-06-30'
AND split_to > split_from
),
daily AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMaxIf(toFloat64(close), window_start,
(toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS close_rth
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM events UNION ALL SELECT 'SPY')
AND window_start >= '2020-08-01 00:00:00' AND window_start < '2026-01-15 00:00:00'
GROUP BY ticker, d
HAVING close_rth > 0
),
series AS (
SELECT ticker, arraySort(x -> x.1, groupArray((d, close_rth))) AS dc
FROM daily
GROUP BY ticker
),
spy AS (
SELECT dc AS spy_dc FROM series WHERE ticker = 'SPY'
)
SELECT e.ticker AS ticker,
toString(e.execution_date) AS executed_on,
e.ratio AS ratio,
e.recorded_as AS recorded_as,
arrayFirstIndex(x -> x.1 >= e.execution_date, s.dc) AS idx,
arrayFirstIndex(x -> x.1 >= e.execution_date, spy_dc) AS sidx,
round((s.dc[idx + 21].2 / s.dc[idx].2 - 1) * 100, 1) AS stock_21_sessions_pct,
round((spy_dc[sidx + 21].2 / spy_dc[sidx].2 - 1) * 100, 1) AS spy_21_sessions_pct,
e.execution_date AS ed
FROM events e
JOIN series s ON s.ticker = e.ticker
CROSS JOIN spy
ORDER BY ed DESC, ticker ASC
)
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.