STRASMORE/EXPLORE 2,170 QUERIES

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.

as of table 11×5read in context →
Tracker distribution yield vs the 10 year Treasury, calendar year ends 2015-2025 — 11 rows by 5 columns, computed from US exchange, SIP and OPRA data.
yeartracker_yield_pcttreasury_10y_pctdistributions_per_share_usdpayments
20152.062.274.214
20162.032.454.544
20171.82.44.84
20182.042.695.14
20191.751.925.624
20201.520.935.694
20211.21.525.724
20221.653.886.324
20231.43.886.634
20241.214.587.074
20251.074.187.284
Rows × columns
11 × 5
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for Tracker distribution yield vs the 10 year Treasury, calendar year ends 2015-2025, derived from the stored result.
ColumnTypeRangeNotes
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 →