STRASMORE/EXPLORE 2,985 QUERIES

fastest_slowest

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-03, from how-stock-splits-are-announced.

as of table 10×5read in context →
fastest_slowest — 10 rows by 5 columns, computed from US exchange, SIP and OPRA data.
tickerratioannounced_oneffective_ongap_days
CVNA5:1May 7, 2026May 8, 20261
CRVL3:1Dec 24, 2024Dec 26, 20242
FTLF2:1Feb 5, 2025Feb 7, 20252
TTSH3000:1Dec 12, 2025Dec 16, 20254
JFB2:1Mar 17, 2026Mar 25, 20268
NFLX10:1Nov 21, 2024Nov 17, 2025361
BULZ10:1Feb 20, 2025Feb 24, 2026369
SHNY10:1Feb 20, 2025Feb 24, 2026369
PANW2:1Nov 20, 2023Dec 16, 2024392
NOW5:1Nov 14, 2024Dec 18, 2025399
Rows × columns
10 × 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 fastest_slowest, derived from the stored result.
ColumnTypeRangeNotes
ticker text 10 distinct values (BULZ, CRVL, CVNA…)
ratio text 5 distinct values (10:1, 2:1, 3000:1…)
announced_on text 9 distinct values (Dec 12, 2025, Dec 24, 2024, Feb 20, 2025…)
effective_on text 9 distinct values (Dec 16, 2024, Dec 16, 2025, Dec 18, 2025…)
gap_days number 1 to 399

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.

WITH
split_events AS (
    SELECT
        ticker,
        execution_date,
        max(toFloat64(split_to))   AS to_shares,
        max(toFloat64(split_from)) AS from_shares
    FROM global_markets.stocks_splits
    WHERE execution_date >= today() - 730
      AND execution_date <  today()
      AND toFloat64(split_to) > toFloat64(split_from)
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, execution_date
),
split_stories AS (
    SELECT
        arrayJoin(tickers)    AS story_ticker,
        toDate(published_utc) AS story_date
    FROM global_markets.stocks_news
    WHERE published_utc >= today() - 1140
      AND positionCaseInsensitive(title, 'split') > 0
),
gaps AS (
    SELECT
        e.ticker                                             AS ticker,
        e.execution_date                                     AS execution_date,
        e.to_shares                                          AS to_shares,
        e.from_shares                                        AS from_shares,
        min(s.story_date)                                    AS first_story_date,
        dateDiff('day', min(s.story_date), e.execution_date)  AS gap_days
    FROM split_events AS e
    INNER JOIN split_stories AS s ON s.story_ticker = e.ticker
    WHERE s.story_date <  e.execution_date
      AND s.story_date >= e.execution_date - 400
    GROUP BY e.ticker, e.execution_date, e.to_shares, e.from_shares
)
SELECT
    ticker,
    concat(toString(to_shares), ':', toString(from_shares)) AS ratio,
    formatDateTime(first_story_date, '%b %e, %Y')           AS announced_on,
    formatDateTime(execution_date, '%b %e, %Y')             AS effective_on,
    toUInt32(gap_days)                                      AS gap_days
FROM
(
    SELECT
        *,
        row_number() OVER (ORDER BY gap_days ASC,  ticker ASC) AS quickest_rank,
        row_number() OVER (ORDER BY gap_days DESC, ticker ASC) AS longest_rank
    FROM gaps
)
WHERE quickest_rank <= 5 OR longest_rank <= 5
ORDER BY gap_days ASC, ticker ASC
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysishow-stock-splits-are-announced
pending_splits table 33×5 → gap_by_month series 19×6 → gap_percentiles ranking 5×2 → 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,985 queries →