Trailing twelve-month yield and indicated yield, same funds, same day
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-08-22, from SEC 30-Day Yield vs Distribution Yield.
| fund | ttm_distribution_yield_pct | indicated_yield_pct | gap_pct |
|---|---|---|---|
| JEPI | 7.91 | 7.59 | 0.31 |
| VYM | 2.2 | 2.38 | 0.17 |
| SCHD | 3 | 2.89 | 0.11 |
| TLT | 4.74 | 4.82 | 0.08 |
| QQQ | 0.42 | 0.45 | 0.03 |
| SPY | 0.98 | 0.99 | 0.01 |
- Rows × columns
- 6 × 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 |
|---|---|---|---|
fund |
text | 6 distinct values (JEPI, QQQ, SCHD…) | |
ttm_distribution_yield_pct |
number | 0.42 to 7.91 | percent |
indicated_yield_pct |
number | 0.45 to 7.59 | percent |
gap_pct |
number | 0.01 to 0.31 | 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.
the exact SQL behind every number
WITH
px AS
(
SELECT
ticker,
argMax(toFloat64(close), date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('SPY', 'SCHD', 'VYM', 'QQQ', 'TLT', 'JEPI')
AND date >= today() - 30
GROUP BY ticker
),
paid AS
(
SELECT
fund_ticker AS ticker,
sum(cash) AS ttm_cash,
argMax(cash, exd) AS latest_cash,
argMax(freq, exd) AS pays_per_year
FROM
(
SELECT
any(ticker) AS fund_ticker,
any(toFloat64(cash_amount)) AS cash,
any(ex_dividend_date) AS exd,
any(toUInt16(frequency)) AS freq
FROM global_markets.stocks_dividends
WHERE ticker IN ('SPY', 'SCHD', 'VYM', 'QQQ', 'TLT', 'JEPI')
AND ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
AND toUInt16(frequency) > 0
GROUP BY id
)
GROUP BY fund_ticker
)
SELECT
p.ticker AS fund,
round((100 * p.ttm_cash) / x.last_close, 2) AS ttm_distribution_yield_pct,
round((100 * p.latest_cash * p.pays_per_year) / x.last_close, 2) AS indicated_yield_pct,
round(abs(((100 * p.latest_cash * p.pays_per_year) / x.last_close)
- ((100 * p.ttm_cash) / x.last_close)), 2) AS gap_pct
FROM paid AS p
INNER JOIN px AS x ON x.ticker = p.ticker
ORDER BY gap_pct DESC, fund ASC
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisSEC 30-Day Yield vs Distribution Yield
Two years of regular distributions: how many, and how variable
ranking 6×3
→
The market rate backdrop: 3-month and 10-year Treasury yields
series 53×4
→
One bond fund, two distribution yields, month by month
series 37×4
→
Latest dividend yield: index heavyweights beside dividend-screen staples
ranking 12×4
→
Quarterly distributions per share: SCHD and VOO, 2025 Q1 through 2026 Q2
ranking 6×3
→
SCHD and VOO annualized dividend yield: twelve month-ends through July 2026
series 12×5
→
See all 2,170 queries →