Strasmore Research
Learn am Matt ConnorBy Matt Connor

Why stocks dey drop on ex-dividend date

Stocks dey drop on ex-dividend date because of mechanical price adjustment, no be sell-off. See how real payers open below the prior close.

Stocks ex-dividend date dey drop because of scheduled adjustment, no be sell-off. Buyer wey buy on ex-date no go receive the upcoming payment. So, the share dey change hands with one dividend less compared with the previous afternoon. Exchange also marks down the previous session close by the dividend amount for chart and order-price purposes. Where the stock actually opens na another matter. The panels below measure am across five years of ex-dates for some large dividend payers.

Why stocks drop on the ex-dividend date: the adjustment

Dividend get four dates. Declaration date na when the board announce the payment. Ex-dividend date na the first session wey the stock trade without the right to the dividend. Record date na when the company check its shareholder list. Pay date na when the cash enter. Our ex-dividend date guide explain the full sequence, while record date versus ex-dividend date separate the two dates wey people dey confuse pass.

Before anybody trade on ex-date, exchange dey make two mechanical adjustments:

  • Exchange mark down the previous session closing price by the dividend for reference. Charts, percentage-change fields, moving averages, and the reference price quoted against the opening auction all use the adjusted number.
  • Open orders wey dey below the market price reduce by the dividend amount.

Neither adjustment na trade. No shares change hands and no volume prints. The stock start the day from a lower reference point. Any price series wey ignore the adjustment go show phantom decline every quarter.

Do exchanges lower your open orders on the ex-date?

Yes, for order types wey dey below the current price. Exchanges reduce open buy limit orders and open sell stop orders, including sell stop limit orders, by the dividend amount on ex-date. Buy limit at $50.00 before a $0.50 dividend go open ex-date as buy limit at $49.50. Orders wey dey above the market, like sell limit or buy stop, remain as dem be. The reduction keep resting order roughly the same distance from the market wey the owner choose the day before. Dem express am in whole cents because US equities quote in cents.

DNR, short for Do Not Reduce, na instruction wey exempt order. If you attach am, the $50.00 buy limit remain at $50.00 through ex-date. No be every retail platform dey show DNR for order ticket. Where e dey available, e usually dey beside time in force as checkbox or special-instruction dropdown. Matching instruction, DNI (Do Not Increase), cover the share-count side after stock dividends and splits. due bills and stock splits explain that process.

How far does the price actually drop on the ex-date?

The panel below use a group of large dividend payers and every ex-date from 2021 through 2025. None of dem split its stock inside that period, so raw prices and raw cash amounts remain directly comparable. For each ex-date, e measure the previous session close against the ex-date open. Then e total the drop against the total dividend paid.

QueryOpening drop per dollar wey dem pay as dividend, ex-dates 2021 to 2025
The exact SQL behind every number
WITH
prices AS
(
    SELECT
        ticker,
        date,
        open_px,
        any(close_px) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_close
    FROM
    (
        SELECT
            ticker,
            date,
            toFloat64(max(open))  AS open_px,
            toFloat64(max(close)) AS close_px
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')
          AND date >= '2020-12-01'
          AND date <  '2026-01-01'
        GROUP BY ticker, date
    )
),
ex_days AS
(
    SELECT
        ticker,
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS dividend
    FROM global_markets.stocks_dividends
    WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')
      AND ex_dividend_date >= '2021-01-01'
      AND ex_dividend_date <  '2026-01-01'
      AND cash_amount > 0
    GROUP BY ticker, ex_dividend_date
)
SELECT
    e.ticker                                                   AS ticker,
    count()                                                    AS payment_count,
    round(avg(e.dividend), 4)                                  AS avg_dividend_usd,
    round(sum(p.prior_close - p.open_px) / sum(e.dividend), 2) AS drop_per_dollar_paid
FROM ex_days AS e
INNER JOIN prices AS p ON p.ticker = e.ticker AND p.date = e.ex_date
WHERE p.prior_close > 0
GROUP BY e.ticker
ORDER BY drop_per_dollar_paid DESC
Run this yourself

Read the last column as dollars of opening drop per dollar of dividend paid. Across the 10 names, the figure run from 0.28 at the bottom of the panel to 1.23 at the top. The top one belong to ABBV over 20 payments. Value of 1.00 mean say the stock open, on average, one full dividend below the previous close.

When dem pool every payment by calendar year, you fit see how much the answer change based on the sample wey you choose.

