Strasmore Research
Learn Matt ConnorBy Matt Connor · data as of October 3, 2026 · refreshed weekly

How Stock Splits Get Announced: 8-K to Ex-Date

How stock splits are announced: the board vote, the press release and 8-K filing, then the exchange notice. Plus the typical gap to the effective date.

Stock splits are announced by the company itself, and the exchange publishes the operational dates afterwards. The board passes a resolution that fixes the ratio and the key dates, the company puts out a press release and files a Form 8-K with the SEC, and the exchange notice plus the clearing-system relay then set the day the new shares actually land. The announcement date and the effective date are never the same day, and the distance between them is measurable. The panels below put a number on it.

How stock splits are announced, step by step

A stock split is a corporate action: a company-initiated change to its own share count. The order of events rarely varies, whatever the ratio.

  1. The board resolves the split. Directors approve a ratio (four new shares for every old share, say) and set the dates that govern it: a record date, a distribution or payable date, and the ex-date on which the quoted price adjusts.
  2. The company discloses it. A press release goes out and the company files a Form 8-K with the SEC. When the split calls for amending the charter, raising the count of authorized shares or cutting par value, that filing carries Item 5.03, the item covering amendments to articles of incorporation or bylaws. Whether holders also vote is a separate question, handled in do stock splits need shareholder approval.
  3. The exchange and FINRA receive notice. SEC Rule 10b-17 obliges an issuer to give notice of a split at least 10 calendar days ahead of the record date. The listing exchange then publishes its own corporate action notice carrying the confirmed dates.
  4. The clearing system relays it. DTC passes the action to member brokers, who update customer positions on the distribution date.
  5. The effective date arrives. The quoted price divides by the ratio and the share count multiplies by it. Our guide to when a stock split takes effect walks the ex-date mechanics in detail.

Two of those steps carry built-in waiting. A charter amendment can sit until the next annual meeting, and the notice period runs backwards from the record date. The published effective date is the end of a queue rather than the start of one.

How long does it take from announcement to effective date?

Putting a number on the wait needs a dated announcement for every split. The stand-in used here is the first dated news story that names a split for that company inside the 400 days before its effective date, matched against every forward split that took effect in the past two years. It measures when the split became public rather than a legal filing timestamp, and it tracks the press release closely: a split release is wire news on the day it is issued.

QueryAnnouncement to effective date: the spread across forward splits
percentilegap_days
p10 quickest9
p2514
p50 median40
p75170
p90 slowest295
The exact SQL behind every number
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,
        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
)
SELECT
    p.1 AS percentile,
    p.2 AS gap_days
FROM
(
    SELECT arrayJoin([
        ('p10 quickest', toUInt32(round(quantileDeterministic(0.10)(toFloat64(gap_days), cityHash64(ticker, execution_date))))),
        ('p25',          toUInt32(round(quantileDeterministic(0.25)(toFloat64(gap_days), cityHash64(ticker, execution_date))))),
        ('p50 median',   toUInt32(round(quantileDeterministic(0.50)(toFloat64(gap_days), cityHash64(ticker, execution_date))))),
        ('p75',          toUInt32(round(quantileDeterministic(0.75)(toFloat64(gap_days), cityHash64(ticker, execution_date))))),
        ('p90 slowest',  toUInt32(round(quantileDeterministic(0.90)(toFloat64(gap_days), cityHash64(ticker, execution_date)))))
    ]) AS p
    FROM gaps
)
Run this yourself

Read the curve from left to right. The quickest tenth of forward splits (p10 quickest) went from first public story to effective date in 9 calendar days. The middle of the distribution (p50 median) sits at 40 days. The slow tenth (p90 slowest) stretches to 295 days. A reader who sees a split headline and expects new shares in the account that week is reading the wrong end of the process.

Has the lead time changed over the past two years?

Grouping the same splits by the month their new shares took effect shows whether that lead time holds steady.

