{"slug":"when-companies-announce-dividend-raises","qid":"grower_raise_calendar","label":"Typical raise month by company: twelve dividend growers, raises since 2016","post_title":"When Companies Announce Dividend Raises","post_url":"/blog/when-companies-announce-dividend-raises#q-grower_raise_calendar","columns":["ticker","typical_month","raises_total","raises_in_typical_month","same_month_pct"],"rows":[{"ticker":"HD","typical_month":"Feb","raises_total":11,"raises_in_typical_month":11,"same_month_pct":100},{"ticker":"KO","typical_month":"Feb","raises_total":11,"raises_in_typical_month":11,"same_month_pct":100},{"ticker":"JNJ","typical_month":"Apr","raises_total":11,"raises_in_typical_month":11,"same_month_pct":100},{"ticker":"PG","typical_month":"Apr","raises_total":10,"raises_in_typical_month":10,"same_month_pct":100},{"ticker":"WMT","typical_month":"Feb","raises_total":9,"raises_in_typical_month":9,"same_month_pct":100},{"ticker":"MMM","typical_month":"Feb","raises_total":11,"raises_in_typical_month":10,"same_month_pct":91},{"ticker":"CAT","typical_month":"Jun","raises_total":9,"raises_in_typical_month":8,"same_month_pct":89},{"ticker":"ADP","typical_month":"Nov","raises_total":12,"raises_in_typical_month":10,"same_month_pct":83},{"ticker":"PEP","typical_month":"May","raises_total":11,"raises_in_typical_month":9,"same_month_pct":82},{"ticker":"CVX","typical_month":"Jan","raises_total":10,"raises_in_typical_month":7,"same_month_pct":70},{"ticker":"MCD","typical_month":"Sep","raises_total":11,"raises_in_typical_month":6,"same_month_pct":55},{"ticker":"XOM","typical_month":"Oct","raises_total":9,"raises_in_typical_month":4,"same_month_pct":44}],"shape":"series","sql":"WITH quarterly AS (\n    SELECT ticker,\n           ex_dividend_date,\n           round(max(toFloat64(cash_amount)), 4) AS amount,\n           max(declaration_date) AS declared\n    FROM global_markets.stocks_dividends\n    WHERE ticker IN ('JNJ','KO','PG','PEP','MCD','WMT','CVX','XOM','MMM','CAT','HD','ADP')\n      AND distribution_type = 'recurring'\n      AND frequency = 4\n      AND cash_amount > 0\n      AND declaration_date > toDate('2015-06-30')\n      AND ex_dividend_date >= toDate('2015-07-01')\n      AND ex_dividend_date <= toDate('2026-07-31')\n    GROUP BY ticker, ex_dividend_date\n),\nstepped AS (\n    SELECT ticker,\n           declared,\n           amount,\n           ex_dividend_date,\n           lagInFrame(amount, 1) OVER (PARTITION BY ticker ORDER BY ex_dividend_date ASC\n                                       ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_amount,\n           lagInFrame(ex_dividend_date, 1) OVER (PARTITION BY ticker ORDER BY ex_dividend_date ASC\n                                       ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_ex_date\n    FROM quarterly\n),\nraises AS (\n    SELECT ticker,\n           formatDateTimeInJodaSyntax(declared, 'MMM') AS month_label,\n           toMonth(declared) AS month_index\n    FROM stepped\n    WHERE prior_amount > 0\n      AND amount > prior_amount * 1.005\n      AND dateDiff('day', prior_ex_date, ex_dividend_date) BETWEEN 45 AND 200\n),\nper_month AS (\n    SELECT ticker,\n           month_label,\n           month_index,\n           count() AS raises_in_month\n    FROM raises\n    GROUP BY ticker, month_label, month_index\n)\nSELECT ticker,\n       argMax(month_label, raises_in_month * 100 + month_index) AS typical_month,\n       sum(raises_in_month) AS raises_total,\n       max(raises_in_month) AS raises_in_typical_month,\n       round(100 * max(raises_in_month) / sum(raises_in_month)) AS same_month_pct\nFROM per_month\nGROUP BY ticker\nHAVING sum(raises_in_month) >= 5\nORDER BY same_month_pct DESC, raises_total DESC","computed_at":"2026-08-03T10:13:59.883725+00:00","elapsed":0.004698772}