reverse_split_ratios
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-10-01, from do-stock-splits-need-shareholder-approval.
| label | reverse_splits | tickers |
|---|---|---|
| 1-for-10 | 805 | 760 |
| 1-for-20 | 357 | 348 |
| 1-for-5 | 284 | 269 |
| 1-for-4 | 183 | 173 |
| 1-for-15 | 168 | 164 |
| 1-for-25 | 150 | 145 |
| 1-for-2 | 138 | 124 |
| 1-for-3 | 136 | 126 |
| 1-for-30 | 127 | 127 |
| 1-for-100 | 126 | 118 |
| 1-for-8 | 125 | 123 |
| 1-for-50 | 123 | 119 |
- Rows × columns
- 12 × 3
- 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 |
|---|---|---|---|
label |
text | 12 distinct values (1-for-10, 1-for-100, 1-for-15…) | |
reverse_splits |
number | 123 to 805 | |
tickers |
number | 118 to 760 |
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
concat('1-for-', toString(toUInt32(round(split_from / split_to)))) AS label,
countDistinct(id) AS reverse_splits,
countDistinct(ticker) AS tickers
FROM global_markets.stocks_splits
WHERE split_from > split_to
AND execution_date >= '2023-01-01'
AND execution_date < today()
AND ticker NOT IN ('SPCX')
GROUP BY label
ORDER BY reverse_splits DESC
LIMIT 12
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.