{"slug":"why-stocks-drop-on-the-ex-dividend-date","qid":"drop_by_year","label":"Pooled opening drop per dollar paid, by calendar year","post_title":"Why stocks drop on the ex-dividend date","post_url":"/blog/why-stocks-drop-on-the-ex-dividend-date#q-drop_by_year","columns":["year","payment_count","drop_per_dollar_paid"],"rows":[{"year":"2021","payment_count":40,"drop_per_dollar_paid":0.85},{"year":"2022","payment_count":40,"drop_per_dollar_paid":0.93},{"year":"2023","payment_count":40,"drop_per_dollar_paid":0.92},{"year":"2024","payment_count":40,"drop_per_dollar_paid":0.78},{"year":"2025","payment_count":40,"drop_per_dollar_paid":0.81}],"shape":"ranking","sql":"WITH\nprices AS\n(\n    SELECT\n        ticker,\n        date,\n        open_px,\n        any(close_px) OVER (PARTITION BY ticker ORDER BY date ASC ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prior_close\n    FROM\n    (\n        SELECT\n            ticker,\n            date,\n            toFloat64(max(open))  AS open_px,\n            toFloat64(max(close)) AS close_px\n        FROM global_markets.stocks_daily_aggs\n        WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')\n          AND date >= '2020-12-01'\n          AND date <  '2026-01-01'\n        GROUP BY ticker, date\n    )\n),\nex_days AS\n(\n    SELECT\n        ticker,\n        ex_dividend_date            AS ex_date,\n        toFloat64(max(cash_amount)) AS dividend\n    FROM global_markets.stocks_dividends\n    WHERE ticker IN ('KO','PG','JNJ','PEP','XOM','CVX','MCD','HD','VZ','ABBV')\n      AND ex_dividend_date >= '2021-01-01'\n      AND ex_dividend_date <  '2026-01-01'\n      AND cash_amount > 0\n    GROUP BY ticker, ex_dividend_date\n)\nSELECT\n    toString(toYear(e.ex_date))                                AS year,\n    count()                                                    AS payment_count,\n    round(sum(p.prior_close - p.open_px) / sum(e.dividend), 2) AS drop_per_dollar_paid\nFROM ex_days AS e\nINNER JOIN prices AS p ON p.ticker = e.ticker AND p.date = e.ex_date\nWHERE p.prior_close > 0\nGROUP BY year\nORDER BY year","computed_at":"2026-08-14T15:02:40.524952+00:00","elapsed":0.003926838}