Dividends vs Buybacks: Shareholder Yield
Dividend yield, buyback yield and total shareholder yieldranking ·
2026-08-08 · 4×4
AAPL diluted share count, every reported quarter since 2021series ·
2026-08-08 · 20×3
The exact quarters behind each buyback yieldtable ·
2026-08-08 · 4×5
Share of net income already committed to the dividendranking ·
2026-08-08 · 8×2
Dividend yield, buyback yield and total shareholder yield
Dividend yield, buyback yield and total shareholder yield
| ticker | dividend_yield_pct | buyback_yield_pct | shareholder_yield_pct |
|---|---|---|---|
| PEP | 4.16 | 0.29 | 4.45 |
| HD | 2.65 | -0.2 | 2.45 |
| KO | 2.4 | 0.05 | 2.44 |
| CSCO | 1.36 | 0.35 | 1.71 |
the exact SQL behind every number
SELECT
d.ticker AS ticker,
round(100 * d.ttm_dividend / p.price, 2) AS dividend_yield_pct,
round(100 * (s.shares_prior - s.shares_recent) / s.shares_prior, 2) AS buyback_yield_pct,
round(100 * d.ttm_dividend / p.price
+ 100 * (s.shares_prior - s.shares_recent) / s.shares_prior, 2) AS shareholder_yield_pct
FROM
(
SELECT
ticker,
toFloat64(sum(amount)) AS ttm_dividend
FROM
(
SELECT
ticker,
id,
any(cash_amount) AS amount
FROM global_markets.stocks_dividends
WHERE ticker IN ('AAPL', 'MSFT', 'KO', 'PEP', 'CVX', 'CSCO', 'HD', 'JNJ')
AND frequency > 0
AND ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
GROUP BY ticker, id
)
GROUP BY ticker
) AS d
INNER JOIN
(
SELECT
ticker,
toFloat64(argMax(close, date)) AS price
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'KO', 'PEP', 'CVX', 'CSCO', 'HD', 'JNJ')
AND date > today() - 30
GROUP BY ticker
) AS p ON p.ticker = d.ticker
INNER JOIN
(
SELECT
arrayJoin(tickers) AS ticker,
argMaxIf(toFloat64(diluted_shares_outstanding), period_end, period_end > today() - 200) AS shares_recent,
argMaxIf(toFloat64(diluted_shares_outstanding), period_end, period_end <= today() - 365) AS shares_prior
FROM global_markets.stocks_income_statements
WHERE timeframe = 'quarterly'
AND diluted_shares_outstanding > 0
AND period_end > today() - 800
AND hasAny(tickers, ['AAPL', 'MSFT', 'KO', 'PEP', 'CVX', 'CSCO', 'HD', 'JNJ'])
GROUP BY ticker
HAVING ticker IN ('AAPL', 'MSFT', 'KO', 'PEP', 'CVX', 'CSCO', 'HD', 'JNJ')
AND countIf(period_end > today() - 200) > 0
AND countIf(period_end <= today() - 365) > 0
) AS s ON s.ticker = d.ticker
ORDER BY shareholder_yield_pct DESC
More from this analysisDividends vs Buybacks: Shareholder Yield
Share of net income already committed to the dividend
ranking 8×2
→
AAPL diluted share count, every reported quarter since 2021
series 20×3
→
The exact quarters behind each buyback yield
table 4×5
→
How long after the ex-date the cash actually arrives
ranking 10×3
→
See all 2,173 queries →