STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

When Companies Announce Dividend Raises
Share of annual raises declared in the same month as the prior raise, by yearranking · 2026-08-03 · 10×4Preview: 10 ranked values, smallest first. Dividend raises by declaration month: US recurring quarterly payers, July 2015 to July 2026ranking · 2026-08-03 · 12×3Preview: 12 ranked values, largest first. JNJ dividend raises: declaration date, old rate, new rate, 2016 to 2026table · 2026-08-03 · 11×5 Typical raise month by company: twelve dividend growers, raises since 2016series · 2026-08-03 · 12×5Preview: a 12-point series, ending lower. Declaration record by year: recurring dividends, count, and days from declaration to ex-datetable · 2026-08-03 · 11×5
Share of annual raises declared in the same month as the prior raise, by year

Share of annual raises declared in the same month as the prior raise, by year

most recentas of ranking 10×4read in context →
Share of annual raises declared in the same month as the prior raise, by year — 10 rows by 4 columns, computed from US exchange, SIP and OPRA data.
yearcompaniessame_month_pctwithin_one_month_pct
2017110468.673.4
2018115964.778.2
2019139964.774
2020136864.374.5
2021127864.478.7
2022134360.977.3
2023157666.982.4
202416496281.9
2025198056.980.7
2026115474.582.8
the exact SQL behind every number
WITH quarterly AS (
    SELECT ticker,
           ex_dividend_date,
           round(max(toFloat64(cash_amount)), 4) AS amount,
           max(declaration_date) AS declared
    FROM global_markets.stocks_dividends
    WHERE distribution_type = 'recurring'
      AND frequency = 4
      AND cash_amount > 0
      AND declaration_date > toDate('2015-06-30')
      AND ex_dividend_date >= toDate('2015-07-01')
      AND ex_dividend_date <= toDate('2026-07-31')
    GROUP BY ticker, ex_dividend_date
),
stepped AS (
    SELECT ticker,
           declared,
           amount,
           ex_dividend_date,
           lagInFrame(amount, 1) OVER (PARTITION BY ticker ORDER BY ex_dividend_date ASC
                                       ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_amount,
           lagInFrame(ex_dividend_date, 1) OVER (PARTITION BY ticker ORDER BY ex_dividend_date ASC
                                       ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_ex_date
    FROM quarterly
),
raises AS (
    SELECT ticker, declared
    FROM stepped
    WHERE prior_amount > 0
      AND amount > prior_amount * 1.005
      AND dateDiff('day', prior_ex_date, ex_dividend_date) BETWEEN 45 AND 200
),
chained AS (
    SELECT ticker,
           declared,
           lagInFrame(declared, 1) OVER (PARTITION BY ticker ORDER BY declared ASC
                                         ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prior_declared
    FROM raises
)
SELECT toYear(declared) AS year,
       uniqExact(ticker) AS companies,
       round(100 * countIf(toMonth(declared) = toMonth(prior_declared)) / count(), 1) AS same_month_pct,
       round(100 * countIf(abs(toInt32(toRelativeMonthNum(declared))
                               - toInt32(toRelativeMonthNum(prior_declared)) - 12) <= 1) / count(), 1) AS within_one_month_pct
FROM chained
WHERE declared >= toDate('2017-01-01')
  AND dateDiff('day', prior_declared, declared) BETWEEN 250 AND 480
GROUP BY year
ORDER BY year
$