STRASMORE/EXPLORE 3,214 QUERIES

Dividend yield by sector: median payer, equal-weighted mean, cap-weighted

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-08, from Average Dividend Yield by Sector: 2026 Data.

as of table 11×5read in context →
Dividend yield by sector: median payer, equal-weighted mean, cap-weighted — 11 rows by 5 columns, computed from US exchange, SIP and OPRA data.
sectormedian_payer_pctmean_all_names_pctcap_weighted_pctpriced_through
Communication5.333.440.69Oct 8, 2026
Real Estate4.284.123.99Oct 8, 2026
Discretionary3.281.860.36Oct 8, 2026
Utilities3.263.383.39Oct 8, 2026
Energy2.532.793.07Oct 8, 2026
Staples2.462.632.29Oct 8, 2026
Health Care2.382.332.31Oct 8, 2026
Financials2.162.032.07Oct 8, 2026
Industrials1.361.521.2Oct 8, 2026
Materials1.182.061.33Oct 8, 2026
Tech0.720.640.57Oct 8, 2026
Rows × columns
11 × 5
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 Dividend yield by sector: median payer, equal-weighted mean, cap-weighted, derived from the stored result.
ColumnTypeRangeNotes
sector text 11 distinct values (Communication, Discretionary, Energy…)
median_payer_pct number 0.72 to 5.33 percent
mean_all_names_pct number 0.64 to 4.12 percent
cap_weighted_pct number 0.36 to 3.99 percent
priced_through text 1 distinct value (Oct 8, 2026)

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
    basket AS
    (
        SELECT
            pair.1 AS ticker,
            pair.2 AS sector
        FROM
        (
            SELECT arrayJoin([
                ('XOM', 'Energy'), ('CVX', 'Energy'), ('COP', 'Energy'), ('SLB', 'Energy'),
                ('JPM', 'Financials'), ('BAC', 'Financials'), ('GS', 'Financials'), ('BLK', 'Financials'), ('AXP', 'Financials'),
                ('JNJ', 'Health Care'), ('ABBV', 'Health Care'), ('MRK', 'Health Care'), ('AMGN', 'Health Care'), ('GILD', 'Health Care'),
                ('KO', 'Staples'), ('PG', 'Staples'), ('PEP', 'Staples'), ('COST', 'Staples'), ('CL', 'Staples'),
                ('DUK', 'Utilities'), ('SO', 'Utilities'), ('AEP', 'Utilities'), ('NEE', 'Utilities'), ('XEL', 'Utilities'),
                ('AAPL', 'Tech'), ('MSFT', 'Tech'), ('AVGO', 'Tech'), ('CSCO', 'Tech'), ('ADBE', 'Tech'),
                ('CAT', 'Industrials'), ('HON', 'Industrials'), ('UNP', 'Industrials'), ('GE', 'Industrials'), ('LMT', 'Industrials'),
                ('HD', 'Discretionary'), ('MCD', 'Discretionary'), ('AMZN', 'Discretionary'), ('TSLA', 'Discretionary'), ('SBUX', 'Discretionary'),
                ('LIN', 'Materials'), ('SHW', 'Materials'), ('NEM', 'Materials'), ('DOW', 'Materials'),
                ('VZ', 'Communication'), ('T', 'Communication'), ('CMCSA', 'Communication'), ('GOOGL', 'Communication'), ('NFLX', 'Communication'),
                ('AMT', 'Real Estate'), ('PLD', 'Real Estate'), ('PSA', 'Real Estate'), ('SPG', 'Real Estate')
            ]) AS pair
        )
    ),
    price AS
    (
        SELECT
            ticker,
            max(date)                        AS price_date,
            argMax(toFloat64(close), date)   AS last_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN (SELECT ticker FROM basket)
          AND date >= today() - 20
        GROUP BY ticker
    ),
    indicated AS
    (
        SELECT
            ticker,
            toFloat64(argMax(cash_amount, ex_dividend_date))
                * toFloat64(argMax(frequency, ex_dividend_date)) AS annual_rate
        FROM global_markets.stocks_dividends
        WHERE ticker IN (SELECT ticker FROM basket)
          AND ex_dividend_date >= today() - 400
          AND frequency > 0
          AND cash_amount > 0
        GROUP BY ticker
    ),
    caps AS
    (
        SELECT
            ticker,
            argMax(toFloat64(market_cap), date) AS cap_usd
        FROM global_markets.stocks_ratios
        WHERE ticker IN (SELECT ticker FROM basket)
          AND date >= today() - 45
          AND market_cap > 0
        GROUP BY ticker
    ),
    name_level AS
    (
        SELECT
            b.sector                                                     AS sector,
            b.ticker                                                     AS ticker,
            p.price_date                                                 AS price_date,
            c.cap_usd                                                    AS market_cap,
            round(100 * ifNull(i.annual_rate, 0) / p.last_close, 2)      AS yield_pct
        FROM basket AS b
        INNER JOIN price AS p ON p.ticker = b.ticker
        INNER JOIN caps  AS c ON c.ticker = b.ticker
        LEFT  JOIN indicated AS i ON i.ticker = b.ticker
    )
SELECT
    sector,
    round(quantileDeterministicIf(0.5)(yield_pct, cityHash64(ticker), yield_pct > 0), 2) AS median_payer_pct,
    round(avg(yield_pct), 2)                                                             AS mean_all_names_pct,
    round(sum(yield_pct * market_cap) / sum(market_cap), 2)                              AS cap_weighted_pct,
    formatDateTime(max(price_date), '%b %e, %Y')                                         AS priced_through
FROM name_level
GROUP BY sector
HAVING countIf(yield_pct > 0) > 0
ORDER BY median_payer_pct DESC
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisAverage Dividend Yield by Sector: 2026 Data
The universe choice: sector means with and without non-payers table 11×6 → Basket median dividend yield by month, with the 10-year Treasury yield series 36×4 → Dividends paid as a share of operating cash flow, by sector ranking 11×3 → Highest dividend yields: US-listed companies over $2B, latest snapshot on file table 15×5 → Dividend outcome over the following 12 months by starting yield band (cohort of June 30, 2025) table 5×7 → Payout ratio by yield band: US payers above $1B market cap, latest snapshot on file table 5×6 → See all 3,214 queries →