How many of the 15 payers yield less than the 3-month T-bill
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-04, from Dividend Yield vs Treasury Yield.
- Rows × columns
- 1 × 4
- 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 |
|---|---|---|---|
payers |
number | every row is 15 | |
below_tbill |
number | every row is 9 | |
at_or_above_tbill |
number | every row is 6 | |
tbill_3mo_pct |
number | every row is 4.17 | 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 tickers AS (
SELECT arrayJoin(['KO','JNJ','PG','PEP','MCD','MMM','MO','VZ','XOM','CVX','IBM','KMB','O','T','ABBV']) AS ticker
),
divs AS (
SELECT ticker, sum(cash_amount) AS annual_div
FROM global_markets.stocks_dividends
WHERE ticker IN (SELECT ticker FROM tickers)
AND frequency IN (1, 2, 4, 12)
AND ex_dividend_date >= today() - 370
GROUP BY ticker
),
px AS (
SELECT ticker, argMax(toFloat64(close), window_start) AS price
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM tickers)
AND window_start >= now() - INTERVAL 5 DAY
GROUP BY ticker
),
tb AS (
SELECT round(yield_3_month, 2) AS t3mo
FROM global_markets.treasury_yields
ORDER BY date DESC
LIMIT 1
),
ylds AS (
SELECT d.ticker AS ticker,
round(100 * d.annual_div / p.price, 2) AS dy
FROM divs d
INNER JOIN px p ON d.ticker = p.ticker
)
SELECT count() AS payers,
countIf(dy < (SELECT t3mo FROM tb)) AS below_tbill,
countIf(dy >= (SELECT t3mo FROM tb)) AS at_or_above_tbill,
(SELECT t3mo FROM tb) AS tbill_3mo_pct
FROM ylds
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.