STRASMORE/EXPLORE 2,173 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,173 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

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×3Preview: a 9-point series, ending lower.
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×2Preview: 5 ranked values, smallest first. National Beverage (FIZZ): every special dividend since 2016, and no regular oneseries · 2026-07-15 · 7×2Preview: a 7-point series, ending higher. Large special dividends from well-known payers since 2012ranking · 2026-07-15 · 12×3Preview: 12 ranked values, largest first.
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

most recentas of series 3×8read in context →
Three household payers at their last ex-date: prior close, ex-morning open, and the payment for scale — 3 rows by 8 columns, computed from US exchange, SIP and OPRA data.
tickerlast_ex_datelast_ex_labeldividend_usdclose_before_ex_usdex_morning_open_usdopen_gap_pctdividend_pct_of_price
KO2026-06-15Jun 150.5382.681.08-1.840.64
VZ2026-07-10Jul 100.707542.2241.61-1.461.68
XOM2026-08-17Aug 171.03160.09160.10.010.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
$