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

2,173 answered market questions

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

Dividends vs Buybacks: Shareholder Yield
Dividend yield, buyback yield and total shareholder yieldranking · 2026-08-08 · 4×4Preview: 4 ranked values, largest first. AAPL diluted share count, every reported quarter since 2021series · 2026-08-08 · 20×3Preview: a 16-point series, ending lower. 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×2Preview: 8 ranked values, largest first.
Dividend yield, buyback yield and total shareholder yield

Dividend yield, buyback yield and total shareholder yield

most recentas of ranking 4×4read in context →
Dividend yield, buyback yield and total shareholder yield — 4 rows by 4 columns, computed from US exchange, SIP and OPRA data.
tickerdividend_yield_pctbuyback_yield_pctshareholder_yield_pct
PEP4.160.294.45
HD2.65-0.22.45
KO2.40.052.44
CSCO1.360.351.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
$