Build a Dividend Income Tracker With SQL
Yield on cost against current yield, per positionranking ·
2026-10-08 · 6×3
Annual dividend income per position, with a running portfolio totalranking ·
2026-10-08 · 6×3
What the sample list paid per calendar year, share counts held fixedranking ·
2026-10-08 · 5×3
Projected dividend income by month, next twelve monthsseries ·
2026-10-08 · 13×4
Latest declared dividend per share for each sample holdingtable ·
2026-10-08 · 6×5
Portfolio Analysis in SQL: Weights to Drawdown
Position weights from last close times share counttable ·
2026-10-07 · 6×6
Pairwise daily return correlation, trailing yearranking ·
2026-10-07 · 15×2
Weekly peak-to-trough drawdown of the blended portfolioseries ·
2026-10-07 · 53×4
Trailing twelve-month dividend income by holdingtable ·
2026-10-07 · 6×6
Cumulative weight and the Herfindahl concentration indexranking ·
2026-10-07 · 6×4
Stock Correlation Matrix in One SQL Query
Daily bars per name against sessions shared with SPY, Oct 2025 to Sep 2026ranking ·
2026-10-06 · 6×3
AAPL and MSFT return correlation measured quarter by quarterranking ·
2026-10-06 · 7×3
Correlation of price levels against correlation of daily returns, same pairsranking ·
2026-10-06 · 15×4
Pairwise correlation of daily returns, six large caps, Oct 2025 to Sep 2026ranking ·
2026-10-06 · 15×2
Portfolio Dividend Yield: Weighted Average
Trailing 12-month dividend yield across ten household payersranking ·
2026-10-04 · 10×4
Two averages of the same five holdingsranking ·
2026-10-04 · 2×2
Dividend income from the five-name portfolio, by monthseries ·
2026-10-04 · 12×3
A five-name portfolio: share of value against share of incomeranking ·
2026-10-04 · 5×4
What $1,000 a Month in Dividends Takes
S&P 500 tracker distributions per share, by calendar year (2015-2025)ranking ·
2026-10-04 · 11×3
Payout ratio by yield band: US payers, $1B+ market cap, latest snapshottable ·
2026-10-04 · 4×5
Capital needed for $12,000 a year of distributions, by fund yieldtable ·
2026-10-04 · 10×5
Conagra (CAG): price, quarterly dividend, and yield, month-end 2023-07 to 2026-06series ·
2026-10-04 · 36×5
Implied Volatility vs Beta: What Each Tells You
NVDA beta against SPY, re-estimated monthly over a rolling twelve-month windowseries ·
2026-09-26 · 48×4
Average absolute daily move on sessions when SPY moved less than 0.25 percentranking ·
2026-09-26 · 10×4
Near-the-money implied volatility, 20 to 45 days to expiry, three weeks to Aug 21 2026table ·
2026-09-26 · 11×5
Beta and R-squared against SPY: daily returns versus weekly, twelve months to Aug 21 2026table ·
2026-09-26 · 10×5
Yield on cost against current yield, per position
Yield on cost against current yield, per position
| ticker | yield_on_cost_pct | current_yield_pct |
|---|---|---|
| O | 5.27 | 6.11 |
| XOM | 4.28 | 2.46 |
| KO | 3.92 | 2.46 |
| JNJ | 3.45 | 2.08 |
| PG | 3.08 | 2.94 |
| MSFT | 1.46 | 0.74 |
the exact SQL behind every number
WITH holdings AS
(
SELECT
tupleElement(h, 1) AS ticker,
tupleElement(h, 2) AS cost_per_share
FROM
(
SELECT arrayJoin([
('KO', 54.10),
('PG', 141.25),
('JNJ', 155.40),
('MSFT', 268.75),
('XOM', 96.20),
('O', 61.85)
]) AS h
)
),
declared AS
(
SELECT
ticker,
argMax(cash_amount, ex_dividend_date) AS cash_per_payment,
argMax(frequency, ex_dividend_date) AS pays_per_year
FROM global_markets.stocks_dividends
WHERE ticker IN ('KO', 'PG', 'JNJ', 'MSFT', 'XOM', 'O')
AND currency = 'USD'
AND frequency IN (1, 2, 4, 12)
AND ex_dividend_date >= today() - 400
AND ex_dividend_date <= today() + 120
GROUP BY ticker
),
last_px AS
(
SELECT
ticker,
argMax(toFloat64(close), date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('KO', 'PG', 'JNJ', 'MSFT', 'XOM', 'O')
AND date >= today() - 45
GROUP BY ticker
)
SELECT
h.ticker AS ticker,
round(toFloat64(d.cash_per_payment) * d.pays_per_year / h.cost_per_share * 100, 2) AS yield_on_cost_pct,
round(toFloat64(d.cash_per_payment) * d.pays_per_year / p.last_close * 100, 2) AS current_yield_pct
FROM holdings AS h
INNER JOIN declared AS d ON d.ticker = h.ticker
INNER JOIN last_px AS p ON p.ticker = h.ticker
ORDER BY yield_on_cost_pct DESC
More from this analysisBuild a Dividend Income Tracker With SQL
Annual dividend income per position, with a running portfolio total
ranking 6×3
→
What the sample list paid per calendar year, share counts held fixed
ranking 5×3
→
Projected dividend income by month, next twelve months
series 13×4
→
Latest declared dividend per share for each sample holding
table 6×5
→
See all 3,256 queries →