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-10-01, from pep-dividend-history.
| year | raised_in | raise_pct | new_rate | consecutive_years |
|---|---|---|---|---|
| 2004 | Jun | 43.75 | 0.23 | 1 |
| 2005 | Jun | 13.04 | 0.26 | 2 |
| 2006 | Jun | 15.38 | 0.3 | 3 |
| 2007 | Jun | 25 | 0.375 | 4 |
| 2008 | Jun | 13.33 | 0.425 | 5 |
| 2009 | Jun | 5.88 | 0.45 | 6 |
| 2010 | Jun | 6.67 | 0.48 | 7 |
| 2011 | Jun | 7.29 | 0.515 | 8 |
| 2012 | May | 4.37 | 0.5375 | 9 |
| 2013 | Jun | 5.58 | 0.5675 | 10 |
| 2014 | Jun | 15.42 | 0.655 | 11 |
| 2015 | Jun | 7.25 | 0.7025 | 12 |
| 2016 | Jun | 7.12 | 0.7525 | 13 |
| 2017 | May | 6.98 | 0.805 | 14 |
| 2018 | May | 15.22 | 0.9275 | 15 |
| 2019 | Jun | 2.96 | 0.955 | 16 |
| 2020 | Jun | 7.07 | 1.0225 | 17 |
| 2021 | Jun | 5.13 | 1.075 | 18 |
| 2022 | Jun | 6.98 | 1.15 | 19 |
| 2023 | Jun | 10 | 1.265 | 20 |
| 2024 | Jun | 7.11 | 1.355 | 21 |
| 2025 | Jun | 4.98 | 1.4225 | 22 |
| 2026 | Jun | 4.04 | 1.48 | 23 |
- Rows × columns
- 23 × 5
- 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 |
|---|---|---|---|
year |
number | 2,004 to 2,026 | |
raised_in |
text | 2 distinct values (Jun, May) | |
raise_pct |
number | 2.96 to 43.75 | percent |
new_rate |
number | 0.23 to 1.48 | ratio or rate |
consecutive_years |
number | 1 to 23 |
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.
Run it yourself
This is the exact query behind the result above. Change a ticker, a date or a column and run it against the warehouse — no account, no key. The no-signup tier is smaller than the one this page was computed on; a query that reaches past it comes back saying which plan runs it.
SELECT
year,
raised_in,
raise_pct,
new_rate,
count() OVER (PARTITION BY streak_group ORDER BY year ASC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS consecutive_years
FROM
(
SELECT
year,
raised_in,
raise_pct,
new_rate,
year - row_number() OVER (ORDER BY year ASC) AS streak_group
FROM
(
SELECT
toYear(ex_date) AS year,
argMin(formatDateTime(ex_date, '%b'), ex_date) AS raised_in,
round(argMin(100 * (amt - prev_amt) / prev_amt, ex_date), 2) AS raise_pct,
round(argMin(amt, ex_date), 4) AS new_rate
FROM
(
SELECT
ex_date,
amt,
lagInFrame(amt) OVER (ORDER BY ex_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_amt
FROM
(
SELECT
ex_dividend_date AS ex_date,
max(toFloat64(cash_amount)) AS amt
FROM global_markets.stocks_dividends
WHERE ticker = 'PEP'
GROUP BY ex_dividend_date
)
)
WHERE prev_amt > 0 AND amt > prev_amt * 1.001
GROUP BY year
)
)
ORDER BY year
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.