Weekly Dividend ETFs: How the Payouts Work
Weekly dividend ETFs pay every week from call option premium rather than portfolio dividends. Where the cash comes from, and what it does to the price.
Weekly dividend ETFs pay a distribution roughly every seven days rather than once a quarter. Nearly all of them are option income funds: the cash comes from selling call options against a stock or an index position, and only a small slice of it is portfolio dividend income. That difference sets how much the payment varies from week to week and what it does to the fund's share price.
How often do weekly dividend ETFs pay?
The ex-dividend date is the first session on which a buyer of the fund no longer receives the upcoming payment. A quarterly payer has four of them a year. A weekly payer has roughly fifty, usually on the same weekday. The panel below scans every US-listed symbol that went ex at least forty times in the trailing year and ranks them by how many.
| ticker | ex_dates_12m | avg_days_between |
|---|---|---|
| QLDY | 103 | 3.5 |
| SATA | 78 | 3.9 |
| ULTY | 54 | 6.8 |
| CHPY | 53 | 7 |
| GPTY | 53 | 7 |
| IWMY | 53 | 7 |
| LFGY | 53 | 7 |
| QDTE | 53 | 7 |
| QDTY | 53 | 7 |
| QQQY | 53 | 7 |
| RDTE | 53 | 7 |
| RDTY | 53 | 7 |
The exact SQL behind every number
SELECT
ticker,
count() AS ex_dates_12m,
round(dateDiff('day', min(ex_dividend_date), max(ex_dividend_date)) / (count() - 1), 1) AS avg_days_between
FROM
(
SELECT DISTINCT
ticker,
ex_dividend_date
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker NOT IN ('SPCX')
)
GROUP BY ticker
HAVING ex_dates_12m >= 40
ORDER BY ex_dates_12m DESC, ticker ASC
LIMIT 12QLDY sits at the top with 103 ex-dates in the trailing year, an average of 3.5 days apart. The spacing is a published schedule: the fund declares, goes ex, and pays on the same weekly rotation. The amount is the part that moves. For a holder, the ex-date stops being a quarterly event to plan around and becomes a standing feature of the calendar. Our upcoming ex-dividend dates tracker lists the next ones across the whole market.
How many weekly dividend ETFs are there?
The count is easy to measure directly. For each complete calendar year, count the symbols that cleared forty ex-dates.
| year | funds_paying_weekly |
|---|---|
| 2021 | 1 |
| 2022 | 2 |
| 2023 | 2 |
| 2024 | 2 |
| 2025 | 20 |
The exact SQL behind every number
SELECT
year,
count() AS funds_paying_weekly
FROM
(
SELECT
toString(toYear(ex_dividend_date)) AS year,
ticker,
countDistinct(ex_dividend_date) AS ex_dates
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= '2018-01-01'
AND ex_dividend_date < toStartOfYear(today())
AND ticker NOT IN ('SPCX')
GROUP BY year, ticker
HAVING ex_dates >= 40
)
GROUP BY year
ORDER BY yearIn 2025, the last complete calendar year in view, 20 symbols paid on that cadence. The earliest year the scan returns, 2021, held 1. The line between those two points is the shape of the category.
Where the weekly cash comes from
A covered call fund holds an asset and sells call options on it. The option buyer pays a premium up front for the right to buy that asset at a fixed strike price before expiry. The fund keeps the premium whatever happens next, and it passes most of it through to shareholders as the distribution. Selling options that expire in days instead of months lets the fund repeat the sale every week, which is what makes a weekly schedule possible at all. Covered call ETFs explained walks through the option leg, including what happens when the calls finish in the money.
Premium is priced off implied volatility, the market's estimate of how far the underlying will travel before expiry. When implied volatility runs high the same strike sells for more, and the fund has more cash on hand to distribute. When it falls, the weekly premium falls with it. The trace below takes the most frequent payer from the panel above and prints every distribution it made in the trailing year, alongside the rate each one would imply at fifty-two payments a year. That payer currently goes ex more often than once a week, and the annualized column is a common yardstick across payments rather than the fund's own forward yield.
| ex_date | fund | distribution | annualized_pct |
|---|---|---|---|
| 2025-10-01 | QLDY | 0.1956 | 19.9 |
| 2025-10-03 | QLDY | 0.1966 | 20.1 |
| 2025-10-08 | QLDY | 0.1968 | 20 |
| 2025-10-10 | QLDY | 0.1968 | 20.8 |
| 2025-10-15 | QLDY | 0.1925 | 20 |
| 2025-10-17 | QLDY | 0.1925 | 20.1 |
| 2025-10-22 | QLDY | 0.1941 | 20.2 |
| 2025-10-24 | QLDY | 0.1918 | 19.7 |
| 2025-10-29 | QLDY | 0.1983 | 19.8 |
| 2025-10-31 | QLDY | 0.201 | 20.3 |
| 2025-11-05 | QLDY | 0.1985 | 20.4 |
| 2025-11-07 | QLDY | 0.1941 | 20.5 |
| 2025-11-12 | QLDY | 0.1937 | 20.1 |
| 2025-11-14 | QLDY | 0.1924 | 20.6 |
| 2025-11-19 | QLDY | 0.1854 | 20.3 |
| 2025-11-21 | QLDY | 0.1829 | 20.5 |
| 2025-11-26 | QLDY | 0.1841 | 19.7 |
| 2025-12-01 | QLDY | 0.1869 | 20 |
| 2025-12-03 | QLDY | 0.1874 | 19.8 |
| 2025-12-05 | QLDY | 0.1895 | 20 |
The exact SQL behind every number
WITH
top_payer AS
(
SELECT ticker
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING countDistinct(ex_dividend_date) >= 40
ORDER BY countDistinct(ex_dividend_date) DESC, ticker ASC
LIMIT 1
),
payments AS
(
SELECT
ticker,
ex_dividend_date AS ex_date,
max(cash_amount) AS amount
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker IN (SELECT ticker FROM top_payer)
GROUP BY ticker, ex_date
),
px AS
(
SELECT
ticker,
date,
toFloat64(any(close)) AS close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 400
AND ticker IN (SELECT ticker FROM top_payer)
GROUP BY ticker, date
)
SELECT
toString(d.ex_date) AS ex_date,
d.ticker AS fund,
round(toFloat64(d.amount), 4) AS distribution,
round(100 * 52 * toFloat64(d.amount) / p.close, 1) AS annualized_pct
FROM payments AS d
INNER JOIN px AS p ON p.ticker = d.ticker AND p.date = d.ex_date
ORDER BY ex_dateQLDY paid $0.1956 per share on the first ex-date in the window and $0.1597 on the most recent. Put each one on a fifty-two payment year against the fund's close that day and they read 19.9% and 20.1%. Same fund, 103 payments over the trailing year, more than one a week, and a headline rate that lands somewhere different depending on which payment you annualize.
Does the share price drop on every ex-date?
Cash paid out leaves the fund. On the morning of the ex-date the fund's net asset value, the per-share value of everything it holds, opens lower by the amount of the distribution. That is bookkeeping rather than a market move: the shareholder holds the same value split differently, part in shares and part in cash. The panel below measures the effect across the weekly payers, setting the average distribution next to the average change from the prior session's close to the ex-date close.
| ticker | ex_dates | avg_distribution | avg_overnight_move |
|---|---|---|---|
| AMDW | 52 | 0.9325 | 0.0649 |
| ARMW | 47 | 0.6601 | -0.2778 |
| HOOY | 50 | 0.6431 | -1.1604 |
| HOOW | 52 | 0.5787 | -0.1989 |
| PLTY | 51 | 0.5699 | -0.8865 |
| WNTR | 51 | 0.5683 | -0.3566 |
| AMDY | 50 | 0.5457 | -0.6551 |
| CHPY | 53 | 0.5243 | -0.3058 |
| GDXW | 46 | 0.5189 | -0.1916 |
| GOOW | 52 | 0.4898 | -0.0168 |
The exact SQL behind every number
WITH
weekly AS
(
SELECT ticker
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING countDistinct(ex_dividend_date) >= 40
),
payments AS
(
SELECT
ticker,
ex_dividend_date AS ex_date,
max(cash_amount) AS amount
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker IN (SELECT ticker FROM weekly)
GROUP BY ticker, ex_date
),
px AS
(
SELECT
ticker,
date,
toFloat64(any(close)) AS close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 400
AND ticker IN (SELECT ticker FROM weekly)
GROUP BY ticker, date
)
SELECT
ticker,
count() AS ex_dates,
round(avg(amount), 4) AS avg_distribution,
round(avg(ex_close - prior_close), 4) AS avg_overnight_move
FROM
(
SELECT
d.ticker AS ticker,
d.ex_date AS ex_date,
toFloat64(any(d.amount)) AS amount,
any(pe.close) AS ex_close,
argMax(pp.close, pp.date) AS prior_close
FROM payments AS d
INNER JOIN px AS pe ON pe.ticker = d.ticker AND pe.date = d.ex_date
INNER JOIN px AS pp ON pp.ticker = d.ticker
WHERE pp.date < d.ex_date
AND pp.date >= d.ex_date - 7
GROUP BY d.ticker, d.ex_date
)
GROUP BY ticker
ORDER BY avg_distribution DESC
LIMIT 10Across 52 ex-dates, AMDW distributed an average of $0.9325 per share, and the move from the prior close to the ex-date close averaged 0.0649 dollars per share. The distribution is the piece of that move the fund sets in advance. The rest is whatever the underlying did between the two closes, so no single week lines up exactly. Averaged across fifty of them, the distribution is the part that recurs.
Why a distribution yield is not a dividend yield
A dividend yield measures what a company's board pays against its share price. A distribution yield on a weekly payer is a different measurement: take one week's payment, multiply by fifty-two, divide by the price. It assumes the most recent premium repeats fifty-two times, and the trace above shows how far that assumption travels. The figure is also silent on the source of the cash. Option premium, portfolio dividends, realized gains, and returned principal all enter the same distribution and all land in the same headline percentage.
The SEC 30-day yield is the closest thing to a like-for-like number, since it measures the interest and dividends the portfolio actually earned over the period, net of expenses. On an option income fund the two figures can sit far apart. SEC yield versus distribution yield works through both calculations.
Return of capital and your cost basis
Part of a weekly distribution can be classified as return of capital, which is not income at all. It is a portion of your own principal handed back, and the tax code treats it by reducing your cost basis in the shares instead of taxing it on receipt. Buy at $20, take $2 of return of capital, and your basis becomes $18. The tax arrives later, in a larger capital gain or a smaller loss when you sell.
Funds publish running estimates in Section 19(a) notices, and those estimates are provisional. The final split across ordinary income, qualified dividends, capital gain, and return of capital is settled on the year-end 1099-DIV, where return of capital appears in Box 3 as a nondividend distribution. A year of weekly notices can be reclassified in January. Return of capital in ETF distributions covers how to read them.
What happens when a fund pays out more than it earns
This is the question underneath the whole category. When option premium and portfolio income cover the distribution, NAV can hold roughly flat while the cash goes out the door. When the distribution runs ahead of what the fund takes in, the balance comes out of principal, and NAV grinds lower by the difference. The last panel puts both halves side by side: total cash paid over the trailing year as a percentage of the starting price, and the price change over that same year.
| ticker | distributions_pct | price_change_pct | cash_plus_price_pct |
|---|---|---|---|
| AMDW | 106.5 | 120.6 | 227.1 |
| WNTR | 84.1 | -56.5 | 27.7 |
| MRNY | 80.7 | 112 | 192.7 |
| AMDY | 71.5 | 31.1 | 102.6 |
| AMYY | 68.6 | -44.4 | 24.1 |
| ARMW | 61 | 0.9 | 61.9 |
| NVYY | 56.9 | -52.5 | 4.3 |
| SMYY | 55 | -76.6 | -21.6 |
| IOYY | 53.6 | -75.2 | -21.6 |
| FIAT | 52 | -48.2 | 3.8 |
The exact SQL behind every number
WITH
weekly AS
(
SELECT ticker
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker NOT IN ('SPCX')
GROUP BY ticker
HAVING countDistinct(ex_dividend_date) >= 40
),
paid AS
(
SELECT
ticker,
sum(amount) AS cash_12m
FROM
(
SELECT
ticker,
ex_dividend_date,
max(cash_amount) AS amount
FROM global_markets.stocks_dividends
WHERE ex_dividend_date >= today() - 365
AND ex_dividend_date <= today()
AND ticker IN (SELECT ticker FROM weekly)
GROUP BY ticker, ex_dividend_date
)
GROUP BY ticker
),
px AS
(
SELECT
ticker,
toFloat64(argMin(close, date)) AS start_close,
toFloat64(argMax(close, date)) AS end_close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 365
AND ticker IN (SELECT ticker FROM weekly)
GROUP BY ticker
HAVING countDistinct(date) >= 220
)
SELECT
c.ticker AS ticker,
round(100 * toFloat64(c.cash_12m) / p.start_close, 1) AS distributions_pct,
round(100 * (p.end_close - p.start_close) / p.start_close, 1) AS price_change_pct,
round(100 * (toFloat64(c.cash_12m) + p.end_close - p.start_close) / p.start_close, 1) AS cash_plus_price_pct
FROM paid AS c
INNER JOIN px AS p ON p.ticker = c.ticker
ORDER BY distributions_pct DESC
LIMIT 10AMDW leads on cash, paying 106.5% of its starting price out over the year against a price change of 120.6%. Adding the two gives 227.1% for a holder who took the cash and kept the shares. Every fund here has a full year of trading history, so both columns cover the same window.
Reading the two columns together is the entire exercise. A large distribution percentage next to a deeply negative price change describes a fund whose payments have outrun what it collected. The same distribution percentage next to a flat price describes a fund paying out of income it earned. The headline yield looks identical in both cases. Monthly funds run the same arithmetic on a slower clock, which monthly dividend ETFs works through.
How these panels are built
The scans define a weekly payer empirically, as any symbol with at least forty ex-dividend dates in the trailing year, rather than trusting a declared frequency field. Distribution figures are declared cash amounts, deduplicated to one row per symbol and ex-date. Price columns are daily session closes as traded on the date shown. Symbols that vendor feeds have reassigned between two different issuers are excluded from every scan on this page.
FAQ
Are weekly dividend ETF payments real dividends?
Usually not in the ordinary sense. In an option income fund most of the cash is premium collected from selling call options, plus whatever the underlying holdings paid. The year-end 1099-DIV assigns each part its final tax character.
Do weekly dividend ETFs lose value over time?
Not by rule. The price falls by the distribution on each ex-date, then trades on its own from there. Whether it makes that ground back over a year depends on the underlying and on how much of the payment the fund actually earned, which is what the trailing-year panel above measures.
How are weekly distributions taxed?
Each one splits across ordinary income, qualified dividends, capital gain, and return of capital. Only the year-end tax form settles the split. The return of capital portion lowers your cost basis instead of being taxed on receipt.
What is the ex-dividend date on a weekly payer?
It is the first session on which a new buyer does not receive the upcoming payment. On a weekly fund it recurs most weeks on the same weekday, so buying a day late means waiting about a week rather than a quarter.
Can a weekly ETF cut its distribution?
Yes, and the trace above shows the amount moving from week to week. Nothing fixes the payment. It tracks the premium the fund collected, which moves with implied volatility and with the fund's own option schedule.
Every panel on this page carries the SQL that produced it. To pull one fund's payment history, or to line its distributions up against its price over any window, ask the question in plain English on the Strasmore terminal.