The exact quarters behind each buyback yield
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-08-08, from Dividends vs Buybacks: Shareholder Yield.
| ticker | prior_quarter_end | recent_quarter_end | shares_prior_millions | shares_recent_millions |
|---|---|---|---|---|
| CSCO | 2025-07-26 | 2026-01-24 | 3998 | 3984 |
| HD | 2025-08-03 | 2026-05-03 | 994 | 996 |
| KO | 2025-06-27 | 2026-07-03 | 4315 | 4313 |
| PEP | 2025-06-14 | 2026-06-13 | 1373 | 1369 |
- Rows × columns
- 4 × 5
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
ticker |
text | 4 distinct values (CSCO, HD, KO…) | |
prior_quarter_end |
date | 2025-06-14 to 2025-08-03 | |
recent_quarter_end |
date | 2026-01-24 to 2026-07-03 | |
shares_prior_millions |
number | 994 to 4,315 | count |
shares_recent_millions |
number | 996 to 4,313 | count |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
the exact SQL behind every number
SELECT
ticker,
toString(prior_period) AS prior_quarter_end,
toString(recent_period) AS recent_quarter_end,
round(shares_prior / 1e6, 0) AS shares_prior_millions,
round(shares_recent / 1e6, 0) AS shares_recent_millions
FROM
(
SELECT
arrayJoin(tickers) AS ticker,
maxIf(period_end, period_end > today() - 200) AS recent_period,
maxIf(period_end, period_end <= today() - 365) AS prior_period,
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
)
ORDER BY ticker
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisDividends vs Buybacks: Shareholder Yield
AAPL diluted share count, every reported quarter since 2021
series 20×3
→
Share of net income already committed to the dividend
ranking 8×2
→
Dividend yield, buyback yield and total shareholder yield
ranking 4×4
→
KO: dividend per share against the realised opening drop, every ex-date 2021 to 2025
series 20×4
→
Every 121-day window around a Coca-Cola ex-dividend date
series 14×6
→
How long after the ex-date the cash actually arrives
ranking 10×3
→
See all 2,170 queries →