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×6
Realty Income (O): trailing vs forward dividend yield at every month end, two yearsseries ·
2026-08-22 · 24×7
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
| ticker | trailing_yield_pct | forward_yield_pct | forward_minus_trailing_pp | checks_in_window | share_price |
|---|---|---|---|---|---|
| PEP | 4.01 | 4.13 | 0.12 | 4 | 143.5 |
| PG | 2.96 | 3.01 | 0.04 | 4 | 144.74 |
| JNJ | 1.94 | 1.98 | 0.04 | 4 | 270.62 |
| KO | 2.28 | 2.33 | 0.04 | 4 | 91.04 |
| MCD | 2.71 | 2.75 | 0.03 | 4 | 270.83 |
| CVX | 3.43 | 3.47 | 0.03 | 4 | 205.25 |
| ABBV | 2.57 | 2.6 | 0.03 | 4 | 266 |
| MSFT | 0.75 | 0.75 | 0 | 4 | 483.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
More from this analysisTrailing vs Forward Dividend Yield Explained
Distance between trailing and forward dividend yield, by payment schedule
table 4×7
→
3M (MMM): trailing vs forward dividend yield at every month end after a payout reset
series 26×6
→
Realty Income (O): trailing vs forward dividend yield at every month end, two years
series 24×7
→
Monthly dividend stocks - filing companies paying every month, ranked by daily traded value
table 29×6
→
See all 2,170 queries →