declaration_quarter
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-25, from xom-dividend-increase-history.
| declaration_quarter | raises_declared | first_year | latest_year |
|---|---|---|---|
| Q2 (Apr to Jun) | 7 | 2013 | 2019 |
| Q4 (Oct to Dec) | 5 | 2021 | 2025 |
- Rows × columns
- 2 × 4
- 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 |
|---|---|---|---|
declaration_quarter |
text | 2 distinct values (Q2 (Apr to Jun), Q4 (Oct to Dec)) | |
raises_declared |
number | 5 to 7 | |
first_year |
text | 2 distinct values (2013, 2021) | |
latest_year |
text | 2 distinct values (2019, 2025) |
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.
WITH quarterly AS
(
SELECT
ex_dividend_date AS ex_date,
toFloat64(max(cash_amount)) AS rate,
max(declaration_date) AS declared
FROM global_markets.stocks_dividends
WHERE ticker = 'XOM'
AND frequency = 4
AND ex_dividend_date >= '2005-01-01'
AND ex_dividend_date <= today()
GROUP BY ex_dividend_date
),
stepped AS
(
SELECT
ex_date,
declared,
rate,
lagInFrame(rate) OVER (ORDER BY ex_date ASC
ROWS BETWEEN 1 PRECEDING AND 1 PRECEDING) AS prev_rate
FROM quarterly
),
raises AS
(
SELECT declared
FROM stepped
WHERE ex_date >= '2006-01-01'
AND prev_rate > 0
AND rate > prev_rate
AND toYear(declared) > 1990
)
SELECT
multiIf(toQuarter(declared) = 1, 'Q1 (Jan to Mar)',
toQuarter(declared) = 2, 'Q2 (Apr to Jun)',
toQuarter(declared) = 3, 'Q3 (Jul to Sep)',
'Q4 (Oct to Dec)') AS declaration_quarter,
count() AS raises_declared,
toString(min(toYear(declared))) AS first_year,
toString(max(toYear(declared))) AS latest_year
FROM raises
GROUP BY declaration_quarter
ORDER BY raises_declared DESC, latest_year DESC
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.