STRASMORE/EXPLORE 3,094 QUERIES

shareholder_yield_compare

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-10-05, from what-is-total-payout-ratio.

as of ranking 6×3read in context →
shareholder_yield_compare — 6 rows by 3 columns, computed from US exchange, SIP and OPRA data.
tickerdividend_yield_pctshareholder_yield_pct
HD3.273.27
KO2.982.98
JNJ2.012.01
AAPL0.321.94
CSCO1.471.79
MSFT0.660.75
Rows × columns
6 × 3
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for shareholder_yield_compare, derived from the stored result.
ColumnTypeRangeNotes
ticker text 6 distinct values (AAPL, CSCO, HD…)
dividend_yield_pct number 0.32 to 3.27 percent
shareholder_yield_pct number 0.75 to 3.27 percent

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.

Run it yourself

This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.

WITH
    cash_rows AS
    (
        SELECT
            ticker,
            period_end,
            argMax(dividend_cash, (filing_date, period_end)) AS dividend_cash
        FROM
        (
            SELECT
                arrayJoin(tickers)        AS ticker,
                period_end,
                filing_date,
                abs(toFloat64(dividends)) AS dividend_cash
            FROM global_markets.stocks_cash_flow_statements
            WHERE hasAny(tickers, ['AAPL', 'MSFT', 'HD', 'CSCO', 'KO', 'JNJ'])
              AND timeframe = 'quarterly'
              AND period_end >= '2022-01-01'
        )
        WHERE ticker IN ('AAPL', 'MSFT', 'HD', 'CSCO', 'KO', 'JNJ')
        GROUP BY ticker, period_end
    ),
    ranked AS
    (
        SELECT
            ticker,
            period_end,
            dividend_cash,
            row_number() OVER (PARTITION BY ticker ORDER BY period_end DESC) AS rn
        FROM cash_rows
    ),
    trailing_year AS
    (
        SELECT
            ticker,
            sum(dividend_cash) AS dividend_cash,
            min(period_end)    AS win_start,
            max(period_end)    AS win_end
        FROM ranked
        WHERE rn <= 4
        GROUP BY ticker
        HAVING count() = 4
    ),
    share_counts AS
    (
        SELECT
            i.ticker                               AS ticker,
            argMin(i.diluted_shares, i.period_end) AS shares_before,
            argMax(i.diluted_shares, i.period_end) AS shares_latest
        FROM
        (
            SELECT
                arrayJoin(tickers)                    AS ticker,
                period_end,
                toFloat64(diluted_shares_outstanding) AS diluted_shares
            FROM global_markets.stocks_income_statements
            WHERE hasAny(tickers, ['AAPL', 'MSFT', 'HD', 'CSCO', 'KO', 'JNJ'])
              AND timeframe = 'quarterly'
              AND diluted_shares_outstanding > 0
              AND period_end >= '2022-01-01'
        ) AS i
        INNER JOIN trailing_year AS y ON i.ticker = y.ticker
        WHERE i.ticker IN ('AAPL', 'MSFT', 'HD', 'CSCO', 'KO', 'JNJ')
          AND toDate(i.period_end) >  subtractDays(toDate(y.win_start), 100)
          AND toDate(i.period_end) <= toDate(y.win_end)
        GROUP BY i.ticker
    ),
    avg_prices AS
    (
        SELECT
            d.ticker                AS ticker,
            avg(toFloat64(d.close)) AS avg_close
        FROM global_markets.stocks_daily_aggs AS d
        INNER JOIN trailing_year AS y ON d.ticker = y.ticker
        WHERE d.ticker IN ('AAPL', 'MSFT', 'HD', 'CSCO', 'KO', 'JNJ')
          AND d.date >  subtractDays(toDate(y.win_start), 100)
          AND d.date <= toDate(y.win_end)
        GROUP BY d.ticker
    ),
    market_caps AS
    (
        SELECT
            ticker,
            argMax(toFloat64(market_cap), date) AS mcap
        FROM global_markets.stocks_ratios
        WHERE ticker IN ('AAPL', 'MSFT', 'HD', 'CSCO', 'KO', 'JNJ')
          AND market_cap > 0
        GROUP BY ticker
    )
SELECT
    y.ticker                                 AS ticker,
    round(y.dividend_cash / m.mcap * 100, 2) AS dividend_yield_pct,
    round((y.dividend_cash + greatest(s.shares_before - s.shares_latest, 0) * p.avg_close) / m.mcap * 100, 2) AS shareholder_yield_pct
FROM trailing_year AS y
INNER JOIN share_counts AS s USING (ticker)
INNER JOIN avg_prices   AS p USING (ticker)
INNER JOIN market_caps  AS m USING (ticker)
ORDER BY shareholder_yield_pct DESC
⌘/Ctrl + Enter

このデータをAIアシスタントで使う

このページのデータで、すぐにクエリできる状態で開きます。無料、アカウント不要。