{"slug":"sp-500-dividend-yield","qid":"yield_ladder","label":"Trailing twelve month distribution yields: broad index, equal weight, dividend screens, sector funds","post_title":"S&P 500 Dividend Yield: How It's Measured","post_url":"/blog/sp-500-dividend-yield#q-yield_ladder","columns":["ticker","segment","price","ttm_distributions_usd","payments","trailing_yield_pct"],"rows":[{"ticker":"SPY","segment":"broad index tracker","price":766.95,"ttm_distributions_usd":7.525,"payments":4,"trailing_yield_pct":0.98},{"ticker":"RSP","segment":"equal weight S&P 500","price":221.91,"ttm_distributions_usd":3.205,"payments":4,"trailing_yield_pct":1.44},{"ticker":"VYM","segment":"dividend screen","price":165.11,"ttm_distributions_usd":3.63,"payments":4,"trailing_yield_pct":2.2},{"ticker":"SCHD","segment":"dividend screen","price":35.2,"ttm_distributions_usd":1.048,"payments":4,"trailing_yield_pct":2.98},{"ticker":"SPYD","segment":"dividend screen","price":50.39,"ttm_distributions_usd":2.031,"payments":4,"trailing_yield_pct":4.03},{"ticker":"XLU","segment":"sector fund","price":42.82,"ttm_distributions_usd":1.479,"payments":4,"trailing_yield_pct":3.45},{"ticker":"XLP","segment":"sector fund","price":86.05,"ttm_distributions_usd":2.197,"payments":4,"trailing_yield_pct":2.55},{"ticker":"XLRE","segment":"sector fund","price":45.07,"ttm_distributions_usd":1.405,"payments":4,"trailing_yield_pct":3.12},{"ticker":"XLK","segment":"sector fund","price":183.58,"ttm_distributions_usd":0.972,"payments":4,"trailing_yield_pct":0.53}],"shape":"table","sql":"WITH px AS (\n    SELECT ticker,\n           argMax(close, window_start) AS price\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('SPY', 'RSP', 'VYM', 'SCHD', 'SPYD', 'XLU', 'XLP', 'XLRE', 'XLK')\n      AND window_start >= now() - INTERVAL 7 DAY\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker\n),\ndv AS (\n    SELECT ticker,\n           sum(cash_amount) AS ttm_distributions,\n           count() AS payments\n    FROM global_markets.stocks_dividends\n    WHERE ticker IN ('SPY', 'RSP', 'VYM', 'SCHD', 'SPYD', 'XLU', 'XLP', 'XLRE', 'XLK')\n      AND ex_dividend_date > today() - INTERVAL 1 YEAR\n      AND ex_dividend_date <= today()\n      AND cash_amount > 0\n    GROUP BY ticker\n)\nSELECT px.ticker AS ticker,\n       multiIf(px.ticker = 'SPY', 'broad index tracker',\n               px.ticker = 'RSP', 'equal weight S&P 500',\n               px.ticker IN ('VYM', 'SCHD', 'SPYD'), 'dividend screen',\n               'sector fund') AS segment,\n       round(px.price, 2) AS price,\n       round(dv.ttm_distributions, 3) AS ttm_distributions_usd,\n       dv.payments AS payments,\n       round(dv.ttm_distributions / px.price * 100, 2) AS trailing_yield_pct\nFROM px\nINNER JOIN dv ON px.ticker = dv.ticker\nORDER BY multiIf(px.ticker = 'SPY', 1,\n                 px.ticker = 'RSP', 2,\n                 px.ticker = 'VYM', 3,\n                 px.ticker = 'SCHD', 4,\n                 px.ticker = 'SPYD', 5,\n                 px.ticker = 'XLU', 6,\n                 px.ticker = 'XLP', 7,\n                 px.ticker = 'XLRE', 8,\n                 9)","computed_at":"2026-08-22T04:19:55.231322+00:00","elapsed":0.84331368}