ko_by_year
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-30, from us-dividend-yield-for-chinese-investors.
| year | dps_usd | gross_yield_pct | net_yield_10_pct | net_yield_30_pct |
|---|---|---|---|---|
| 2019 | 1.6 | 2.89 | 2.6 | 2.02 |
| 2020 | 1.64 | 2.99 | 2.69 | 2.09 |
| 2021 | 1.68 | 2.84 | 2.55 | 1.99 |
| 2022 | 1.76 | 2.77 | 2.49 | 1.94 |
| 2023 | 1.84 | 3.12 | 2.81 | 2.19 |
| 2024 | 1.94 | 3.12 | 2.8 | 2.18 |
| 2025 | 2.04 | 2.92 | 2.63 | 2.04 |
- Rows × columns
- 7 × 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 |
text | 7 distinct values (2019, 2020, 2021…) | |
dps_usd |
number | 1.6 to 2.04 | US dollars |
gross_yield_pct |
number | 2.77 to 3.12 | percent |
net_yield_10_pct |
number | 2.49 to 2.81 | percent |
net_yield_30_pct |
number | 1.94 to 2.19 | 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.
SELECT
toString(y.year) AS year,
round(y.dps_usd, 4) AS dps_usd,
round(100 * y.dps_usd / p.year_close, 2) AS gross_yield_pct,
round(100 * y.dps_usd * 0.90 / p.year_close, 2) AS net_yield_10_pct,
round(100 * y.dps_usd * 0.70 / p.year_close, 2) AS net_yield_30_pct
FROM
(
SELECT
toYear(ex_dividend_date) AS year,
toFloat64(sum(amount)) AS dps_usd
FROM
(
SELECT
id,
ex_dividend_date,
any(cash_amount) AS amount
FROM global_markets.stocks_dividends
WHERE ticker = 'KO'
AND ex_dividend_date >= '2019-01-01'
AND ex_dividend_date < toStartOfYear(today())
GROUP BY id, ex_dividend_date
)
GROUP BY year
) AS y
INNER JOIN
(
SELECT
toYear(date) AS year,
toFloat64(argMax(close, date)) AS year_close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'KO'
AND date >= '2019-01-01'
AND date < toStartOfYear(today())
GROUP BY year
) AS p ON p.year = y.year
ORDER BY year
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.