Tracker distribution yield vs the 10 year Treasury, calendar year ends 2015-2025
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-22, from S&P 500 Dividend Yield: How It's Measured.
| year | tracker_yield_pct | treasury_10y_pct | distributions_per_share_usd | payments |
|---|---|---|---|---|
| 2015 | 2.06 | 2.27 | 4.21 | 4 |
| 2016 | 2.03 | 2.45 | 4.54 | 4 |
| 2017 | 1.8 | 2.4 | 4.8 | 4 |
| 2018 | 2.04 | 2.69 | 5.1 | 4 |
| 2019 | 1.75 | 1.92 | 5.62 | 4 |
| 2020 | 1.52 | 0.93 | 5.69 | 4 |
| 2021 | 1.2 | 1.52 | 5.72 | 4 |
| 2022 | 1.65 | 3.88 | 6.32 | 4 |
| 2023 | 1.4 | 3.88 | 6.63 | 4 |
| 2024 | 1.21 | 4.58 | 7.07 | 4 |
| 2025 | 1.07 | 4.18 | 7.28 | 4 |
- 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,015 to 2,025 | |
tracker_yield_pct |
number | 1.07 to 2.06 | percent |
treasury_10y_pct |
number | 0.93 to 4.58 | percent |
distributions_per_share_usd |
number | 4.21 to 7.28 | US dollars |
payments |
number | every row is 4 |
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.
the exact SQL behind every number
WITH px AS (
SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,
argMax(close, window_start) AS year_end_price
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2015 AND 2025
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY year
),
dv AS (
SELECT toYear(ex_dividend_date) AS year,
sum(cash_amount) AS annual_distributions,
count() AS payments
FROM global_markets.stocks_dividends
WHERE ticker = 'SPY'
AND cash_amount > 0
AND ex_dividend_date >= toDate('2015-01-01')
AND ex_dividend_date <= toDate('2025-12-31')
GROUP BY year
),
tsy AS (
SELECT toYear(date) AS year,
argMax(yield_10_year, date) AS y10
FROM global_markets.treasury_yields
WHERE toYear(date) BETWEEN 2015 AND 2025
AND toMonth(date) = 12
AND yield_10_year IS NOT NULL
GROUP BY year
)
SELECT px.year AS year,
round(dv.annual_distributions / px.year_end_price * 100, 2) AS tracker_yield_pct,
round(tsy.y10, 2) AS treasury_10y_pct,
round(dv.annual_distributions, 2) AS distributions_per_share_usd,
dv.payments AS payments
FROM px
INNER JOIN dv ON px.year = dv.year
INNER JOIN tsy ON px.year = tsy.year
ORDER BY year
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisS&P 500 Dividend Yield: How It's Measured
Trailing twelve month distribution yields: broad index, equal weight, dividend screens, sector funds
table 9×6
→
Cap weighted vs equal weighted dividend yield, by company size
table 5×6
→
SPY distributions per share and price, both rebased to 100 at 2015
ranking 11×3
→
Monthly dividend stocks - filing companies paying every month, ranked by daily traded value
table 29×6
→
Highest dividend yields: US-listed companies over $2B, latest snapshot on file
table 15×5
→
Trailing yield by sector fund: twelve months of distributions ÷ latest price
table 13×5
→
See all 2,170 queries →