{"slug":"trailing-vs-forward-dividend-yield","qid":"monthly_payer_wedge","label":"Realty Income (O): trailing vs forward dividend yield at every month end, two years","post_title":"Trailing vs Forward Dividend Yield Explained","post_url":"/blog/trailing-vs-forward-dividend-yield#q-monthly_payer_wedge","columns":["month","month_label","declared_monthly_usd","checks_in_window","trailing_yield_pct","forward_yield_pct","gap_abs_pp"],"rows":[{"month":"2024-08","month_label":"Aug 2024","declared_monthly_usd":0.263,"checks_in_window":11,"trailing_yield_pct":4.57,"forward_yield_pct":5.08,"gap_abs_pp":0.51},{"month":"2024-09","month_label":"Sep 2024","declared_monthly_usd":0.263,"checks_in_window":10,"trailing_yield_pct":4.08,"forward_yield_pct":4.97,"gap_abs_pp":0.89},{"month":"2024-10","month_label":"Oct 2024","declared_monthly_usd":0.2635,"checks_in_window":10,"trailing_yield_pct":4.38,"forward_yield_pct":5.33,"gap_abs_pp":0.95},{"month":"2024-11","month_label":"Nov 2024","declared_monthly_usd":0.2635,"checks_in_window":11,"trailing_yield_pct":4.94,"forward_yield_pct":5.46,"gap_abs_pp":0.52},{"month":"2024-12","month_label":"Dec 2024","declared_monthly_usd":0.2635,"checks_in_window":10,"trailing_yield_pct":4.89,"forward_yield_pct":5.92,"gap_abs_pp":1.03},{"month":"2025-01","month_label":"Jan 2025","declared_monthly_usd":0.264,"checks_in_window":10,"trailing_yield_pct":4.79,"forward_yield_pct":5.8,"gap_abs_pp":1},{"month":"2025-02","month_label":"Feb 2025","declared_monthly_usd":0.264,"checks_in_window":11,"trailing_yield_pct":5.06,"forward_yield_pct":5.55,"gap_abs_pp":0.5},{"month":"2025-03","month_label":"Mar 2025","declared_monthly_usd":0.268,"checks_in_window":11,"trailing_yield_pct":4.99,"forward_yield_pct":5.54,"gap_abs_pp":0.55},{"month":"2025-04","month_label":"Apr 2025","declared_monthly_usd":0.2685,"checks_in_window":11,"trailing_yield_pct":5.03,"forward_yield_pct":5.57,"gap_abs_pp":0.55},{"month":"2025-05","month_label":"May 2025","declared_monthly_usd":0.2685,"checks_in_window":12,"trailing_yield_pct":5.61,"forward_yield_pct":5.69,"gap_abs_pp":0.08},{"month":"2025-06","month_label":"Jun 2025","declared_monthly_usd":0.2685,"checks_in_window":12,"trailing_yield_pct":5.52,"forward_yield_pct":5.59,"gap_abs_pp":0.07},{"month":"2025-07","month_label":"Jul 2025","declared_monthly_usd":0.269,"checks_in_window":12,"trailing_yield_pct":5.67,"forward_yield_pct":5.75,"gap_abs_pp":0.07},{"month":"2025-08","month_label":"Aug 2025","declared_monthly_usd":0.269,"checks_in_window":12,"trailing_yield_pct":5.43,"forward_yield_pct":5.49,"gap_abs_pp":0.06},{"month":"2025-09","month_label":"Sep 2025","declared_monthly_usd":0.269,"checks_in_window":12,"trailing_yield_pct":5.26,"forward_yield_pct":5.31,"gap_abs_pp":0.05},{"month":"2025-10","month_label":"Oct 2025","declared_monthly_usd":0.2695,"checks_in_window":13,"trailing_yield_pct":5.99,"forward_yield_pct":5.58,"gap_abs_pp":0.41},{"month":"2025-11","month_label":"Nov 2025","declared_monthly_usd":0.2695,"checks_in_window":13,"trailing_yield_pct":6.04,"forward_yield_pct":5.61,"gap_abs_pp":0.43},{"month":"2025-12","month_label":"Dec 2025","declared_monthly_usd":0.27,"checks_in_window":13,"trailing_yield_pct":6.18,"forward_yield_pct":5.75,"gap_abs_pp":0.44},{"month":"2026-01","month_label":"Jan 2026","declared_monthly_usd":0.27,"checks_in_window":13,"trailing_yield_pct":5.71,"forward_yield_pct":5.3,"gap_abs_pp":0.41},{"month":"2026-02","month_label":"Feb 2026","declared_monthly_usd":0.27,"checks_in_window":13,"trailing_yield_pct":5.22,"forward_yield_pct":4.83,"gap_abs_pp":0.39},{"month":"2026-03","month_label":"Mar 2026","declared_monthly_usd":0.2705,"checks_in_window":13,"trailing_yield_pct":5.73,"forward_yield_pct":5.31,"gap_abs_pp":0.42},{"month":"2026-04","month_label":"Apr 2026","declared_monthly_usd":0.2705,"checks_in_window":13,"trailing_yield_pct":5.45,"forward_yield_pct":5.05,"gap_abs_pp":0.4},{"month":"2026-05","month_label":"May 2026","declared_monthly_usd":0.2705,"checks_in_window":13,"trailing_yield_pct":5.72,"forward_yield_pct":5.3,"gap_abs_pp":0.42},{"month":"2026-06","month_label":"Jun 2026","declared_monthly_usd":0.271,"checks_in_window":13,"trailing_yield_pct":5.66,"forward_yield_pct":5.25,"gap_abs_pp":0.41},{"month":"2026-07","month_label":"Jul 2026","declared_monthly_usd":0.271,"checks_in_window":13,"trailing_yield_pct":5.49,"forward_yield_pct":5.09,"gap_abs_pp":0.4}],"shape":"series","sql":"WITH px AS (\n    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,\n           max(toDate(toTimeZone(window_start, 'America/New_York'))) AS last_day,\n           argMax(close, window_start) AS close_price\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker = 'O'\n      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-08-01')\n      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')\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 month_start\n),\ndv AS (\n    SELECT ex_dividend_date, cash_amount\n    FROM global_markets.stocks_dividends\n    WHERE ticker = 'O'\n      AND distribution_type = 'recurring'\n      AND frequency = 12\n      AND cash_amount > 0\n      AND ex_dividend_date >= toDate('2023-07-01')\n)\nSELECT formatDateTime(px.month_start, '%Y-%m') AS month,\n       formatDateTimeInJodaSyntax(px.month_start, 'MMM yyyy') AS month_label,\n       round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)), 4) AS declared_monthly_usd,\n       countIf(dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR) AS checks_in_window,\n       round(sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR)\n             / toFloat64(any(px.close_price)) * 100, 2) AS trailing_yield_pct,\n       round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 12\n             / toFloat64(any(px.close_price)) * 100, 2) AS forward_yield_pct,\n       round(abs(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 12\n                 - sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR))\n             / toFloat64(any(px.close_price)) * 100, 2) AS gap_abs_pp\nFROM px, dv\nWHERE dv.ex_dividend_date <= px.last_day\nGROUP BY px.month_start, px.last_day\nORDER BY px.month_start","computed_at":"2026-08-22T04:23:41.131909+00:00","elapsed":0.802040863}