STRASMORE/EXPLORE 3,256 QUERIES

Realty Income (O): trailing vs forward dividend yield at every month end, two years

Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-10-04, from Trailing vs Forward Dividend Yield Explained.

as of series 24×7read in context →
Realty Income (O): trailing vs forward dividend yield at every month end, two years — 24 rows by 7 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labeldeclared_monthly_usdchecks_in_windowtrailing_yield_pctforward_yield_pctgap_abs_pp
2024-08Aug 20240.263114.575.080.51
2024-09Sep 20240.263104.084.970.89
2024-10Oct 20240.2635104.385.330.95
2024-11Nov 20240.2635114.945.460.52
2024-12Dec 20240.2635104.895.921.03
2025-01Jan 20250.264104.795.81
2025-02Feb 20250.264115.065.550.5
2025-03Mar 20250.268114.995.540.55
2025-04Apr 20250.2685115.035.570.55
2025-05May 20250.2685125.615.690.08
2025-06Jun 20250.2685125.525.590.07
2025-07Jul 20250.269125.675.750.07
2025-08Aug 20250.269125.435.490.06
2025-09Sep 20250.269125.265.310.05
2025-10Oct 20250.2695135.995.580.41
2025-11Nov 20250.2695136.045.610.43
2025-12Dec 20250.27136.185.750.44
2026-01Jan 20260.27135.715.30.41
2026-02Feb 20260.27135.224.830.39
2026-03Mar 20260.2705135.735.310.42
2026-04Apr 20260.2705135.455.050.4
2026-05May 20260.2705135.725.30.42
2026-06Jun 20260.271135.665.250.41
2026-07Jul 20260.271135.495.090.4
Rows × columns
24 × 7
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for Realty Income (O): trailing vs forward dividend yield at every month end, two years, derived from the stored result.
ColumnTypeRangeNotes
month text 24 distinct values (2024-08, 2024-09, 2024-10…)
month_label text 24 distinct values (Apr 2025, Apr 2026, Aug 2024…)
declared_monthly_usd number 0.263 to 0.271 US dollars
checks_in_window number 10 to 13
trailing_yield_pct number 4.08 to 6.18 percent
forward_yield_pct number 4.83 to 5.92 percent
gap_abs_pp number 0.05 to 1.03

Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH px AS (
    SELECT toStartOfMonth(toDate(toTimeZone(window_start, 'America/New_York'))) AS month_start,
           max(toDate(toTimeZone(window_start, 'America/New_York'))) AS last_day,
           argMax(close, window_start) AS close_price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'O'
      AND toDate(toTimeZone(window_start, 'America/New_York')) >= toDate('2024-08-01')
      AND toDate(toTimeZone(window_start, 'America/New_York')) <= toDate('2026-07-31')
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY month_start
),
dv AS (
    SELECT ex_dividend_date, cash_amount
    FROM global_markets.stocks_dividends
    WHERE ticker = 'O'
      AND distribution_type = 'recurring'
      AND frequency = 12
      AND cash_amount > 0
      AND ex_dividend_date >= toDate('2023-07-01')
)
SELECT formatDateTime(px.month_start, '%Y-%m') AS month,
       formatDateTimeInJodaSyntax(px.month_start, 'MMM yyyy') AS month_label,
       round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)), 4) AS declared_monthly_usd,
       countIf(dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR) AS checks_in_window,
       round(sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR)
             / toFloat64(any(px.close_price)) * 100, 2) AS trailing_yield_pct,
       round(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 12
             / toFloat64(any(px.close_price)) * 100, 2) AS forward_yield_pct,
       round(abs(toFloat64(argMax(dv.cash_amount, dv.ex_dividend_date)) * 12
                 - sumIf(toFloat64(dv.cash_amount), dv.ex_dividend_date > px.last_day - INTERVAL 1 YEAR))
             / toFloat64(any(px.close_price)) * 100, 2) AS gap_abs_pp
FROM px, dv
WHERE dv.ex_dividend_date <= px.last_day
GROUP BY px.month_start, px.last_day
ORDER BY px.month_start
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisTrailing vs Forward Dividend Yield Explained
3M (MMM): trailing vs forward dividend yield at every month end after a payout reset series 26×6 → Trailing vs forward dividend yield: eight large payers, latest session price table 8×6 → Distance between trailing and forward dividend yield, by payment schedule table 4×7 → The 10-year Treasury yield, month by month: July 2021 to the latest reading on file series 61×3 → Conagra (CAG): month-end price, annualized dividend rate, and yield, 2021-08 to 2026-07 series 60×5 → Intel (INTC): month-end price, quarterly dividend, and quoted yield, Jan 2021 to Jun 2024 series 42×5 → See all 3,256 queries →