STRASMORE/EXPLORE 2,170 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-08-22, 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
Period covered
to
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 date 2024-08 to 2026-07
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.

the exact SQL behind every number
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

Run your own version of this

The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.

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 2,170 queries →