QueryMedian wait from first split story to effective date, by month
monthmonth_labelsplit_countmedian_gap_daysshortest_gap_dayslongest_gap_days
2024-10-01Oct 2024314610194
2024-12-01Dec 20244862392
2025-01-01Jan 20253861889
2025-02-01Feb 20253142205
2025-05-01May 20251222222
2025-06-01Jun 20252524361
2025-07-01Jul 20251131313
2025-09-01Sep 20252422063
2025-10-01Oct 2025218298266
2025-11-01Nov 20252260160361
2025-12-01Dec 202541404399
2026-01-01Jan 20261198198198
2026-02-01Feb 2026336931369
2026-03-01Mar 20261888
2026-04-01Apr 202661513216
2026-05-01May 20261111
2026-06-01Jun 20267141491
2026-07-01Jul 20261205205205
2026-08-01Aug 20261292929
The exact SQL behind every number
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,
        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
)
SELECT
    toStartOfMonth(execution_date)                           AS month,
    formatDateTime(toStartOfMonth(execution_date), '%b %Y')  AS month_label,
    toUInt32(count())                                        AS split_count,
    toUInt32(round(quantileDeterministic(0.50)(toFloat64(gap_days), cityHash64(ticker, execution_date)))) AS median_gap_days,
    toUInt32(min(gap_days))                                  AS shortest_gap_days,
    toUInt32(max(gap_days))                                  AS longest_gap_days
FROM gaps
GROUP BY month, month_label
ORDER BY month
Run this yourself

19 months in the window carry at least one forward split with a dated story ahead of it. In Aug 2026, 1 forward splits took effect, with a median wait of 29 days and individual gaps running from 29 to 29 days. Monthly medians swing around on counts this small, which is why the pooled percentiles above make the better summary. The useful thing in this panel is the distance between the shortest_gap_days and longest_gap_days lines inside a single month: two companies that announce in the same week can land their splits weeks apart.

Which splits moved fastest, and which took longest?

Names make the range concrete. The panel below pins the five quickest and the five slowest announcement windows in the sample, with the dates attached.

QueryThe quickest and slowest announcement windows, by company
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
The exact SQL behind every number
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
Run this yourself

CVNA sits at the quick end of the table: a 5:1 split that first hit the news on May 7, 2026 and took effect on May 8, 2026, a gap of 1 days. At the far end, NOW ran 399 days from first story to effective date. Long windows have two ordinary readings. A company can announce early and schedule the distribution after its annual meeting, and a company can also turn up in split coverage well before it commits to one, which pulls the first-story date forward. Short windows cluster among companies that resolve, file, and distribute inside a single notice cycle.

What is already on the split calendar?

The same records that date past splits also carry the ones still ahead, which is what the upcoming stock splits calendar publishes.

QuerySplits with an effective date still ahead, inside the next six months
33 rows (showing 20)
tickerratiodirectioneffective_ondays_away
CMND1:8reverseOct 5, 20262
GUTS1:12reverseOct 5, 20262
PSKY2:1forwardOct 5, 20262
SCNX1:25reverseOct 5, 20262
TGOSY5:1forwardOct 5, 20262
VIVK1:15reverseOct 5, 20262
VTAK1:10reverseOct 5, 20262
ETHA1:3reverseOct 6, 20263
GPMT1:10reverseOct 6, 20263
ITOC1:16reverseOct 6, 20263
RUBI1.5:1forwardOct 6, 20263
GCDT1:6reverseOct 7, 20264
SUGP1:6reverseOct 7, 20264
TELWY5:1forwardOct 7, 20264
TKOMY15:1forwardOct 7, 20264
TOPPY2:1forwardOct 7, 20264
MGF1:5reverseOct 8, 20265
MIN1:6reverseOct 8, 20265
DWAHY2:1forwardOct 9, 20266
DXJ3:1forwardOct 9, 20266
The exact SQL behind every number
SELECT
    ticker,
    concat(toString(toFloat64(split_to)), ':', toString(toFloat64(split_from)))  AS ratio,
    if(toFloat64(split_to) > toFloat64(split_from), 'forward', 'reverse')        AS direction,
    formatDateTime(execution_date, '%b %e, %Y')                                  AS effective_on,
    toUInt32(dateDiff('day', today(), execution_date))                           AS days_away
