list of monthly dividend stocks wey dey pay
See all US-listed tickers wey dey pay cash every month instead of quarterly. Check dem yield and payment history for di latest session to pick better stocks.
Monthly dividend stocks dey pay cash every month instead of once every quarter, and the real list short pass wetin dem dey write for dem articles. If you check dem payment record instead of just vendor label, 1553 US-listed tickers wey make between ten and fourteen recurring cash payments over the trailing twelve months, and only 32 of dem get company-fundamentals record. Everything for dis page na price from di close of di Jul 21 session.
Monthly dividend stocks list
Every company wey dey list for US for this list, dem record ten to fourteen recurring cash payments for last twelve months, and dem trade at least one million dollars of stock every day. We rank dem by daily traded value.
The exact SQL behind every number
SELECT m.ticker AS ticker,
round(m.latest_payment, 4) AS monthly_payment_usd,
round(100 * m.latest_payment * 12 / l.last_close, 2) AS annual_yield_pct,
round(dateDiff('day', s.streak_start, s.last_ex) / 365.25, 1) AS years_paying_monthly,
round(l.adv_usd / 1e6, 1) AS avg_daily_traded_musd,
formatDateTime(l.last_session, '%b %e') AS priced_through
FROM (
SELECT ticker, argMax(cash_amount, ex_dividend_date) AS latest_payment
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 400 AND today())
GROUP BY ticker
HAVING count() BETWEEN 10 AND 14
AND argMax(frequency, ex_dividend_date) = 12
) AS m
INNER JOIN (
SELECT ticker,
maxIf(ed, gap_days > 70) AS streak_start,
max(ed) AS last_ex
FROM (
SELECT ticker, ex_dividend_date AS ed,
dateDiff('day',
lagInFrame(ex_dividend_date) OVER (PARTITION BY ticker ORDER BY ex_dividend_date),
ex_dividend_date) AS gap_days
FROM (
SELECT ticker, ex_dividend_date
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring' AND cash_amount > 0 AND ex_dividend_date <= today()
GROUP BY ticker, ex_dividend_date
)
)
GROUP BY ticker
) AS s ON s.ticker = m.ticker
INNER JOIN (
SELECT ticker,
avg(dollar_vol) AS adv_usd,
argMax(close_px, d) AS last_close,
max(d) AS last_session,
count() AS sessions
FROM (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(close) * volume) AS dollar_vol,
argMax(toFloat64(close), window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE window_start >= toDateTime(today() - 32)
AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
)
GROUP BY ticker
HAVING sessions >= 15 AND adv_usd >= 1000000 AND last_close > 0
) AS l ON l.ticker = m.ticker
INNER JOIN (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
) AS f ON f.ticker = m.ticker
ORDER BY l.adv_usd DESC
LIMIT 60O na the most heavily traded monthly payer for here: a $0.271 monthly payment, 14 years of unbroken monthly payments for record, and an annualized yield of 5% against its Jul 21 close, on 226.4 million dollars of stock for average session. This screen show 26 names. The yield column take latest single payment, multiply am by twelve, then divide am by that close, so e dey move whenever price move. E no be forecast for next twelve months of cash.
If you hold the stock before its ex-dividend date, na that one dey make you collect next check. The upcoming ex-dividend dates calendar show who dey go ex next, and the ex-dividend date explained explain the cutoff wey dey decide if buyer go collect.
How dem dey identify monthly payer
Dividend feed get frequency label, but if you rely on am alone, you go get wrong answer for both sides. Dis test dey count how many payments a ticker actually make, den dem dey set limit for dat count for both sides.
The exact SQL behind every number
WITH payers AS (
SELECT ticker,
count() AS payments_12m,
argMax(frequency, ex_dividend_date) AS freq_flag
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
filers AS (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
)
SELECT multiIf(payments_12m = 1, 'One a year',
payments_12m = 2, 'Two a year',
payments_12m BETWEEN 3 AND 6, 'Three to six a year',
payments_12m BETWEEN 7 AND 9, 'Seven to nine a year',
payments_12m BETWEEN 10 AND 14, 'Ten to fourteen a year',
payments_12m BETWEEN 15 AND 39, 'Fifteen to thirty-nine a year',
'Forty or more a year') AS bucket,
count() AS tickers,
countIf(freq_flag = 12) AS labelled_monthly,
countIf(ticker IN (SELECT ticker FROM filers)) AS company_filings
FROM payers
GROUP BY bucket
ORDER BY min(payments_12m)98 tickers make forty or more recurring cash payments over de trailing year, and another 77 make between fifteen and thirty-nine. Dem be weekly and daily distributors, and dis part of de fund market dey grow fast. If screen dey ask only for "ten payments or more", e go carry every one of dem enter de monthly list. If you cap de count at fourteen, e go remove dem.
De label alone no better. 71 tickers wey carry monthly frequency label pay exactly once over de year, and 182 of dem pay between three and six times. Inside de ten-to-fourteen band, label and record agree 1541 times out of 1553, na why dis page need both.
Most monthly payers na funds, no be operating companies
Dis part na wetin di listicles dey skip. Di warehouse no get any fund, ETF or REIT type flag, so you no fit filter di monthly-payer list to only operating companies by label. Wetin e get na company-fundamentals feed wey dey report market capitalization for di operating companies wey e cover. Exchange-traded and closed-end funds no dey inside dat coverage, so di presence of market capitalization na di proxy wey dem dey use for operating company for dis page. Out of di 1553 tickers for di monthly band, 32 get one. Di rest no get such record. Most of dem na exchange-traded, closed-end and interval funds, with some units, trusts and smaller issuers wey di feed no reach.
Di few wey dey file na real estate investment trusts, mortgage REITs, business development companies and royalty trusts dem dey dominate. Na dat be di real shape of monthly income: di corporate forms wey dey pay every month na dem build dem to pass cash straight through. Monthly equivalent of a two-decade dividend growth champion no even dey much among ordinary operating businesses, wey dey pay quarterly.
Wey monthly dividend stocks yield
The yield for monthly stocks dey spread wide pass the market. This panel group all monthly payers wey get full one year price history, and dem add one column wey yield screen no dey show: wetin the share price do for those twelve months.
The exact SQL behind every number
WITH monthly AS (
SELECT ticker, argMax(cash_amount, ex_dividend_date) AS latest_payment
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 365
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 400 AND today())
GROUP BY ticker
HAVING count() BETWEEN 10 AND 14
AND argMax(frequency, ex_dividend_date) = 12
),
filers AS (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
),
tape AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(close) * volume) AS dollar_vol,
argMax(toFloat64(close), window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM monthly)
AND (window_start >= toDateTime(today() - 32)
OR (window_start >= toDateTime(today() - 378) AND window_start < toDateTime(today() - 358)))
AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
),
px AS (
SELECT ticker,
avgIf(dollar_vol, d > today() - 32) AS adv_usd,
argMaxIf(close_px, d, d > today() - 32) AS last_close,
argMaxIf(close_px, d, d <= today() - 358) AS close_year_ago,
countIf(d > today() - 32) AS recent_sessions,
countIf(d <= today() - 358) AS old_sessions
FROM tape
GROUP BY ticker
HAVING recent_sessions >= 15
AND old_sessions > 0
AND adv_usd >= 1000000
AND last_close > 0
AND close_year_ago > 0
),
named AS (
SELECT m.ticker AS ticker,
100 * m.latest_payment * 12 / p.last_close AS yld,
100 * (p.last_close - p.close_year_ago) / p.close_year_ago AS price_change,
m.ticker IN (SELECT ticker FROM filers) AS is_filer
FROM monthly m
INNER JOIN px p ON p.ticker = m.ticker
)
SELECT multiIf(yld < 3, 'Under 3%',
yld < 5, 'From 3% to 5%',
yld < 8, 'From 5% to 8%',
yld < 12, 'From 8% to 12%',
'Above 12%') AS bucket,
count() AS payers,
round(quantileDeterministic(0.5)(yld, cityHash64(ticker)), 2) AS median_yield_pct,
round(quantileDeterministic(0.5)(price_change, cityHash64(ticker)), 1) AS median_price_change_12m_pct,
countIf(is_filer) AS company_filings
FROM named
GROUP BY bucket
ORDER BY median_yield_pctThe biggest group na From 3% to 5%, wey get 289 names, compared to 212 for the From 5% to 8% band and 65 for the Under 3% band. Median yields dey climb well-well, from 2.46% for the bottom go 14.35% for the top.
Now look the price column beside am. The median twelve-month price change dey show 0.5% for the lowest yield band and -0.4% for the From 3% to 5% band, then -6.6% for the Above 12% band. Yield put price for denominator, so one name fit enter the top bucket even if the payment no change. Extreme yield dey usually mean say share price dey fall rather than say the payer dey generous. Dividend yield versus Treasury yields explain wetin high income figure must pass.
Dem names wey dey above 12%
Any monthly payer wey dey give yield above roughly 12% na something wey person suppose look well. These na di filing companies wey pass dat mark, with wetin di share price and di monthly payment do over di past year.
The exact SQL behind every number
WITH monthly AS (
SELECT ticker,
argMax(cash_amount, ex_dividend_date) AS latest_payment,
argMin(cash_amount, ex_dividend_date) AS oldest_payment
FROM global_markets.stocks_dividends
WHERE ex_dividend_date > today() - 400
AND ex_dividend_date <= today()
AND cash_amount > 0
AND distribution_type = 'recurring'
AND ticker NOT IN ('SPCX')
AND ticker NOT IN ('KORU','SOXL','SOXS','TQQQ','SQQQ','NVDL','NVDS','NVD','TSLL','TSLQ','TSLZ','SPXL','SPXS','UPRO','SPXU','LABU','LABD','FAS','FAZ','TNA','TZA','YINN','YANG','UDOW','SDOW','BOIL','KOLD','UCO','SCO','USD','SSO','SDS','QLD','QID','ERX','ERY','DRN','DRV','CURE','SOXY','MUU','SNXX','UVXY','SVXY','UVIX','SVIX','BULZ','WEBL','WEBS','DPST','DRIP','GUSH','AGQ','ZSL','BITX','ETHU','MSTX','MSTU','CONL','DUST','JNUG','JDST','NUGT')
AND ticker NOT IN (SELECT ticker FROM global_markets.stocks_splits
WHERE execution_date BETWEEN today() - 400 AND today())
GROUP BY ticker
HAVING countIf(ex_dividend_date > today() - 365) BETWEEN 10 AND 14
AND argMax(frequency, ex_dividend_date) = 12
AND oldest_payment > 0
),
filers AS (
SELECT ticker
FROM global_markets.stocks_ratios
GROUP BY ticker
HAVING argMax(market_cap, date) > 0
),
tape AS (
SELECT ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
sum(toFloat64(close) * volume) AS dollar_vol,
argMax(toFloat64(close), window_start) AS close_px
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN (SELECT ticker FROM monthly)
AND (window_start >= toDateTime(today() - 32)
OR (window_start >= toDateTime(today() - 378) AND window_start < toDateTime(today() - 358)))
AND toDate(toTimeZone(window_start, 'America/New_York')) < today()
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
AND toHour(toTimeZone(window_start, 'America/New_York')) * 60
+ toMinute(toTimeZone(window_start, 'America/New_York')) < 960
GROUP BY ticker, d
),
px AS (
SELECT ticker,
avgIf(dollar_vol, d > today() - 32) AS adv_usd,
argMaxIf(close_px, d, d > today() - 32) AS last_close,
argMaxIf(close_px, d, d <= today() - 358) AS close_year_ago,
countIf(d > today() - 32) AS recent_sessions,
countIf(d <= today() - 358) AS old_sessions
FROM tape
GROUP BY ticker
HAVING recent_sessions >= 15
AND old_sessions > 0
AND adv_usd >= 1000000
AND last_close > 0
AND close_year_ago > 0
)
SELECT m.ticker AS ticker,
round(100 * m.latest_payment * 12 / p.last_close, 2) AS annual_yield_pct,
round(100 * (p.last_close - p.close_year_ago) / p.close_year_ago, 1) AS price_change_12m_pct,
round(100 * (m.latest_payment - m.oldest_payment) / m.oldest_payment, 1) AS payment_change_12m_pct,
round(p.adv_usd / 1e6, 1) AS avg_daily_traded_musd
FROM monthly m
INNER JOIN px p ON p.ticker = m.ticker
INNER JOIN filers f ON f.ticker = m.ticker
WHERE 100 * m.latest_payment * 12 / p.last_close >= 12
ORDER BY annual_yield_pct DESC
LIMIT 259 names pass di bar. EARN get di highest annualized figure at 21.85%; its share price move -26% over twelve months and its monthly payment move 0%. PSEC follow am at 19.34%, with a price move of -36.3% and a payment move of -22.2%. Sometimes, when company cut payment and di price fall, di yield go still rise for dat same name.
Yield na incomplete number if person no look am well, na why wetin be dividend yield dey explain am for full.
Realty Income monthly dividend, year by year
Realty Income na dem standard for dis category and na dem first place wey people dey look when dem dey read about monthly dividends. Di monthly rate wey dem declare, wey na di highest payment for every calendar year, dey stand beside di raise over di prior year and di number of times dem increase di rate inside dat year:
The exact SQL behind every number
WITH steps AS (
SELECT ed, amt,
lagInFrame(amt) OVER (ORDER BY ed ASC) AS prior_amt
FROM (
SELECT ex_dividend_date AS ed, max(cash_amount) AS amt
FROM global_markets.stocks_dividends
WHERE ticker = 'O'
AND distribution_type = 'recurring'
AND cash_amount > 0
AND ex_dividend_date >= '2013-01-01'
AND ex_dividend_date < toStartOfYear(today())
GROUP BY ed
)
),
yearly AS (
SELECT toYear(ed) AS year,
max(amt) AS monthly_rate,
countIf(prior_amt > 0 AND amt > prior_amt) AS raise_count
FROM steps
GROUP BY year
),
seq AS (
SELECT year, monthly_rate, raise_count,
lagInFrame(monthly_rate) OVER (ORDER BY year ASC) AS prior_rate
FROM yearly
),
panel AS (
SELECT year, monthly_rate, raise_count,
100 * (monthly_rate - prior_rate) / prior_rate AS raise_pct
FROM seq
WHERE prior_rate > 0 AND year >= 2014
)
SELECT year,
round(monthly_rate, 4) AS monthly_payment_usd,
round(raise_pct, 2) AS annual_raise_pct,
raise_count,
round(min(raise_pct) OVER (), 2) AS smallest_annual_raise_pct
FROM panel
ORDER BY yearDi monthly rate change from $0.1834 for 2014 go $0.27 for 2025. Di smallest annual step for di panel na 0.69%, so di rate increase every single year wey dem show. Di raise reach 2.47% for di latest full year and 0.69% for 2014, and di step count beside am show how dem reach dat level: 6 separate increases inside 2025 alone. Monthly payers dey move di rate small-small several times for year instead of one big step. You fit see di full profile for Realty Income dividend page.
How far back the monthly payment record dey go
Every streak for this page, dem measure am from dividend record instead of from the year company first start to pay monthly, and the record no old reach the oldest payers. If we count the tickers wey get ten to fourteen recurring ex-dates for every completed calendar year:
The exact SQL behind every number
WITH per_year AS (
SELECT ticker,
toYear(ex_dividend_date) AS year,
count(DISTINCT ex_dividend_date) AS payments
FROM global_markets.stocks_dividends
WHERE distribution_type = 'recurring'
AND cash_amount > 0
AND ex_dividend_date >= '2005-01-01'
AND ex_dividend_date < toStartOfYear(today())
GROUP BY ticker, year
)
SELECT year,
countIf(payments BETWEEN 10 AND 14) AS monthly_payers,
round(100 * countIf(payments BETWEEN 10 AND 14) / count(), 2) AS monthly_share_pct
FROM per_year
GROUP BY year
ORDER BY yearThe record hold 60 monthly payers for 2011 and 135 for 2012, then 730 for 2013 and 1481 for 2025. The share column show how dem change from plain growth for the feed: monthly payers go from 1.44% of all recurring payers to 10.2%. Any company wey dey pay monthly long before that step no fit show more years of streak for here than the record itself hold.
Wey dem dey use measure dis list
Every threshold and exclusion, for simple English.
- Cadence. Ticker go qualify as monthly if e record between ten and fourteen recurring cash payments for trailing 365 days AND its latest frequency label say monthly. Both bounds dey matter: the lower one dey allow small missing record, the upper one dey keep weekly and daily distributors out.
- Payment type. Only payments wey the feed mark as recurring dem dey count. Special, supplemental and irregular one-offs dem exclude am from the cadence test and from the yield.
- Streak. Years of uninterrupted monthly payments dey count consecutive recurring ex-dates wey no get gap longer than seventy days. The feed sometimes no get record for month wey company pay, so if dem demand twelve exact records for year, dem go understate every streak; to switch to quarterly dey open gap near three months and e go correctly end am. The record itself dey set the ceiling, as the coverage panel above show.
- Liquidity floor. At least one million dollars of stock must trade for day on average, for at least fifteen regular-hours sessions for the last month. If e below that, quoted spreads go make the yield academic.
- Pricing. Yields dey use the last close of a COMPLETED session; the session wey dey go on when dis page rebuild, dem exclude am, so the date stamp fit dey one or two days behind the calendar.
- Company filter. The main list dey keep only tickers wey get company-fundamentals record. The yield distribution panel dey keep every monthly payer, funds included.
- Exclusions. Leveraged and inverse exchange-traded products dem remove by name, as well as any ticker wey get stock split for past year (stock split dey fake price move and e dey break per-share comparison). One symbol wey two issuers dey use, dem exclude am everywhere.
- Wey no dey here. Fund expense ratios and the tax character of a distribution (return of capital versus income) no dey for dis data. Several high-yield monthly funds dey hand back capital instead of earnings, and dat one no dey show for yield.
FAQ
Which stocks pay dividends every month?
If we look at payment record for trailing twelve months, 1553 US-listed tickers dey pay monthly, but only 32 of dem get company-fundamentals record. Almost all of dem wey remain na funds. The one wey people dey trade pass for dem na O, and the list wey pass liquidity floor reach 26 deep.
Are monthly dividend stocks safe?
Monthly schedule no dey give any safety guarantee, and the group lean towards mortgage REITs and option-income funds wey payout dey move with credit conditions and rates. For all monthly payers wey we measure here, median twelve-month price change na -6.6% for names wey yield above 12% against 0.5% for those wey under 3%.
What is the highest-yielding monthly dividend stock?
Among monthly-paying filing companies wey pass liquidity floor, EARN carry the highest annualized yield at 21.85% as of Jul 21 close. Its share price move -26% over the prior twelve months, and na dis arithmetic dey make most double-digit yields.
How is the monthly yield on this page calculated?
Dem take the latest declared monthly payment, multiply am by twelve, then divide am by the close of the last completed session. Dis way, dem annualize the current rate instead of to sum the last twelve months of cash, so if a payer raise payment mid-year, the yield go look higher for here than its trailing yield.
Every table for up na stored, versioned query over declared dividend records and real minute bars. You fit expand the SQL under any panel, or build your own monthly-payer screen for Strasmore terminal.