QueryPooled opening drop per dollar wey dem pay, by calendar year
The exact SQL behind every number
WITH
prices AS
(
    SELECT
        ticker,
        date,
        open_px,
        any(close_px) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_close
    FROM
    (
        SELECT
            ticker,
            date,
            toFloat64(max(open))  AS open_px,
            toFloat64(max(close)) AS close_px
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')
          AND date >= '2020-12-01'
          AND date <  '2026-01-01'
        GROUP BY ticker, date
    )
),
ex_days AS
(
    SELECT
        ticker,
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS dividend
    FROM global_markets.stocks_dividends
    WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')
      AND ex_dividend_date >= '2021-01-01'
      AND ex_dividend_date <  '2026-01-01'
      AND cash_amount > 0
    GROUP BY ticker, ex_dividend_date
)
SELECT
    toString(toYear(e.ex_date))                                AS year,
    count()                                                    AS payment_count,
    round(sum(p.prior_close - p.open_px) / sum(e.dividend), 2) AS drop_per_dollar_paid
FROM ex_days AS e
INNER JOIN prices AS p ON p.ticker = e.ticker AND p.date = e.ex_date
WHERE p.prior_close > 0
GROUP BY year
ORDER BY year
Run this yourself

The pooled figure come out at 0.85 across 40 payments in 2021, and 0.81 across 40 payments in 2025. So, any confident claim say ex-date drop na fixed share of the dividend na only one draw from distribution wey get this kind wide range.

Why one ex-date tells you nothing

Coca-Cola, KO, don dey pay dividend on steady quarterly schedule for decades. If you plot dividend per share against the realised opening drop at every ex-date, the measurement problem show clearly in one chart.

