raises
Answered against 22 years of US equities and 12 years of US options data and published with the query that produced it. This result is stored as of 2026-09-12, from mo-dividend-increase-history.
| ex_dividend_date | announced | first_ex | step | prior_quarterly | new_quarterly | raise_pct |
|---|---|---|---|---|---|---|
| 2008-09-11 | n/a | Sep 11, 2008 | $0.28 to $0.32 | 0.29 | 0.32 | 10.3 |
| 2009-09-11 | n/a | Sep 11, 2009 | $0.32 to $0.34 | 0.32 | 0.34 | 6.3 |
| 2010-03-11 | n/a | Mar 11, 2010 | $0.34 to $0.35 | 0.34 | 0.35 | 2.9 |
| 2010-09-13 | n/a | Sep 13, 2010 | $0.35 to $0.38 | 0.35 | 0.38 | 8.6 |
| 2011-09-13 | n/a | Sep 13, 2011 | $0.38 to $0.41 | 0.38 | 0.41 | 7.9 |
| 2012-09-12 | n/a | Sep 12, 2012 | $0.41 to $0.44 | 0.41 | 0.44 | 7.3 |
| 2013-09-12 | Aug 23, 2013 | Sep 12, 2013 | $0.44 to $0.48 | 0.44 | 0.48 | 9.1 |
| 2014-09-11 | Aug 21, 2014 | Sep 11, 2014 | $0.48 to $0.52 | 0.48 | 0.52 | 8.3 |
| 2015-09-11 | n/a | Sep 11, 2015 | $0.52 to $0.565 | 0.52 | 0.565 | 8.7 |
| 2016-09-13 | Aug 25, 2016 | Sep 13, 2016 | $0.565 to $0.61 | 0.565 | 0.61 | 8 |
| 2017-09-14 | Aug 24, 2017 | Sep 14, 2017 | $0.61 to $0.66 | 0.61 | 0.66 | 8.2 |
| 2018-03-14 | Mar 1, 2018 | Mar 14, 2018 | $0.66 to $0.7 | 0.66 | 0.7 | 6.1 |
| 2018-09-13 | Aug 23, 2018 | Sep 13, 2018 | $0.7 to $0.8 | 0.7 | 0.8 | 14.3 |
| 2019-09-13 | Aug 22, 2019 | Sep 13, 2019 | $0.8 to $0.84 | 0.8 | 0.84 | 5 |
| 2020-09-14 | Jul 28, 2020 | Sep 14, 2020 | $0.84 to $0.86 | 0.84 | 0.86 | 2.4 |
| 2021-09-14 | Aug 26, 2021 | Sep 14, 2021 | $0.86 to $0.9 | 0.86 | 0.9 | 4.7 |
| 2022-09-14 | Aug 25, 2022 | Sep 14, 2022 | $0.9 to $0.94 | 0.9 | 0.94 | 4.4 |
| 2023-09-14 | Aug 24, 2023 | Sep 14, 2023 | $0.94 to $0.98 | 0.94 | 0.98 | 4.3 |
| 2024-09-16 | Aug 22, 2024 | Sep 16, 2024 | $0.98 to $1.02 | 0.98 | 1.02 | 4.1 |
| 2025-09-15 | Aug 21, 2025 | Sep 15, 2025 | $1.02 to $1.06 | 1.02 | 1.06 | 3.9 |
| 2026-09-15 | Aug 27, 2026 | Sep 15, 2026 | $1.06 to $1.11 | 1.06 | 1.11 | 4.7 |
- Rows × columns
- 21 × 7
- Period covered
- to
- Computed
- Completeness
- No missing values
- Source
- US exchange, SIP and OPRA market data
- Licence
- Strasmore terms · free, no signup
What each column holds
| Column | Type | Range | Notes |
|---|---|---|---|
ex_dividend_date |
date | 2008-09-11 to 2026-09-15 | |
announced |
text | 15 distinct values (Aug 21, 2014, Aug 21, 2025, Aug 22, 2019…) | |
first_ex |
text | 21 distinct values (Mar 11, 2010, Mar 14, 2018, Sep 11, 2008…) | |
step |
text | 21 distinct values | |
prior_quarterly |
number | 0.29 to 1.06 | |
new_quarterly |
number | 0.32 to 1.11 | |
raise_pct |
number | 2.4 to 14.3 | percent |
Computed from Strasmore's warehouse of US exchange, SIP and OPRA market data. Equity prices are delayed; options greeks and implied volatility are end-of-day. This result is stored, not recomputed on load — it is exactly the numbers that were returned on , and the query below is what returned them.
the exact SQL behind every number
WITH paid AS
(
SELECT
ex_dividend_date AS ex_date,
max(declaration_date) AS declared,
max(cash_amount) AS amount
FROM global_markets.stocks_dividends
WHERE ticker = 'MO'
AND ex_dividend_date >= toDate('2008-04-01')
GROUP BY ex_dividend_date
),
labelled AS
(
SELECT
ex_date,
declared,
amount,
if(toInt64(amount * 1000) % 10 = 0,
toString(toDecimal64(toFloat64(amount), 2)),
toString(toDecimal64(toFloat64(amount), 3))) AS amount_label
FROM paid
),
steps AS
(
SELECT
ex_date,
declared,
amount,
amount_label,
lagInFrame(amount) OVER (ORDER BY ex_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prior,
lagInFrame(amount_label) OVER (ORDER BY ex_date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prior_label
FROM labelled
)
SELECT
toString(ex_date) AS ex_dividend_date,
if(declared > toDate('2000-01-01'),
concat(formatDateTime(declared, '%b'), ' ', toString(toDayOfMonth(declared)), ', ', toString(toYear(declared))),
'n/a') AS announced,
concat(formatDateTime(ex_date, '%b'), ' ', toString(toDayOfMonth(ex_date)), ', ', toString(toYear(ex_date))) AS first_ex,
concat('$', prior_label, ' to $', amount_label) AS step,
round(toFloat64(prior), 3) AS prior_quarterly,
round(toFloat64(amount), 3) AS new_quarterly,
round(100 * (toFloat64(amount) - toFloat64(prior)) / toFloat64(prior), 1) AS raise_pct
FROM steps
WHERE prior > 0
AND amount > prior
ORDER BY ex_date
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysismo-dividend-increase-history
spinoff_resets
series 16×3
→
payment_calendar
series 4×6
→
cadence
series 2×5
→
fcf_coverage
table 6×5
→
One SPY $600 LEAPS call's price over two years (expired Jan 16 2026)
series 470×2
→
2s10s spread, monthly average: last 20 years
series 240×2
→
See all 2,214 queries →