Dividends vs Buybacks: Shareholder Yield
Dividend yield, buyback yield and total shareholder yieldranking ·
2026-10-04 · 8×4
AAPL diluted share count, every reported quarter since 2021series ·
2026-10-04 · 20×3
The exact quarters behind each buyback yieldtable ·
2026-10-04 · 8×5
Share of net income already committed to the dividendranking ·
2026-10-04 · 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.61 | 0.29 | 4.9 |
| HD | 3.28 | -0.2 | 3.08 |
| AAPL | 0.32 | 2.25 | 2.57 |
| KO | 2.45 | 0.05 | 2.5 |
| JNJ | 2.06 | 0 | 2.06 |
| CSCO | 1.49 | 0.52 | 2.01 |
| CVX | 3.41 | -2.15 | 1.26 |
| MSFT | 0.7 | 0.11 | 0.81 |
the exact SQL behind every number
WITH
quarters AS
(
SELECT
arrayJoin(tickers) AS ticker,
period_end,
argMax(toFloat64(diluted_shares_outstanding), filing_date) AS shares
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, period_end
HAVING ticker IN ('AAPL', 'MSFT', 'KO', 'PEP', 'CVX', 'CSCO', 'HD', 'JNJ')
),
latest AS
(
SELECT
ticker,
max(period_end) AS recent_period,
argMax(shares, period_end) AS shares_recent
FROM quarters
GROUP BY ticker
HAVING recent_period > today() - 400
),
share_pairs AS
(
SELECT
r.ticker AS ticker,
any(r.recent_period) AS recent_period,
any(r.shares_recent) AS shares_recent,
argMin(q.period_end, abs(dateDiff('day', q.period_end, r.recent_period - 365))) AS prior_period,
argMin(q.shares, abs(dateDiff('day', q.period_end, r.recent_period - 365))) AS shares_prior
FROM latest AS r
INNER JOIN quarters AS q ON q.ticker = r.ticker
WHERE q.period_end BETWEEN r.recent_period - 400 AND r.recent_period - 330
GROUP BY r.ticker
)
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 share_pairs 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 8×5
→
How long after the ex-date the cash actually arrives
ranking 10×3
→
See all 3,256 queries →