STRASMORE/EXPLORE 3,256 QUERIES 22Y EQUITIES · 12Y OPTIONS

3,256 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

S&P 500 Dividend Yield: How It's Measured
Trailing twelve month distribution yields: broad index, equal weight, dividend screens, sector fundstable · 2026-10-04 · 9×6 SPY distributions per share and price, both rebased to 100 at 2015ranking · 2026-10-04 · 11×3Preview: 11 ranked values, smallest first. Tracker distribution yield vs the 10 year Treasury, calendar year ends 2015-2025table · 2026-10-04 · 11×5 Cap weighted vs equal weighted dividend yield, by company sizetable · 2026-10-04 · 5×6
Trailing twelve month distribution yields: broad index, equal weight, dividend screens, sector funds

Trailing twelve month distribution yields: broad index, equal weight, dividend screens, sector funds

most recentas of table 9×6read in context →
Trailing twelve month distribution yields: broad index, equal weight, dividend screens, sector funds — 9 rows by 6 columns, computed from US exchange, SIP and OPRA data.
tickersegmentpricettm_distributions_usdpaymentstrailing_yield_pct
SPYbroad index tracker769.87.58340.99
RSPequal weight S&P 500209.843.1841.52
VYMdividend screen156.623.67642.35
SCHDdividend screen32.761.05443.22
SPYDdividend screen45.472.0644.53
XLUsector fund39.951.21243.03
XLPsector fund80.432.19742.73
XLREsector fund40.951.44343.52
XLKsector fund199.870.83540.42
the exact SQL behind every number
WITH px AS (
    SELECT ticker,
           argMax(close, window_start) AS price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('SPY', 'RSP', 'VYM', 'SCHD', 'SPYD', 'XLU', 'XLP', 'XLRE', 'XLK')
      AND window_start >= now() - INTERVAL 7 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker
),
dv AS (
    SELECT ticker,
           sum(cash_amount) AS ttm_distributions,
           count() AS payments
    FROM global_markets.stocks_dividends
    WHERE ticker IN ('SPY', 'RSP', 'VYM', 'SCHD', 'SPYD', 'XLU', 'XLP', 'XLRE', 'XLK')
      AND ex_dividend_date > today() - INTERVAL 1 YEAR
      AND ex_dividend_date <= today()
      AND cash_amount > 0
    GROUP BY ticker
)
SELECT px.ticker AS ticker,
       multiIf(px.ticker = 'SPY', 'broad index tracker',
               px.ticker = 'RSP', 'equal weight S&P 500',
               px.ticker IN ('VYM', 'SCHD', 'SPYD'), 'dividend screen',
               'sector fund') AS segment,
       round(px.price, 2) AS price,
       round(dv.ttm_distributions, 3) AS ttm_distributions_usd,
       dv.payments AS payments,
       round(dv.ttm_distributions / px.price * 100, 2) AS trailing_yield_pct
FROM px
INNER JOIN dv ON px.ticker = dv.ticker
ORDER BY multiIf(px.ticker = 'SPY', 1,
                 px.ticker = 'RSP', 2,
                 px.ticker = 'VYM', 3,
                 px.ticker = 'SCHD', 4,
                 px.ticker = 'SPYD', 5,
                 px.ticker = 'XLU', 6,
                 px.ticker = 'XLP', 7,
                 px.ticker = 'XLRE', 8,
                 9)
$