dividends_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-11-01, from what-is-qqq-etf-for-russian-investors.
| year | qqq_dividends_per_share | qqq_yield_pct | spy_yield_pct |
|---|---|---|---|
| 2021 | 1.7 | 0.43 | 1.2 |
| 2022 | 2.14 | 0.8 | 1.65 |
| 2023 | 2.54 | 0.62 | 1.4 |
| 2024 | 2.85 | 0.56 | 1.21 |
| 2025 | 2.79 | 0.45 | 1.07 |
| 2026 | 2.3 | 0.33 | 0.74 |
- Rows × columns
- 6 × 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 |
|---|---|---|---|
year |
number | 2,021 to 2,026 | |
qqq_dividends_per_share |
number | 1.7 to 2.85 | |
qqq_yield_pct |
number | 0.33 to 0.8 | percent |
spy_yield_pct |
number | 0.74 to 1.65 | 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 divs AS
(
SELECT
ticker,
toYear(ex_dividend_date) AS year,
sum(toFloat64(cash_amount)) AS dps
FROM
(
SELECT
ticker,
ex_dividend_date,
any(cash_amount) AS cash_amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('QQQ', 'SPY')
AND ex_dividend_date >= '2021-01-01'
AND ex_dividend_date <= today()
GROUP BY ticker, ex_dividend_date
)
GROUP BY ticker, year
),
px AS
(
SELECT
ticker,
toYear(date) AS year,
toFloat64(argMax(close, date)) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('QQQ', 'SPY')
AND date >= '2021-01-01'
GROUP BY ticker, year
)
SELECT
d.year AS year,
round(sumIf(d.dps, d.ticker = 'QQQ'), 2) AS qqq_dividends_per_share,
round(sumIf(d.dps, d.ticker = 'QQQ') / maxIf(p.last_close, p.ticker = 'QQQ') * 100, 2) AS qqq_yield_pct,
round(sumIf(d.dps, d.ticker = 'SPY') / maxIf(p.last_close, p.ticker = 'SPY') * 100, 2) AS spy_yield_pct
FROM divs AS d
INNER JOIN px AS p ON p.ticker = d.ticker AND p.year = d.year
GROUP BY year
ORDER BY year
Работайте с этими данными в своём ИИ-ассистенте
Открывается готовым к запросам, с данными этой страницы. Бесплатно, без аккаунта.