{"slug":"sp-500-dividend-yield","qid":"payout_vs_price","label":"SPY distributions per share and price, both rebased to 100 at 2015","post_title":"S&P 500 Dividend Yield: How It's Measured","post_url":"/blog/sp-500-dividend-yield#q-payout_vs_price","columns":["year","distributions_index_2015_100","price_index_2015_100"],"rows":[{"year":2015,"distributions_index_2015_100":100,"price_index_2015_100":100},{"year":2016,"distributions_index_2015_100":107.9,"price_index_2015_100":109.6},{"year":2017,"distributions_index_2015_100":114.2,"price_index_2015_100":130.9},{"year":2018,"distributions_index_2015_100":121.3,"price_index_2015_100":122.6},{"year":2019,"distributions_index_2015_100":133.6,"price_index_2015_100":157.8},{"year":2020,"distributions_index_2015_100":135.3,"price_index_2015_100":183.3},{"year":2021,"distributions_index_2015_100":136,"price_index_2015_100":232.9},{"year":2022,"distributions_index_2015_100":150.3,"price_index_2015_100":187.5},{"year":2023,"distributions_index_2015_100":157.7,"price_index_2015_100":233.1},{"year":2024,"distributions_index_2015_100":168,"price_index_2015_100":287.4},{"year":2025,"distributions_index_2015_100":173.1,"price_index_2015_100":334.4}],"shape":"ranking","sql":"WITH px AS (\n    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,\n           argMax(close, window_start) AS year_end_price\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND toYear(toTimeZone(window_start, 'America/New_York')) BETWEEN 2015 AND 2025\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 year\n),\ndv AS (\n    SELECT toYear(ex_dividend_date) AS year,\n           sum(cash_amount) AS annual_distributions\n    FROM global_markets.stocks_dividends\n    WHERE ticker = 'SPY'\n      AND cash_amount > 0\n      AND ex_dividend_date >= toDate('2015-01-01')\n      AND ex_dividend_date <= toDate('2025-12-31')\n    GROUP BY year\n)\nSELECT px.year AS year,\n       round(100 * dv.annual_distributions / (SELECT annual_distributions FROM dv WHERE year = 2015), 1) AS distributions_index_2015_100,\n       round(100 * px.year_end_price / (SELECT year_end_price FROM px WHERE year = 2015), 1) AS price_index_2015_100\nFROM px\nINNER JOIN dv ON px.year = dv.year\nORDER BY year","computed_at":"2026-08-22T04:20:04.625550+00:00","elapsed":5.138386586}