cohort
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-26, from hon-dividend-history.
| ticker | dps_2020 | dps_2025 | growth_5y_pct |
|---|---|---|---|
| CAT | 4.12 | 5.84 | 7.2 |
| EMR | 2 | 2.14 | 1.3 |
| HON | 3.63 | 4.58 | 4.8 |
| ITW | 4.42 | 3.11 | -6.8 |
| JNJ | 3.98 | 5.14 | 5.2 |
| KO | 1.64 | 2.04 | 4.5 |
| MMM | 5.88 | 2.92 | -13.1 |
| PG | 3.12 | 4.18 | 6 |
- Rows × columns
- 8 × 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 | 8 distinct values (CAT, EMR, HON…) | |
dps_2020 |
number | 1.64 to 5.88 | |
dps_2025 |
number | 2.04 to 5.84 | |
growth_5y_pct |
number | -13.1 to 7.2 | percent |
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 per_ex AS
(
SELECT
ticker,
toYear(ex_dividend_date) AS div_year,
ex_dividend_date AS ex_date,
max(toFloat64(cash_amount)) AS amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('HON', 'MMM', 'ITW', 'EMR', 'CAT', 'JNJ', 'PG', 'KO')
AND ex_dividend_date >= '2020-01-01'
AND ex_dividend_date < '2026-01-01'
GROUP BY ticker, div_year, ex_date
),
yearly AS
(
SELECT
ticker,
div_year,
sum(amount) AS dps
FROM per_ex
GROUP BY ticker, div_year
)
SELECT
ticker,
round(sumIf(dps, div_year = 2020), 2) AS dps_2020,
round(sumIf(dps, div_year = 2025), 2) AS dps_2025,
round(100 * (pow(sumIf(dps, div_year = 2025) / sumIf(dps, div_year = 2020), 1.0 / 5) - 1), 1) AS growth_5y_pct
FROM yearly
GROUP BY ticker
HAVING sumIf(dps, div_year = 2020) > 0
AND sumIf(dps, div_year = 2025) > 0
ORDER BY ticker
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.