FROM global_markets.stocks_splits
WHERE execution_date >= today()
  AND execution_date <= today() + 180
  AND ticker NOT IN ('SPCX')
GROUP BY ticker, execution_date, split_to, split_from
ORDER BY execution_date ASC, ticker ASC
LIMIT 40
Run this yourself

33 splits currently hold an effective date inside the next six months. The nearest is CMND at 1:8, 2 days out, and the furthest in view is 75 days away. Every row reached that calendar through the chain above: a press release and an 8-K sit behind each one. The direction column separates forward splits from reverse ones, which run the same announcement path in the opposite direction. For the splits that have already landed, with ratios and dates, see recent stock splits, and the same calendar is queryable through the free SQL stock splits calendar.

What happens inside the announcement window

The gap is not dead time. Four mechanical things sit inside it, and each one has its own page.

  • Due bills. Where the distribution lands after the record date, trades in the interval settle with a due bill attached: the seller owes the buyer the additional shares the buyer is entitled to. Brokers handle the transfer, and the holder sees it as a position adjustment.
  • Options adjustment. Listed contracts are adjusted on the ex-date, with strikes divided and deliverables multiplied by the ratio. How stock splits affect options works through the arithmetic for whole and uneven ratios.
  • Fractional shares. A whole ratio such as 4-for-1 cannot create a fraction. An uneven one such as 3-for-2 can, and the broker either books the fraction or pays cash in lieu of it. Stock splits vs fractional shares covers the distinction.
  • Cost basis. Per-share basis divides by the ratio on the effective date while total basis stays put, which matters at tax time rather than on the day itself. Cost basis after a stock split has the worked example.

None of that moves the value of a position on the day the split lands. What moves is the share count and the quoted price, in opposite directions and in the same proportion. The full mechanics of the action live on the what is a stock split page.

How the announcement-to-effective gap is measured
  • Sample: every forward split with an effective date in the trailing two years, deduplicated by ticker and effective date.
  • Announcement stand-in: the earliest dated news story naming a split for that ticker inside the 400 days before the effective date. It is a publicity floor, not a filing timestamp.
  • Splits with no dated story in that window drop out, so the sample leans toward companies with news coverage.
  • Reverse splits are excluded from the gap sample and appear only in the forward calendar panel. What is a reverse stock split covers that genre.
  • All gaps are calendar days, not trading days. Percentiles use a deterministic estimator, so two renderings of the same statistic agree.

FAQ

How do companies announce a stock split?

The board approves the split, then the company announces it in a press release and a Form 8-K filed with the SEC. When the split calls for a charter amendment, that 8-K carries Item 5.03. The listing exchange follows with a corporate action notice holding the confirmed record and ex-dates.

Where can I find the official announcement of a stock split?

Two places carry the primary document: the company's investor relations press release, and its 8-K on the SEC's EDGAR system. The exchange corporate action notice is the operational version of the same facts, and it is what brokers and the clearing system act on.

How long after the announcement does a stock split take effect?

In the sample above, the median forward split took 40 calendar days from its first public story to its effective date, with the quickest tenth inside 9 days and the slow tenth out at 295 days. No fixed rule sets it. The floor comes from the notice period ahead of the record date.

Is the announcement date the same as the ex-date?

No. The announcement date is when the company makes the split public. The ex-date, often called the effective date, is the session on which the quoted price and the share count adjust. The exchange notice period and the company's own schedule separate the two.

Do I have to own the shares on the announcement date to receive the split?

No. Entitlement follows the record date that the board fixes in the announcement, not the announcement itself. When a stock split takes effect lays out which date governs what.


Every panel here carries the SQL that produced it, so you can open one and see exactly how a gap was counted. To check the dates behind a specific company's split, ask the question in plain English on the Strasmore terminal.

#stock splits#corporate actions#8-k#announcements#effective date