How Ex-Dividend Dates Affect Options
The early-exercise census: every ITM call on every June 30 ex-dividend payer, tested on June 29scalar ·
2026-07-17 · 1×485
A near-the-money SPY call and put: delta across the June 18 ex-dividend dateseries ·
2026-07-17 · 9×3
What Is a Special Dividend? (With Examples)
How US dividends were scheduled in 2026, by payment cadence (Jan 1 - Jul 13)ranking ·
2026-07-15 · 5×2
National Beverage (FIZZ): every special dividend since 2016, and no regular oneseries ·
2026-07-15 · 7×2
Large special dividends from well-known payers since 2012ranking ·
2026-07-15 · 12×3
← Previous
page 5 of 5
Three household payers at their last ex-date: prior close, ex-morning open, and the payment for scale
Three household payers at their last ex-date: prior close, ex-morning open, and the payment for scale
| ticker | last_ex_date | last_ex_label | dividend_usd | close_before_ex_usd | ex_morning_open_usd | open_gap_pct | dividend_pct_of_price |
|---|---|---|---|---|---|---|---|
| KO | 2026-06-15 | Jun 15 | 0.53 | 82.6 | 81.08 | -1.84 | 0.64 |
| VZ | 2026-07-10 | Jul 10 | 0.7075 | 42.22 | 41.61 | -1.46 | 1.68 |
| XOM | 2026-08-17 | Aug 17 | 1.03 | 160.09 | 160.1 | 0.01 | 0.64 |
the exact SQL behind every number
WITH last_ex AS (
SELECT ticker,
max(ex_dividend_date) AS ex_d,
argMax(cash_amount, ex_dividend_date) AS div_amt
FROM global_markets.stocks_dividends
WHERE ticker IN ('KO', 'VZ', 'XOM')
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ex_dividend_date < today()
AND ex_dividend_date >= today() - 120
GROUP BY ticker
),
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_px,
argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS open_px,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('KO', 'VZ', 'XOM')
AND window_start >= toDateTime(today() - 130)
GROUP BY ticker, d
HAVING bars > 200
),
seq AS (
SELECT ticker, d, open_px, close_px,
lagInFrame(close_px, 1) OVER (PARTITION BY ticker ORDER BY d ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS pre_close
FROM daily
)
SELECT s.ticker AS ticker,
toString(e.ex_d) AS last_ex_date,
formatDateTime(e.ex_d, '%b %e') AS last_ex_label,
round(e.div_amt, 4) AS dividend_usd,
round(s.pre_close, 2) AS close_before_ex_usd,
round(s.open_px, 2) AS ex_morning_open_usd,
round(100 * (s.open_px - s.pre_close) / s.pre_close, 2) AS open_gap_pct,
round(100 * e.div_amt / s.pre_close, 2) AS dividend_pct_of_price
FROM seq s
JOIN last_ex e ON e.ticker = s.ticker AND e.ex_d = s.d
WHERE s.pre_close > 0
ORDER BY ticker
More from this analysisUpcoming Ex-Dividend Dates: Stocks This Week
Thirteen big dividend and income funds: last ex-date, cadence, and the implied next ex-date
series 13×8
→
Ex-dividend dates by calendar month: three-year average, quarterly vs monthly payers
series 12×4
→
Largest companies going ex-dividend in the next 14 days: amount, pay date, indicated yield
series 12×8
→
Names going ex-dividend, day by day: the next seven days of declared records
series 5×5
→
See all 2,173 queries →