Strasmore Research

dividend capture strategy wey dey work

Dividend capture strategy dey buy stock before ex-dividend date and sell after. See how far price open down against dividend collected across tens of thousands of dates.

Dividend capture na di practice wey person dey buy stock small time before im ex-dividend date, hold am over di date wey dey fix who go receive di payment, then sell am quick after. Di appeal easy to talk: one night of ownership, one dividend. Di complication na say di stock go open di ex-dividend date at price wey di exchange don already reduce by roughly di dividend, and dis page dey measure how close dat reduction dey run to di payment across tens of thousands of ex-dividend dates.

Wetin be dividend capture strategy?

Three dates dey run the calendar. Declaration date na when dem announce di payment. Ex-dividend date na di first session wey buyer no go receive di coming dividend again. Record date na di day wey dem identify di holders for company book. If you buy share for ex-dividend date, dat share no get claim for dat quarter cash; but if you buy di session before, e get claim. Di ex-dividend date guide dey show di full timeline, and record date vs ex-dividend date dey separate di two dates wey readers dey confuse most.

Dividend capture dey turn dat entitlement rule into schedule: buy before ex-dividend date, hold through di open, sell, repeat for di next name. Di strategy old, dem don describe am well, and e dey rest on one simple question wey you fit measure. When di stock open again without di dividend attached, how much of di payment di opening price go give back?

Wetin dey happen to price for ex-dividend date?

For ex-dividend date, di exchange dey reduce di previous close by di dividend amount wen e dey set di reference price, and di opening auction dey take am from dere. Ten big companies wey dey pay dividend, each wit twelve quarterly ex-dividend dates between July 2023 and June 2026, put number for di overnight difference:

QueryOvernight decline vs dividend wey dem pay: ten big payers, 12 ex-dividend dates each, from Jul 2023 go reach Jun 2026
The exact SQL behind every number
WITH tk AS (SELECT ['KO','JNJ','PG','XOM','CVX','VZ','MRK','PEP','MCD','MMM'] AS t),
px AS (
    SELECT ticker,
           date,
           toFloat64(open) AS day_open,
           lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date
                                              ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN (SELECT arrayJoin(t) FROM tk)
      AND date BETWEEN toDate('2023-06-01') AND toDate('2026-06-30')
      AND open > 0 AND close > 0
),
dv AS (
    SELECT ticker, ex_dividend_date AS d, max(cash_amount) AS div_amount
    FROM global_markets.stocks_dividends
    WHERE ticker IN (SELECT arrayJoin(t) FROM tk)
      AND distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date BETWEEN toDate('2023-07-01') AND toDate('2026-06-30')
    GROUP BY ticker, d
)
SELECT px.ticker AS ticker,
       count() AS ex_dates,
       round(avg(dv.div_amount), 3) AS avg_dividend_usd,
       round(avg(px.prev_close - px.day_open), 3) AS avg_overnight_decline_usd,
       round(avg(px.prev_close - px.day_open) / avg(dv.div_amount), 2) AS decline_per_dividend_ratio
FROM px
INNER JOIN dv ON px.ticker = dv.ticker AND px.date = dv.d
WHERE px.prev_close > 0
GROUP BY px.ticker
ORDER BY decline_per_dividend_ratio DESC
Run this yourself

Read di last column as cents of opening decline per cent of dividend. For di top, KO get average opening decline of $0.544 against average dividend of $0.497, wey give ratio of 1.1. For di bottom, PG show $-0.22: di minus sign mean say di average ex-dividend open sit above di previous close for those 12 dates. Most of di ten names land within one-third of a dividend either side of di payment, wey be di pattern wey di mechanics describe, and di two ends of di table be where a capture schedule either dey flatter or disappoint.

Average of twelve dates dey hide di spread inside dem, so di next panel dey widen di sample.

How often the drop match the dividend?

Every regular quarterly cash dividend for US-listed stock wey dey above $5, from January 2024 go reach June 2026, we sort am by how the overnight difference compare with the payment. Ratio of 1 mean say the open give back exactly the dividend; 0 mean say the open match the prior close.

