{"slug":"monthly-dividend-stocks-explained","qid":"schedule_yields","label":"Trailing yield by payment schedule: liquid US-listed payers, twelve months of cash through June 2026","post_title":"Monthly Dividend Stocks Explained","post_url":"/blog/monthly-dividend-stocks-explained#q-schedule_yields","columns":["schedule","tickers","median_trailing_yield_pct","p90_trailing_yield_pct"],"rows":[{"schedule":"Monthly","tickers":843,"median_trailing_yield_pct":4.83,"p90_trailing_yield_pct":11.04},{"schedule":"Twice a year","tickers":268,"median_trailing_yield_pct":2.23,"p90_trailing_yield_pct":4.59},{"schedule":"Quarterly","tickers":2421,"median_trailing_yield_pct":1.9,"p90_trailing_yield_pct":5.96},{"schedule":"Once a year","tickers":296,"median_trailing_yield_pct":1.42,"p90_trailing_yield_pct":7.16}],"shape":"ranking","sql":"WITH sched AS (\n    SELECT ticker,\n           argMax(frequency, ex_dividend_date) AS freq,\n           sum(cash_amount) AS ttm_cash\n    FROM global_markets.stocks_dividends\n    WHERE cash_amount > 0\n      AND distribution_type = 'recurring'\n      AND ex_dividend_date >= '2025-07-01'\n      AND ex_dividend_date <= '2026-06-30'\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker\n    HAVING freq IN (1, 2, 4, 12)\n),\ntape AS (\n    SELECT ticker,\n           argMax(toFloat64(close), window_start) AS last_close,\n           sum(toFloat64(close) * volume) AS dollar_vol\n    FROM global_markets.delayed_stocks_minute_aggs\n    WHERE ticker IN (SELECT ticker FROM sched)\n      AND window_start >= toDateTime('2026-06-01 00:00:00')\n      AND window_start < toDateTime('2026-07-01 00:00:00')\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    HAVING last_close > 5 AND dollar_vol >= 20000000\n)\nSELECT multiIf(freq = 12, 'Monthly',\n               freq = 4, 'Quarterly',\n               freq = 2, 'Twice a year',\n               'Once a year') AS schedule,\n       count() AS tickers,\n       round(quantileDeterministic(0.5)(100 * ttm_cash / last_close, cityHash64(ticker)), 2) AS median_trailing_yield_pct,\n       round(quantileDeterministic(0.9)(100 * ttm_cash / last_close, cityHash64(ticker)), 2) AS p90_trailing_yield_pct\nFROM sched\nINNER JOIN tape USING (ticker)\nGROUP BY schedule\nORDER BY median_trailing_yield_pct DESC","computed_at":"2026-07-31T08:39:32.094875+00:00","elapsed":0.002399297}