candidates
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.
| ticker | share_price | price_before_last_split | market_value | forward_splits_on_record | last_forward_split | last_split_ratio | as_of |
|---|---|---|---|---|---|---|---|
| AZO | 2853.1 | 0 | $46B | 0 | none | none | September 18, 2026 |
| FCNCA | 2120.74 | 0 | $24B | 0 | none | none | September 18, 2026 |
| MELI | 1824.4 | 0 | $93B | 0 | none | none | September 18, 2026 |
| MKL | 1784.36 | 0 | $22B | 0 | none | none | September 18, 2026 |
| SNDK | 1620.28 | 0 | $236B | 0 | none | none | September 18, 2026 |
| FIX | 1585 | 0 | $55B | 0 | none | none | September 18, 2026 |
| MTD | 1410.44 | 0 | $28B | 0 | none | none | September 18, 2026 |
| GWW | 1262.46 | 0 | $59B | 0 | none | none | September 18, 2026 |
| MPWR | 1175.88 | 0 | $57B | 0 | none | none | September 18, 2026 |
| LLY | 1151.5 | 0 | $1027B | 0 | none | none | September 18, 2026 |
| TDG | 1077.73 | 0 | $59B | 0 | none | none | September 18, 2026 |
| BLK | 1052.02 | 0 | $163B | 0 | none | none | September 18, 2026 |
| EQIX | 1028.31 | 0 | $101B | 0 | none | none | September 18, 2026 |
| URI | 1001.48 | 0 | $62B | 0 | none | none | September 18, 2026 |
| MU | 984.12 | 0 | $1104B | 3 | 2000-05-02 | 2-for-1 | September 18, 2026 |
- Rows × columns
- 15 × 8
- 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 | 15 distinct values (AZO, BLK, EQIX…) | |
share_price |
number | 984.12 to 2,853.1 | US dollars |
price_before_last_split |
number | every row is 0 | US dollars |
market_value |
text | 14 distinct values ($101B, $1027B, $1104B…) | |
forward_splits_on_record |
text | 2 distinct values (0, 3) | |
last_forward_split |
text | 2 distinct values (2000-05-02, none) | |
last_split_ratio |
text | 2 distinct values (2-for-1, none) | |
as_of |
text | 1 distinct value (September 18, 2026) |
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
latest_px AS
(
SELECT
ticker,
argMax(close, date) AS last_close,
max(date) AS px_date
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 10
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING last_close >= 500
AND last_close < 50000
),
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
),
announced AS
(
SELECT DISTINCT ticker
FROM global_markets.stocks_splits
WHERE execution_date > today()
),
cand AS
(
SELECT
p.ticker AS ticker,
p.last_close AS last_close,
p.px_date AS px_date,
m.market_cap AS market_cap
FROM latest_px AS p
INNER JOIN big_caps AS m ON m.ticker = p.ticker
WHERE p.ticker NOT IN (SELECT ticker FROM announced)
),
last_split AS
(
SELECT
ticker,
max(execution_date) AS last_split_date,
argMax(concat(toString(toFloat64(split_to)), '-for-', toString(toFloat64(split_from))), execution_date) AS last_split_ratio,
uniqExact(execution_date) AS forward_splits
FROM global_markets.stocks_splits
WHERE split_to > split_from
AND execution_date <= today()
AND ticker IN (SELECT ticker FROM cand)
GROUP BY ticker
),
pre_split AS
(
SELECT
d.ticker AS ticker,
argMax(d.close, d.date) AS pre_split_close
FROM
(
SELECT ticker, date, close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN (SELECT ticker FROM last_split)
) AS d
INNER JOIN last_split AS s ON s.ticker = d.ticker
WHERE d.date < s.last_split_date
AND d.date >= s.last_split_date - 7
GROUP BY d.ticker
),
to_raw AS
(
SELECT
x.ticker AS ticker,
arrayProduct(groupArray(toFloat64(x.to_shares) / toFloat64(x.from_shares))) AS factor
FROM
(
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 IN (SELECT ticker FROM last_split)
GROUP BY ticker, execution_date
) AS x
INNER JOIN last_split AS ls ON ls.ticker = x.ticker
WHERE x.execution_date >= ls.last_split_date
GROUP BY x.ticker
)
SELECT
c.ticker AS ticker,
round(toFloat64(c.last_close), 2) AS share_price,
if(ps.pre_split_close > 0, round(toFloat64(ps.pre_split_close) * f.factor, 2), 0) AS price_before_last_split,
concat('$', toString(toUInt64(round(toFloat64(c.market_cap) / 1e9))), 'B') AS market_value,
toString(ifNull(s.forward_splits, 0)) AS forward_splits_on_record,
if(s.last_split_date > toDate('1971-01-01'), toString(s.last_split_date), 'none') AS last_forward_split,
if(s.last_split_ratio != '', s.last_split_ratio, 'none') AS last_split_ratio,
concat(monthName(c.px_date), ' ', toString(toDayOfMonth(c.px_date)), ', ', toString(toYear(c.px_date))) AS as_of
FROM cand AS c
LEFT JOIN last_split AS s ON s.ticker = c.ticker
LEFT JOIN pre_split AS ps ON ps.ticker = c.ticker
LEFT JOIN to_raw AS f ON f.ticker = c.ticker
ORDER BY c.last_close DESC
LIMIT 15
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.