{"slug":"dividend-yield-vs-treasury","qid":"yield_gap","label":"How many of the 15 payers yield less than the 3-month T-bill","post_title":"Dividend Yield vs Treasury Yield","post_url":"/blog/dividend-yield-vs-treasury#q-yield_gap","columns":["payers","below_tbill","at_or_above_tbill","tbill_3mo_pct"],"rows":[{"payers":15,"below_tbill":8,"at_or_above_tbill":7,"tbill_3mo_pct":3.87}],"shape":"scalar","sql":"WITH tickers AS (\n    SELECT arrayJoin(['KO','JNJ','PG','PEP','MCD','MMM','MO','VZ','XOM','CVX','IBM','KMB','O','T','ABBV']) AS ticker\n),\ndivs AS (\n    SELECT ticker, sum(cash_amount) AS annual_div\n    FROM global_markets.stocks_dividends\n    WHERE ticker IN (SELECT ticker FROM tickers)\n      AND frequency IN (1, 2, 4, 12)\n      AND ex_dividend_date >= today() - 370\n    GROUP BY ticker\n),\npx AS (\n    SELECT ticker, argMax(toFloat64(close), window_start) AS price\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN (SELECT ticker FROM tickers)\n      AND window_start >= now() - INTERVAL 5 DAY\n    GROUP BY ticker\n),\ntb AS (\n    SELECT round(yield_3_month, 2) AS t3mo\n    FROM global_markets.treasury_yields\n    ORDER BY date DESC\n    LIMIT 1\n),\nylds AS (\n    SELECT d.ticker AS ticker,\n           round(100 * d.annual_div / p.price, 2) AS dy\n    FROM divs d\n    INNER JOIN px p ON d.ticker = p.ticker\n)\nSELECT count() AS payers,\n       countIf(dy < (SELECT t3mo FROM tb)) AS below_tbill,\n       countIf(dy >= (SELECT t3mo FROM tb)) AS at_or_above_tbill,\n       (SELECT t3mo FROM tb) AS tbill_3mo_pct\nFROM ylds","computed_at":"2026-08-22T04:04:44.103742+00:00","elapsed":1.884458084}