QueryEx-dividend openings wey dem sort by decline as multiple of dividend: US quarterly payers, from Jan 2024 go reach Jun 2026
The exact SQL behind every number
WITH divs AS (
    SELECT ticker, ex_dividend_date AS d, max(cash_amount) AS div_amount
    FROM global_markets.stocks_dividends
    WHERE distribution_type = 'recurring'
      AND frequency = 4
      AND cash_amount > 0
      AND ex_dividend_date BETWEEN toDate('2024-01-01') AND toDate('2026-06-30')
    GROUP BY ticker, d
),
px AS (
    SELECT ticker,
           date,
           toFloat64(open) AS day_open,
           lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date
                                              ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM global_markets.stocks_daily_aggs
    WHERE date BETWEEN toDate('2023-12-01') AND toDate('2026-06-30')
      AND open > 0 AND close > 0
),
ev AS (
    SELECT (px.prev_close - px.day_open) / divs.div_amount AS ratio
    FROM px
    INNER JOIN divs ON px.ticker = divs.ticker AND px.date = divs.d
    WHERE px.prev_close >= 5
      AND divs.div_amount / px.prev_close BETWEEN 0.001 AND 0.05
)
SELECT multiIf(ratio < 0, 'opened higher',
               ratio < 0.5, 'fell under half',
               ratio < 1, 'fell half to full',
               ratio < 1.5, 'fell 1 to 1.5x',
               'fell over 1.5x') AS drop_bucket,
       count() AS ex_dates,
       round(100 * count() / (SELECT count() FROM ev), 1) AS share_pct
FROM ev
GROUP BY drop_bucket
ORDER BY multiIf(drop_bucket = 'opened higher', 0,
                 drop_bucket = 'fell under half', 1,
                 drop_bucket = 'fell half to full', 2,
                 drop_bucket = 'fell 1 to 1.5x', 3, 4)
Run this yourself

The middle of the distribution dey behave as the textbook talk. The biggest single bucket na the one wey fell half to full, at 25.8% of dates across 8217 observations, with another 17.3% inside the band wey fell 1 to 1.5x. The tails be the story for a capture schedule. On 20.8% of these ex-dividend dates the stock opened higher pass the prior close, and on 22.4% e fell over 1.5x. Roughly two ex-dividend dates out of five dey outside the half-to-1.5x middle entirely.

That dispersion na the honest description of the trade. The payment dey fixed and known. The price wey dem sell the shares for no be so.

Quarter by quarter trace

One name for three years show how di two numbers dey move together. Coca-Cola pay twelve regular dividends for dat window; di panel put di overnight drop beside each payment and take di difference.

