{"slug":"what-is-dividend-yield","qid":"yield_vs_treasury","label":"The market's dividend yield vs. the 10-year Treasury: end-June readings, 2016-2026","post_title":"What Is Dividend Yield? What's Normal in 2026","post_url":"/blog/what-is-dividend-yield#q-yield_vs_treasury","columns":["year","market_dividend_yield_pct","treasury_10y_pct","treasury_minus_stocks_pct","gap_abs_pct"],"rows":[{"year":2016,"market_dividend_yield_pct":2.09,"treasury_10y_pct":1.49,"treasury_minus_stocks_pct":-0.6,"gap_abs_pct":0.6},{"year":2017,"market_dividend_yield_pct":1.91,"treasury_10y_pct":2.31,"treasury_minus_stocks_pct":0.4,"gap_abs_pct":0.4},{"year":2018,"market_dividend_yield_pct":1.82,"treasury_10y_pct":2.85,"treasury_minus_stocks_pct":1.03,"gap_abs_pct":1.03},{"year":2019,"market_dividend_yield_pct":1.85,"treasury_10y_pct":2,"treasury_minus_stocks_pct":0.15,"gap_abs_pct":0.15},{"year":2020,"market_dividend_yield_pct":1.86,"treasury_10y_pct":0.66,"treasury_minus_stocks_pct":-1.2,"gap_abs_pct":1.2},{"year":2021,"market_dividend_yield_pct":1.3,"treasury_10y_pct":1.45,"treasury_minus_stocks_pct":0.15,"gap_abs_pct":0.15},{"year":2022,"market_dividend_yield_pct":1.59,"treasury_10y_pct":2.98,"treasury_minus_stocks_pct":1.39,"gap_abs_pct":1.39},{"year":2023,"market_dividend_yield_pct":1.47,"treasury_10y_pct":3.81,"treasury_minus_stocks_pct":2.34,"gap_abs_pct":2.34},{"year":2024,"market_dividend_yield_pct":1.26,"treasury_10y_pct":4.36,"treasury_minus_stocks_pct":3.1,"gap_abs_pct":3.1},{"year":2025,"market_dividend_yield_pct":1.16,"treasury_10y_pct":4.24,"treasury_minus_stocks_pct":3.08,"gap_abs_pct":3.08},{"year":2026,"market_dividend_yield_pct":1.01,"treasury_10y_pct":4.44,"treasury_minus_stocks_pct":3.43,"gap_abs_pct":3.43}],"shape":"table","sql":"WITH spy_px AS (\n    SELECT toYear(toTimeZone(window_start, 'America/New_York')) AS year,\n           argMax(close, window_start) AS price\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'SPY'\n      AND toMonth(toTimeZone(window_start, 'America/New_York')) = 6\n      AND toDayOfMonth(toTimeZone(window_start, 'America/New_York')) >= 25\n      AND toYear(toTimeZone(window_start, 'America/New_York')) >= 2016\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),\nspy_div AS (\n    SELECT toYear(addMonths(ex_dividend_date, 6)) AS year,\n           sum(cash_amount) AS ttm_div\n    FROM global_markets.stocks_dividends\n    WHERE ticker = 'SPY' AND cash_amount > 0 AND ex_dividend_date >= toDate('2015-07-01')\n    GROUP BY year\n),\ntsy AS (\n    SELECT toYear(date) AS year,\n           argMax(yield_10_year, date) AS y10\n    FROM global_markets.treasury_yields\n    WHERE toMonth(date) = 6 AND toYear(date) >= 2016 AND yield_10_year IS NOT NULL\n    GROUP BY year\n)\nSELECT spy_px.year AS year,\n       round(spy_div.ttm_div / spy_px.price * 100, 2) AS market_dividend_yield_pct,\n       round(tsy.y10, 2) AS treasury_10y_pct,\n       round(tsy.y10 - spy_div.ttm_div / spy_px.price * 100, 2) AS treasury_minus_stocks_pct,\n       round(abs(tsy.y10 - spy_div.ttm_div / spy_px.price * 100), 2) AS gap_abs_pct\nFROM spy_px\nINNER JOIN spy_div ON spy_px.year = spy_div.year\nINNER JOIN tsy ON spy_px.year = tsy.year\nORDER BY year","computed_at":"2026-08-15T05:04:38.450692+00:00","elapsed":0.340287567}