QueryKO: dividend per share against the realised opening drop, every ex-date 2021 to 2025
The exact SQL behind every number
WITH
prices AS
(
    SELECT
        date,
        open_px,
        any(close_px) OVER (ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_close
    FROM
    (
        SELECT
            date,
            toFloat64(max(open))  AS open_px,
            toFloat64(max(close)) AS close_px
        FROM global_markets.stocks_daily_aggs
        WHERE ticker = 'KO'
          AND date >= '2020-12-01'
          AND date <  '2026-01-01'
        GROUP BY date
    )
),
ex_days AS
(
    SELECT
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS dividend
    FROM global_markets.stocks_dividends
    WHERE ticker = 'KO'
      AND ex_dividend_date >= '2021-01-01'
      AND ex_dividend_date <  '2026-01-01'
      AND cash_amount > 0
    GROUP BY ex_dividend_date
)
SELECT
    toString(e.ex_date)                 AS ex_date,
    concat(monthName(e.ex_date), ' ', toString(toDayOfMonth(e.ex_date)), ', ', toString(toYear(e.ex_date))) AS ex_date_label,
    round(e.dividend, 4)                AS dividend_per_share,
    round(p.prior_close - p.open_px, 2) AS drop_at_open
FROM ex_days AS e
INNER JOIN prices AS p ON p.date = e.ex_date
WHERE p.prior_close > 0
ORDER BY e.ex_date
Run this yourself

The dividend line almost flat, and e step up once every year. The drop line dey swing around am. Some ex-dates open far below the adjustment, while others open outright above the previous close. KO pay $0.42 per share on March 12, 2021 and $0.51 on December 1, 2025, across the 20 ex-dates inside the window.

Single-day picture no clear at this scale. Quarterly dividend from large-cap payer worth well below one percent of share price, while normal overnight moves fit cover similar distance. The panel below compare both in basis points. One basis point na hundredth of one percentage point. E also count how often normal overnight move alone pass the full quarterly payment.

QueryQuarterly dividend against ordinary overnight moves, 2021 to 2025
The exact SQL behind every number
WITH
prices AS
(
    SELECT
        ticker,
        date,
        open_px,
        any(close_px) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_close
    FROM
    (
        SELECT
            ticker,
            date,
            toFloat64(max(open))  AS open_px,
            toFloat64(max(close)) AS close_px
        FROM global_markets.stocks_daily_aggs
        WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')
          AND date >= '2020-12-01'
          AND date <  '2026-01-01'
        GROUP BY ticker, date
    )
),
ex_days AS
(
    SELECT
        ticker,
        ex_dividend_date            AS ex_date,
        toFloat64(max(cash_amount)) AS dividend
    FROM global_markets.stocks_dividends
    WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')
      AND ex_dividend_date >= '2021-01-01'
      AND ex_dividend_date <  '2026-01-01'
      AND cash_amount > 0
    GROUP BY ticker, ex_dividend_date
),
div_size AS
(
    SELECT
        e.ticker                                AS ticker,
        avg(e.dividend / p.prior_close) * 10000 AS dividend_bps
    FROM ex_days AS e
    INNER JOIN prices AS p ON p.ticker = e.ticker AND p.date = e.ex_date
    WHERE p.prior_close > 0
    GROUP BY e.ticker
),
ordinary AS
(
    SELECT
        ticker,
        date,
        abs(open_px / prior_close - 1) * 10000 AS abs_gap_bps
    FROM prices
    WHERE prior_close > 0
      AND date >= '2021-01-01'
      AND (ticker, date) NOT IN (SELECT ticker, ex_date FROM ex_days)
)
SELECT
    o.ticker                                                              AS ticker,
    round(max(d.dividend_bps), 1)                                         AS dividend_bps,
    round(quantileDeterministic(0.5)(o.abs_gap_bps, toUInt32(o.date)), 1) AS median_gap_bps,
    round(100 * countIf(o.abs_gap_bps > d.dividend_bps) / count(), 1)     AS sessions_over_dividend_pct
FROM ordinary AS o
INNER JOIN div_size AS d ON d.ticker = o.ticker
GROUP BY o.ticker
ORDER BY sessions_over_dividend_pct DESC
Run this yourself

The median ordinary overnight move for HD measure 40.5 basis points against quarterly dividend worth 60.7. For 33.2 percent of ordinary sessions, the overnight move alone come out bigger than the full payment. At the other end of the panel, VZ clear its dividend that way on 3.2 percent of sessions. One ex-date na just one sample from that distribution, with dividend placed underneath am.

Why the drop is usually smaller than the dividend

Two mechanisms dey keep the observed drop below the full payment.

The first one na tax. One dollar of dividend and one dollar of share price no get the same after-tax value for taxable holder. Dividend dey taxed for the year wey e arrive, while unrealised gain only face tax when person sell, at the rate wey apply at that time. If marginal holder value one dollar of dividend as one minus dividend rate, and one dollar of price as one minus capital gains rate, the indifferent drop na dividend multiplied by (1 - td) / (1 - tg). Use illustrative rates, no be current law. Holder wey pay 20 percent tax on qualified dividend and 15 percent on long-term gain value the payment at 0.80 / 0.85, roughly 94 cents per dollar. That support drop near $0.47 on $0.50 dividend. If the same holder face 37 percent and 20 percent, ratio become 0.63 / 0.80, near 79 cents, or about $0.39 drop on the same payment. Which rates apply depend on holding period and account type. the qualified dividend holding period set out the test. Rates fit change over time, but the arithmetic shape no change.

The second one na the tick. Prices trade in whole cents, and $0.235 dividend no get exact expression inside an opening print.

Can you buy the day before to collect the dividend?

Do the arithmetic. Stock close at $50.00 on the afternoon before ex-date, with $0.50 dividend attached. Buy 100 shares at that close and you hold $5,000 of stock. Next morning, adjusted reference close na $49.50. The 100 shares dey marked near $4,950, and you hold $50 dividend receivable wey go settle on pay date weeks later. Before tax, both sides of ex-date leave you with $5,000. You convert $50 of share price into $50 cash and, for taxable account, create a tax event.

Buying the day before ex-date decide when you receive income. Whether the open land above or below adjusted reference on any particular morning na the noise wey the KO chart above show. The approach wey deliberately trade that gap get a name, and the dividend capture strategy explain the cost of running am. For exit-side mechanics, selling on the ex-dividend date answer the question directly.

How these panels were built

Dem select large US payers with continuous quarterly dividend histories. None split its stock between 2021 and 2025, so unadjusted opens and cash amounts remain comparable across the full window. For each ex-date, the previous close na the previous row in that ticker own daily session series. This handles weekends and holidays without hardcoded calendar. Dividend rows deduplicated per ticker and ex-date. The ratio panels total the drop against total dividend instead of averaging per-event ratios. That stop one small payment from dominating the figure.

FAQ

Why does a stock price drop on the ex-dividend date?

On ex-dividend date, buyer no longer receive the upcoming payment. Exchange also mark down the previous close by the dividend for reference and order-price purposes. The drop dey built into the date mechanics and happen before any trading start.

Does a stock always fall by exactly the dividend?

No. Adjustment to reference close na exactly the dividend, but opening print na wherever the auction clear. Across many ex-dates, the drop usually land below the full payment. On one morning, ordinary price movement often bigger than the dividend itself.

What is a DNR order?

DNR mean Do Not Reduce. Na instruction attached to open buy limit or sell stop order, telling exchange to leave the order price unchanged on ex-dividend date instead of reducing am by the dividend amount.

Do I get the dividend if I buy on the ex-dividend date?

No. If you buy on ex-date or later, the upcoming payment remain with the seller. To receive am, you must own the shares before ex-date open. Na that the date mark.

Does the ex-dividend drop mean I lost money?

Before tax, value move from share price into cash. Holder wey hold through ex-date see the position marked down, while dividend receivable appear beside am. Tax and the timing of pay date na what make the two sides differ in practice.


Every panel here come with the exact SQL underneath, so you fit see which sessions dem count and which ones dem skip. To run the same comparison on payer wey you already hold, ask the question in plain English on the Strasmore terminal.