STRASMORE/EXPLORE 3,214 QUERIES

Basket median dividend yield by month, with the 10-year Treasury 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-10-08, from Average Dividend Yield by Sector: 2026 Data.

as of series 36×4read in context →
Basket median dividend yield by month, with the 10-year Treasury yield — 36 rows by 4 columns, computed from US exchange, SIP and OPRA data.
monthmonth_labelbasket_median_yield_pcttreasury_10y_pct
2023-10Oct 20233.214.8
2023-11Nov 20233.034.5
2023-12Dec 20232.854.02
2024-01Jan 20242.824.06
2024-02Feb 20242.834.21
2024-03Mar 20242.774.21
2024-04Apr 20242.714.54
2024-05May 20242.694.48
2024-06Jun 20242.84.31
2024-07Jul 20242.724.25
2024-08Aug 20242.533.87
2024-09Sep 20242.533.72
2024-10Oct 20242.544.1
2024-11Nov 20242.564.36
2024-12Dec 20242.794.39
2025-01Jan 20252.794.63
2025-02Feb 20252.714.45
2025-03Mar 20252.774.28
2025-04Apr 20252.94.28
2025-05May 20252.854.42
2025-06Jun 20252.854.38
2025-07Jul 20252.914.39
2025-08Aug 20252.854.26
2025-09Sep 20252.824.12
2025-10Oct 20252.774.06
2025-11Nov 20252.694.09
2025-12Dec 20252.844.14
2026-01Jan 20262.414.21
2026-02Feb 20262.364.13
2026-03Mar 20262.434.25
2026-04Apr 20262.544.32
2026-05May 20262.634.48
2026-06Jun 20262.634.47
2026-07Jul 20262.474.6
2026-08Aug 20262.354.68
2026-09Sep 20262.474.99
Rows × columns
36 × 4
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 Basket median dividend yield by month, with the 10-year Treasury yield, derived from the stored result.
ColumnTypeRangeNotes
month text 36 distinct values (2023-10, 2023-11, 2023-12…)
month_label text 36 distinct values (Apr 2024, Apr 2025, Apr 2026…)
basket_median_yield_pct number 2.35 to 3.21 percent
treasury_10y_pct number 3.72 to 4.99 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
    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
        )
    ),
    month_px AS
    (
        SELECT
            ticker,
            toStartOfMonth(date)           AS m,
            max(date)                      AS last_session,
            argMax(toFloat64(close), date) AS month_close
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN (SELECT ticker FROM basket)
          AND date >= toStartOfMonth(today()) - 1095
          AND date <  toStartOfMonth(today())
        GROUP BY ticker, m
    ),
    div_rate AS
    (
        SELECT
            ticker,
            ex_dividend_date,
            max(toFloat64(cash_amount) * toFloat64(frequency)) AS annual_rate
        FROM global_markets.stocks_dividends
        WHERE ticker IN (SELECT ticker FROM basket)
          AND ex_dividend_date >= toStartOfMonth(today()) - 1460
          AND frequency > 0
          AND cash_amount > 0
        GROUP BY ticker, ex_dividend_date
    ),
    name_month AS
    (
        SELECT
            p.m                                               AS m,
            p.ticker                                          AS ticker,
            round(100 * d.annual_rate / p.month_close, 3)     AS yield_pct
        FROM month_px AS p
        ASOF LEFT JOIN div_rate AS d
            ON p.ticker = d.ticker AND p.last_session >= d.ex_dividend_date
    ),
    ust AS
    (
        SELECT
            toStartOfMonth(date)                      AS m,
            round(avg(toFloat64(yield_10_year)), 2)   AS treasury_10y_pct
        FROM global_markets.treasury_yields
        WHERE date >= toStartOfMonth(today()) - 1095
          AND date <  toStartOfMonth(today())
          AND yield_10_year > 0
        GROUP BY m
    )
SELECT
    formatDateTime(n.m, '%Y-%m')                                                             AS month,
    formatDateTime(n.m, '%b %Y')                                                             AS month_label,
    round(quantileDeterministicIf(0.5)(n.yield_pct, cityHash64(n.ticker), n.yield_pct > 0), 2) AS basket_median_yield_pct,
    any(t.treasury_10y_pct)                                                                  AS treasury_10y_pct
FROM name_month AS n
INNER JOIN ust AS t ON t.m = n.m
GROUP BY n.m
HAVING countIf(n.yield_pct > 0) > 0
ORDER BY n.m
⌘/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 → Dividend yield by sector: median payer, equal-weighted mean, cap-weighted table 11×5 → Dividends paid as a share of operating cash flow, by sector ranking 11×3 → Conagra (CAG): month-end price, annualized dividend rate, and yield, 2021-08 to 2026-07 series 60×5 → Walgreens Boots Alliance (WBA): month-end price, quarterly dividend, and yield, 2022-07 to 2024-06 series 24×5 → Highest dividend yields: US-listed companies over $2B, latest snapshot on file table 15×5 → See all 3,214 queries →