ex_date_drop
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-24, from weekly-dividend-etfs-explained.
| ticker | ex_dates | avg_distribution | avg_overnight_move |
|---|---|---|---|
| AMDW | 52 | 0.9325 | 0.0649 |
| ARMW | 47 | 0.6601 | -0.2778 |
| HOOY | 50 | 0.6431 | -1.1604 |
| HOOW | 52 | 0.5787 | -0.1989 |
| PLTY | 51 | 0.5699 | -0.8865 |
| WNTR | 51 | 0.5683 | -0.3566 |
| AMDY | 50 | 0.5457 | -0.6551 |
| CHPY | 53 | 0.5243 | -0.3058 |
| GDXW | 46 | 0.5189 | -0.1916 |
| GOOW | 52 | 0.4898 | -0.0168 |
- Rows × columns
- 10 × 4
- 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 | 10 distinct values (AMDW, AMDY, ARMW…) | |
ex_dates |
number | 46 to 53 | |
avg_distribution |
number | 0.4898 to 0.9325 | |
avg_overnight_move |
number | -1.1604 to 0.0649 |
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
weekly AS
(
SELECT ticker
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING countDistinct(ex_dividend_date) >= 40
),
payments AS
(
SELECT
ticker,
ex_dividend_date AS ex_date,
max(cash_amount) AS amount
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker IN (SELECT ticker FROM weekly)
GROUP BY ticker, ex_date
),
px AS
(
SELECT
ticker,
date,
toFloat64(any(close)) AS close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 400
AND ticker IN (SELECT ticker FROM weekly)
GROUP BY ticker, date
)
SELECT
ticker,
count() AS ex_dates,
round(avg(amount), 4) AS avg_distribution,
round(avg(ex_close - prior_close), 4) AS avg_overnight_move
FROM
(
SELECT
d.ticker AS ticker,
d.ex_date AS ex_date,
toFloat64(any(d.amount)) AS amount,
any(pe.close) AS ex_close,
argMax(pp.close, pp.date) AS prior_close
FROM payments AS d
INNER JOIN px AS pe ON pe.ticker = d.ticker AND pe.date = d.ex_date
INNER JOIN px AS pp ON pp.ticker = d.ticker
WHERE pp.date < d.ex_date
AND pp.date >= d.ex_date - 7
GROUP BY d.ticker, d.ex_date
)
GROUP BY ticker
ORDER BY avg_distribution DESC
LIMIT 10
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.