{"slug":"1000-a-month-in-dividends","qid":"capital_by_yield","label":"Capital needed for $12,000 a year of distributions, by fund yield","post_title":"What $1,000 a Month in Dividends Takes","post_url":"/blog/1000-a-month-in-dividends#q-capital_by_yield","columns":["ticker","price","payments","trailing_yield_pct","capital_thousands_usd"],"rows":[{"ticker":"HDV","price":29.3,"payments":5,"trailing_yield_pct":11.32,"capital_thousands_usd":106},{"ticker":"JEPI","price":58.02,"payments":12,"trailing_yield_pct":7.89,"capital_thousands_usd":152},{"ticker":"SPYD","price":50.45,"payments":4,"trailing_yield_pct":4.03,"capital_thousands_usd":298},{"ticker":"VNQ","price":98.75,"payments":4,"trailing_yield_pct":3.52,"capital_thousands_usd":341},{"ticker":"XLU","price":44.29,"payments":4,"trailing_yield_pct":3.34,"capital_thousands_usd":359},{"ticker":"DVY","price":165.52,"payments":4,"trailing_yield_pct":3.18,"capital_thousands_usd":378},{"ticker":"SCHD","price":34.53,"payments":4,"trailing_yield_pct":3.04,"capital_thousands_usd":395},{"ticker":"VYM","price":166.63,"payments":4,"trailing_yield_pct":2.18,"capital_thousands_usd":551},{"ticker":"VIG","price":245.5,"payments":4,"trailing_yield_pct":1.46,"capital_thousands_usd":823},{"ticker":"SPY","price":776.05,"payments":4,"trailing_yield_pct":0.97,"capital_thousands_usd":1238}],"shape":"table","sql":"WITH px AS (\n    SELECT ticker, argMax(close, window_start) AS price\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN ('JEPI', 'SPYD', 'VYM', 'SCHD', 'HDV', 'DVY', 'VIG', 'SPY', 'XLU', 'VNQ')\n      AND window_start >= now() - INTERVAL 7 DAY\n      AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60\n           + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959\n    GROUP BY ticker\n),\ndv AS (\n    SELECT ticker, sum(cash_amount) AS ttm_div, count() AS payments\n    FROM global_markets.stocks_dividends\n    WHERE ticker IN ('JEPI', 'SPYD', 'VYM', 'SCHD', 'HDV', 'DVY', 'VIG', 'SPY', 'XLU', 'VNQ')\n      AND ex_dividend_date > today() - INTERVAL 1 YEAR\n      AND ex_dividend_date <= today()\n      AND cash_amount > 0\n    GROUP BY ticker\n)\nSELECT px.ticker AS ticker,\n       round(px.price, 2) AS price,\n       dv.payments AS payments,\n       round(dv.ttm_div / px.price * 100, 2) AS trailing_yield_pct,\n       round(12000 / (dv.ttm_div / px.price) / 1000, 0) AS capital_thousands_usd\nFROM px\nINNER JOIN dv ON px.ticker = dv.ticker\nORDER BY trailing_yield_pct DESC","computed_at":"2026-08-15T04:00:22.223545+00:00","elapsed":0.795800081}