QueryCoca-Cola (KO): overnight decline vs dividend for each ex-dividend date, from Sep 2023 go reach Jun 2026
The exact SQL behind every number
WITH px AS (
    SELECT date,
           toFloat64(open) AS day_open,
           lagInFrame(toFloat64(close)) OVER (ORDER BY date
                                              ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'KO'
      AND date BETWEEN toDate('2023-06-01') AND toDate('2026-06-30')
      AND open > 0 AND close > 0
),
dv AS (
    SELECT ex_dividend_date AS d, max(cash_amount) AS div_amount
    FROM global_markets.stocks_dividends
    WHERE ticker = 'KO'
      AND distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date BETWEEN toDate('2023-07-01') AND toDate('2026-06-30')
    GROUP BY d
)
SELECT formatDateTime(px.date, '%Y-%m-%d') AS date,
       round(dv.div_amount, 3) AS dividend_usd,
       round(px.prev_close - px.day_open, 3) AS overnight_decline_usd,
       round((px.prev_close - px.day_open) - dv.div_amount, 3) AS decline_minus_dividend_usd
FROM px
INNER JOIN dv ON px.date = dv.d
ORDER BY date
Run this yourself

Di dividend line near flat: $0.46 for di first date, $0.53 for di last, dem raise am two times in between. Di drop line dey jagged around am. For 2023-09-14 di open give back $0.2 of a $0.46 payment; for 2026-06-15 e give back $1.54 of $0.53. Across all 12 dates di third column, di drop minus di dividend, run from $-0.26 for di first date to $1.01 for di last. One person wey hold am for one night collect di same cash each quarter and meet different opening price every time.

Di dividend wey dey beside normal day movement

One quarterly dividend small compare to di price. Ordinary daily movement for di same stock no small, and di capture window carry full session of dat movement.

QueryQuarterly dividend as share of price vs typical daily move: ten big payers, from Jul 2023 go reach Jun 2026
The exact SQL behind every number
WITH tk AS (SELECT ['KO','JNJ','PG','XOM','CVX','VZ','MRK','PEP','MCD','MMM'] AS t),
r AS (
    SELECT ticker,
           date,
           toFloat64(close) AS close,
           lagInFrame(toFloat64(close)) OVER (PARTITION BY ticker ORDER BY date
                                              ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker IN (SELECT arrayJoin(t) FROM tk)
      AND date BETWEEN toDate('2023-07-01') AND toDate('2026-06-30')
      AND close > 0
),
vol AS (
    SELECT ticker,
           round(100 * avg(abs(close / prev_close - 1)), 2) AS avg_daily_move_pct,
           round(quantileDeterministic(0.95)(100 * abs(close / prev_close - 1), cityHash64(date)), 2) AS p95_daily_move_pct,
           avg(close) AS avg_close
    FROM r
    WHERE prev_close > 0
    GROUP BY ticker
),
dv AS (
    SELECT ticker, avg(cash_amount) AS avg_dividend_usd
    FROM global_markets.stocks_dividends
    WHERE ticker IN (SELECT arrayJoin(t) FROM tk)
      AND distribution_type = 'recurring'
      AND cash_amount > 0
      AND ex_dividend_date BETWEEN toDate('2023-07-01') AND toDate('2026-06-30')
    GROUP BY ticker
)
SELECT vol.ticker AS ticker,
       round(100 * dv.avg_dividend_usd / vol.avg_close, 2) AS dividend_pct_of_price,
       vol.avg_daily_move_pct AS avg_daily_move_pct,
       vol.p95_daily_move_pct AS p95_daily_move_pct
FROM vol
INNER JOIN dv ON vol.ticker = dv.ticker
ORDER BY dividend_pct_of_price DESC
Run this yourself

Di biggest quarterly payment for di group, VZ, come to 1.64% of di average share price, against average daily move of 1.01% and 95th-percentile day of 2.95%. For di other side, MCD pay 0.59% of price per quarter while e dey move 0.82% for average day. Di target dey inside di noise for every name for di panel. Dat na di arithmetic wey capture schedule dey live with: di payment dem know am before time, and e small pass one ordinary session range.

Wetin dey between dividend and gain

Four things dey stack ontop of di opening adjustment wey we measure finish.

  • Di round trip. To enter and exit mean say you go cross di bid ask spread two times, and ex-dividend morning dey inside di time wey spreads dey run di widest. For one hypothetical $50 stock wey dem quote 49.98 for bid and 50.02 for offer, di round trip cost 4 cents against one 40 cent dividend.
  • Tax treatment. Under US rules as of July 2026, dividend dey qualified only when di share dey hold more dan 60 days inside di 121-day window wey centre for di ex-dividend date. One-night hold no pass dat test, and di payment dem tax am as ordinary income for di holder im marginal rate. Long-term holding fit meet am.
  • Di open price itself. Di panels wey dey ontop measure di opening print. Holder wey exit later for di session go take wetin remain of di day do.
  • Hedged versions. To sell call or buy put over di ex-dividend date dey remove di price risk and, once dem price di option, most of di dividend go with am. Ex-dividend dates and options show how di payment don dey embedded inside option prices, wey be where early assignment dey cluster.

Why e dey hard to keep visible edge

Every ex-dividend date dey public months before. Declaration dates, amounts, and calendars reach every desk at once, and dividend capture dey describe for textbooks, brokerage help pages, and screeners. Opportunity wey no need forecast and wey appear for published calendar dey attract participants wey get lower costs pass retail account: market makers wey already hold inventory, dealers wey dey pay institutional commissions, and firms wey dem tax under different rules. Their competition for the same shares dey lift pre-ex-date price and dey press post-ex-date price, and wetin remain na the distribution for second panel, wide, centred near one dividend, with no free cash wey dey sit for middle of am.

Measurable exceptions dey narrow. Openings for thinly traded names dey deviate more from the dividend, and special or unusually large dividends dey move bigger share of the price, wey dey change arithmetic without removing round-trip and tax items wey dey above.

FAQ

Stock dey always fall by di dividend on di ex-dividend date?

No. For US quarterly payers from January 2024 go reach June 2026, di opening price fall between half di dividend and 1.5 times di dividend for small pass half of all ex-dividend dates, and e open above di previous close for 20.8% of dem. Di exchange adjust di reference price by di dividend; di opening auction then price supply and demand for dat day.

How long you suppose hold stock to get di dividend?

Ownership for di record date na di requirement, wey mean say you buy before di ex-dividend date and hold am through am. Selling for di ex-dividend date itself keep di dividend. Holding longer no change anything about entitlement, though e change di tax character of di payment.

Dividend from one-day hold dey taxed different?

Yes. As of July 2026, US qualified-dividend treatment require say you hold di share more than 60 days inside di 121-day window wey center for di ex-dividend date, so payment wey you capture overnight dey taxed as ordinary income instead of long-term capital-gains rates.

Dividend capture dey work better with high-yield stocks?

Bigger dividend na bigger target, and e also come with bigger opening adjustment. Di panels above show dispersion around dat adjustment instead of systematic gap. Dividend yield and di payout ratio describe wetin high yield usually indicate about di payer.


Every number above come from stored, versioned query over filed dividend records and daily price history. Expand any panel to read di SQL, or run di same ex-dividend comparison for di Strasmore terminal.

#dividends#ex-dividend#strategy#market structure