Declaration record by year: recurring dividends, count, and days from declaration to ex-date
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-08-03, from When Companies Announce Dividend Raises.
| year | company_count | declaration_count | declared_before_ex_pct | median_days_declared_to_ex |
|---|---|---|---|---|
| 2016 | 7204 | 27027 | 99.8 | 11 |
| 2017 | 7857 | 28664 | 99.7 | 12 |
| 2018 | 9905 | 33822 | 99.7 | 20 |
| 2019 | 10163 | 33616 | 99.8 | 22 |
| 2020 | 9553 | 31704 | 99.8 | 17 |
| 2021 | 9940 | 33423 | 99.8 | 17 |
| 2022 | 10704 | 38093 | 98.9 | 20 |
| 2023 | 10893 | 39427 | 99.9 | 23 |
| 2024 | 11109 | 42063 | 100 | 35 |
| 2025 | 12220 | 45931 | 100 | 32 |
| 2026 | 10493 | 29319 | 100 | 29 |
- Rows × columns
- 11 × 5
- 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 |
|---|---|---|---|
year |
number | 2,016 to 2,026 | |
company_count |
number | 7,204 to 12,220 | count |
declaration_count |
number | 27,027 to 45,931 | count |
declared_before_ex_pct |
number | 98.9 to 100 | percent |
median_days_declared_to_ex |
number | 11 to 35 |
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.
SELECT toYear(declaration_date) AS year,
uniqExact(ticker) AS company_count,
count() AS declaration_count,
round(100 * countIf(declaration_date <= ex_dividend_date) / count(), 1) AS declared_before_ex_pct,
round(quantileDeterministic(0.5)(dateDiff('day', declaration_date, ex_dividend_date),
cityHash64(ticker))) AS median_days_declared_to_ex
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND cash_amount > 0
AND declaration_date > toDate('2015-12-31')
AND declaration_date <= toDate('2026-07-31')
AND ex_dividend_date > toDate('2015-12-31')
GROUP BY year
ORDER BY year