growth_horizons
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 jnj-dividend-increase-history.
| horizon | measured_from | start_annual_dividend | latest_annual_dividend | growth_cagr_pct | growth_multiple |
|---|---|---|---|---|---|
| 5-year | 2021 | 4.24 | 5.36 | 4.8 | 1.26 |
| 10-year | 2016 | 3.2 | 5.36 | 5.29 | 1.68 |
| 20-year | 2006 | 1.5 | 5.36 | 6.57 | 3.57 |
- Rows × columns
- 3 × 6
- 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 |
|---|---|---|---|
horizon |
text | 3 distinct values (10-year, 20-year, 5-year) | |
measured_from |
text | 3 distinct values (2006, 2016, 2021) | |
start_annual_dividend |
number | 1.5 to 4.24 | |
latest_annual_dividend |
number | every row is 5.36 | |
growth_cagr_pct |
number | 4.8 to 6.57 | percent |
growth_multiple |
number | 1.26 to 3.57 |
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
annual AS
(
SELECT
div_year,
annual_dividend,
max(div_year) OVER () AS latest_year
FROM
(
SELECT
toYear(ex_dividend_date) AS div_year,
round(max(toFloat64(cash_amount)) * 4, 4) AS annual_dividend
FROM global_markets.stocks_dividends
WHERE ticker = 'JNJ'
AND frequency = 4
AND ex_dividend_date >= '2000-01-01'
AND ex_dividend_date < '2027-01-01'
GROUP BY div_year
)
)
SELECT
concat(toString(e.div_year - b.div_year), '-year') AS horizon,
toString(b.div_year) AS measured_from,
b.annual_dividend AS start_annual_dividend,
e.annual_dividend AS latest_annual_dividend,
round((pow(e.annual_dividend / b.annual_dividend, 1.0 / (e.div_year - b.div_year)) - 1) * 100, 2) AS growth_cagr_pct,
round(e.annual_dividend / b.annual_dividend, 2) AS growth_multiple
FROM annual AS e
CROSS JOIN annual AS b
WHERE e.div_year = e.latest_year
AND (e.div_year - b.div_year) IN (5, 10, 20)
ORDER BY e.div_year - b.div_year
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.