STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

Trailing vs Forward Dividend Yield Explained
Trailing vs forward dividend yield: eight large payers, latest session pricetable · 2026-08-22 · 8×6 3M (MMM): trailing vs forward dividend yield at every month end after a payout resetseries · 2026-08-22 · 26×6Preview: a 16-point series, ending lower. Realty Income (O): trailing vs forward dividend yield at every month end, two yearsseries · 2026-08-22 · 24×7Preview: a 16-point series, roughly flat. Distance between trailing and forward dividend yield, by payment scheduletable · 2026-08-22 · 4×7
Trailing vs forward dividend yield: eight large payers, latest session price

Trailing vs forward dividend yield: eight large payers, latest session price

most recentas of table 8×6read in context →
Trailing vs forward dividend yield: eight large payers, latest session price — 8 rows by 6 columns, computed from US exchange, SIP and OPRA data.
tickertrailing_yield_pctforward_yield_pctforward_minus_trailing_ppchecks_in_windowshare_price
PEP4.014.130.124143.5
PG2.963.010.044144.74
JNJ1.941.980.044270.62
KO2.282.330.04491.04
MCD2.712.750.034270.83
CVX3.433.470.034205.25
ABBV2.572.60.034266
MSFT0.750.7504483.7
the exact SQL behind every number
WITH last_px AS (
    SELECT ticker,
           argMax(close, window_start) AS close_price
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('ABBV', 'CVX', 'JNJ', 'KO', 'MCD', 'MSFT', 'PEP', 'PG')
      AND window_start >= now() - INTERVAL 10 DAY
      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
    GROUP BY ticker
),
paid AS (
    SELECT ticker,
           sum(cash_amount) AS ttm_cash,
           count() AS checks_in_window,
           argMax(cash_amount, ex_dividend_date) AS latest_cash,
           argMax(frequency, ex_dividend_date) AS pay_frequency
    FROM global_markets.stocks_dividends
    WHERE ticker IN ('ABBV', 'CVX', 'JNJ', 'KO', 'MCD', 'MSFT', 'PEP', 'PG')
      AND distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date > today() - INTERVAL 1 YEAR
      AND ex_dividend_date <= today()
    GROUP BY ticker
)
SELECT p.ticker AS ticker,
       round(toFloat64(d.ttm_cash) / toFloat64(p.close_price) * 100, 2) AS trailing_yield_pct,
       round(toFloat64(d.latest_cash) * d.pay_frequency / toFloat64(p.close_price) * 100, 2) AS forward_yield_pct,
       round((toFloat64(d.latest_cash) * d.pay_frequency - toFloat64(d.ttm_cash))
             / toFloat64(p.close_price) * 100, 2) AS forward_minus_trailing_pp,
       d.checks_in_window AS checks_in_window,
       round(toFloat64(p.close_price), 2) AS share_price
FROM last_px AS p
INNER JOIN paid AS d ON p.ticker = d.ticker
ORDER BY forward_minus_trailing_pp DESC
$