{"slug":"dividend-increases-and-cuts","qid":"size_bands","label":"Increases, cuts and the typical raise this calendar year, by company size (bands use today's market value)","post_title":"Dividend Increases & Cuts This Week","post_url":"/blog/dividend-increases-and-cuts#q-size_bands","columns":["size_band","declarations","increases","cuts","cut_share_pct","median_raise_pct"],"rows":[{"size_band":"Mega cap ($100B and up)","declarations":253,"increases":60,"cuts":1,"cut_share_pct":0.4,"median_raise_pct":7.6},{"size_band":"Large cap ($10B to $100B)","declarations":1213,"increases":280,"cuts":4,"cut_share_pct":0.3,"median_raise_pct":7},{"size_band":"Mid cap ($2B to $10B)","declarations":1288,"increases":237,"cuts":12,"cut_share_pct":0.9,"median_raise_pct":6.7},{"size_band":"Small cap (under $2B)","declarations":1565,"increases":244,"cuts":59,"cut_share_pct":3.8,"median_raise_pct":9.1}],"shape":"table","sql":"WITH universe AS (\n    SELECT ticker, argMax(market_cap, date) AS mcap\n    FROM global_markets.stocks_ratios\n    WHERE date >= today() - 10 AND market_cap > 0\n    GROUP BY ticker\n),\nregular AS (\n    SELECT ticker,\n           ex_dividend_date,\n           max(declaration_date) AS declared_on,\n           argMax(cash_amount, declaration_date) AS amt,\n           argMax(frequency, declaration_date) AS freq\n    FROM global_markets.stocks_dividends\n    WHERE distribution_type = 'recurring'\n      AND cash_amount > 0\n      AND currency = 'USD'\n      AND frequency IN (1, 2, 4, 12)\n      AND ex_dividend_date >= today() - 1200\n      AND ticker NOT IN ('SPCX')\n    GROUP BY ticker, ex_dividend_date\n),\nseq AS (\n    SELECT ticker, ex_dividend_date, declared_on, amt, freq,\n           lagInFrame(amt) OVER w AS prev_amt,\n           lagInFrame(freq) OVER w AS prev_freq,\n           lagInFrame(ex_dividend_date) OVER w AS prev_ex\n    FROM regular\n    WINDOW w AS (PARTITION BY ticker ORDER BY ex_dividend_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)\n),\nsplits AS (\n    SELECT ticker, groupArray(execution_date) AS split_dates\n    FROM global_markets.stocks_splits\n    WHERE execution_date >= today() - 1300\n    GROUP BY ticker\n),\nchanges AS (\n    SELECT s.ticker AS ticker,\n           s.declared_on AS declared_on,\n           s.amt / s.prev_amt - 1 AS chg,\n           u.mcap AS mcap\n    FROM seq s\n    INNER JOIN universe u ON u.ticker = s.ticker\n    LEFT JOIN splits sp ON sp.ticker = s.ticker\n    WHERE s.declared_on >= toStartOfYear(today())\n      AND s.declared_on <= today()\n      AND s.prev_amt > 0\n      AND s.freq = s.prev_freq\n      AND arrayCount(x -> x > s.prev_ex, sp.split_dates) = 0\n      AND dateDiff('day', s.prev_ex, s.ex_dividend_date) BETWEEN intDiv(240, s.freq) AND intDiv(520, s.freq)\n)\nSELECT multiIf(mcap >= 1e11, 'Mega cap ($100B and up)',\n               mcap >= 1e10, 'Large cap ($10B to $100B)',\n               mcap >= 2e9,  'Mid cap ($2B to $10B)',\n                             'Small cap (under $2B)') AS size_band,\n       count() AS declarations,\n       countIf(chg > 0.001) AS increases,\n       countIf(chg < -0.005) AS cuts,\n       round(100 * countIf(chg < -0.005) / count(), 1) AS cut_share_pct,\n       round(100 * quantileDeterministicIf(0.5)(chg, cityHash64(ticker, declared_on), chg > 0.001), 1) AS median_raise_pct\nFROM changes\nGROUP BY size_band\nHAVING countIf(chg > 0.001) > 0\nORDER BY max(mcap) DESC","computed_at":"2026-08-25T13:16:29.728247+00:00","elapsed":1.57277689}