STRASMORE/EXPLORE 2,433 QUERIES

raise_history

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-20, from msft-dividend-2026.

as of table 7×7read in context →
raise_history — 7 rows by 7 columns, computed from US exchange, SIP and OPRA data.
yearprior_quarterly_ratenew_quarterly_rateraise_pctdeclared_onfirst_ex_date_at_new_ratefirst_pay_date_at_new_rate
20200.510.569.8Sep 15, 2020Nov 18, 2020Dec 10, 2020
20210.560.6210.7Sep 14, 2021Nov 17, 2021Dec 9, 2021
20220.620.689.7Sep 20, 2022Nov 16, 2022Dec 8, 2022
20230.680.7510.3Sep 19, 2023Nov 15, 2023Dec 14, 2023
20240.750.8310.7Sep 16, 2024Nov 21, 2024Dec 12, 2024
20250.830.919.6Sep 15, 2025Nov 20, 2025Dec 11, 2025
20260.910.987.7Sep 14, 2026Nov 19, 2026Dec 10, 2026
Rows × columns
7 × 7
Computed
Completeness
No missing values
Source
US exchange, SIP and OPRA market data
Licence
Strasmore terms · free, no signup
Formats
JSON · CSV · the SQL below

What each column holds

Column definitions for raise_history, derived from the stored result.
ColumnTypeRangeNotes
year number 2,020 to 2,026
prior_quarterly_rate number 0.51 to 0.91 ratio or rate
new_quarterly_rate number 0.56 to 0.98 ratio or rate
raise_pct number 7.7 to 10.7 percent
declared_on text 7 distinct values (Sep 14, 2021, Sep 14, 2026, Sep 15, 2020…)
first_ex_date_at_new_rate text 7 distinct values (Nov 15, 2023, Nov 16, 2022, Nov 17, 2021…)
first_pay_date_at_new_rate text 7 distinct values (Dec 10, 2020, Dec 10, 2026, Dec 11, 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.

SELECT
    cur.year                                                                    AS year,
    round(toFloat64(prev.new_rate), 2)                                          AS prior_quarterly_rate,
    round(toFloat64(cur.new_rate), 2)                                           AS new_quarterly_rate,
    round((toFloat64(cur.new_rate) / toFloat64(prev.new_rate) - 1) * 100, 1)    AS raise_pct,
    concat(formatDateTime(cur.declared_day, '%b'), ' ',
           toString(toDayOfMonth(cur.declared_day)), ', ',
           toString(toYear(cur.declared_day)))                                  AS declared_on,
    concat(formatDateTime(cur.first_ex_day, '%b'), ' ',
           toString(toDayOfMonth(cur.first_ex_day)), ', ',
           toString(toYear(cur.first_ex_day)))                                  AS first_ex_date_at_new_rate,
    concat(formatDateTime(cur.first_pay_day, '%b'), ' ',
           toString(toDayOfMonth(cur.first_pay_day)), ', ',
           toString(toYear(cur.first_pay_day)))                                 AS first_pay_date_at_new_rate
FROM
(
    SELECT
        toYear(ex_dividend_date)                        AS year,
        max(cash_amount)                                AS new_rate,
        toDateOrNull(toString(any(declaration_date)))   AS declared_day,
        min(ex_dividend_date)                           AS first_ex_day,
        toDateOrNull(toString(any(pay_date)))           AS first_pay_day
    FROM global_markets.stocks_dividends
    WHERE ticker = 'MSFT'
      AND toMonth(ex_dividend_date) >= 10
      AND ex_dividend_date >= toDate('2019-10-01')
      AND ex_dividend_date <  toDate('2027-01-01')
    GROUP BY year
) AS cur
INNER JOIN
(
    SELECT
        toUInt16(toYear(ex_dividend_date) + 1)          AS next_year,
        max(cash_amount)                                AS new_rate
    FROM global_markets.stocks_dividends
    WHERE ticker = 'MSFT'
      AND toMonth(ex_dividend_date) >= 10
      AND ex_dividend_date >= toDate('2019-10-01')
      AND ex_dividend_date <  toDate('2027-01-01')
    GROUP BY next_year
) AS prev ON cur.year = prev.next_year
ORDER BY year
⌘/Ctrl + Enter
More from this analysismsft-dividend-2026
yield_trace series 11×6 record_2026 series 4×7 cy_vs_fy ranking 2×4 yield_now scalar 1×7 The 2s10s spread, every print of the half table 124×2 The 2s10s spread, every print of the half table 124×2 See all 2,433 queries →