STRASMORE/EXPLORE 3,256 QUERIES

Dividend cuts declared in the last 90 days, the deepest 14 first (one week is too thin for a table)

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-08, from Dividend Increases & Cuts This Week.

as of series 14×6read in context →
Dividend cuts declared in the last 90 days, the deepest 14 first (one week is too thin for a table) — 14 rows by 6 columns, computed from US exchange, SIP and OPRA data.
tickerprior_usdnew_usdpct_changedeclared_dateex_date
NXDT0.150.03-802026-07-272026-09-15
MSB0.240.05-79.22026-07-152026-07-30
MCHB0.70.25-64.32026-08-192026-08-28
CRWS0.080.03-62.52026-08-102026-09-11
PBT0.04360.0187-57.12026-08-212026-08-31
CAG0.350.175-502026-07-152026-07-30
WEN0.140.07-502026-08-072026-09-01
SBR0.61940.3317-46.52026-09-042026-09-15
MNR0.640.36-43.82026-08-062026-08-17
CPB0.390.25-35.92026-09-032026-10-01
KMDA0.250.17-322026-08-172026-08-27
CHCT0.480.33-31.22026-08-042026-08-19
SCM0.11330.0833-26.52026-07-162026-07-31
AG0.01710.0152-11.12026-07-292026-08-14
Rows × columns
14 × 6
Period covered
to
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 Dividend cuts declared in the last 90 days, the deepest 14 first (one week is too thin for a table), derived from the stored result.
ColumnTypeRangeNotes
ticker text 14 distinct values (AG, CAG, CHCT…)
prior_usd number 0.0171 to 0.7 US dollars
new_usd number 0.0152 to 0.36 US dollars
pct_change number -80 to -11.1 percent
declared_date date 2026-07-15 to 2026-09-04
ex_date date 2026-07-30 to 2026-10-01

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 universe AS (
    SELECT ticker, argMax(market_cap, date) AS mcap
    FROM global_markets.stocks_ratios
    WHERE date >= today() - 10 AND market_cap > 0
    GROUP BY ticker
),
regular AS (
    SELECT ticker,
           ex_dividend_date,
           max(declaration_date) AS declared_on,
           argMax(cash_amount, declaration_date) AS amt,
           argMax(frequency, declaration_date) AS freq
    FROM global_markets.stocks_dividends
    WHERE distribution_type = 'recurring'
      AND cash_amount > 0
      AND currency = 'USD'
      AND frequency IN (1, 2, 4, 12)
      AND ex_dividend_date >= today() - 800
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, ex_dividend_date
),
seq AS (
    SELECT ticker, ex_dividend_date, declared_on, amt, freq,
           lagInFrame(amt) OVER w AS prev_amt,
           lagInFrame(freq) OVER w AS prev_freq,
           lagInFrame(ex_dividend_date) OVER w AS prev_ex
    FROM regular
    WINDOW w AS (PARTITION BY ticker ORDER BY ex_dividend_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW)
),
splits AS (
    SELECT ticker, groupArray(execution_date) AS split_dates
    FROM global_markets.stocks_splits
    WHERE execution_date >= today() - 900
    GROUP BY ticker
)
SELECT s.ticker AS ticker,
       round(s.prev_amt, 4) AS prior_usd,
       round(s.amt, 4) AS new_usd,
       round(100 * (s.amt / s.prev_amt - 1), 1) AS pct_change,
       toString(s.declared_on) AS declared_date,
       toString(s.ex_dividend_date) AS ex_date
FROM seq s
INNER JOIN universe u ON u.ticker = s.ticker
LEFT JOIN splits sp ON sp.ticker = s.ticker
WHERE s.declared_on > today() - 91
  AND s.declared_on <= today()
  AND s.prev_amt > 0
  AND s.freq = s.prev_freq
  AND arrayCount(x -> x > s.prev_ex, sp.split_dates) = 0
  AND dateDiff('day', s.prev_ex, s.ex_dividend_date) BETWEEN intDiv(240, s.freq) AND intDiv(520, s.freq)
  AND s.amt < s.prev_amt * 0.995
ORDER BY pct_change ASC, ticker
LIMIT 14
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.

More from this analysisDividend Increases & Cuts This Week
Increases against cuts, by week of declaration (complete weeks only) series 26×4 → Payers across their own share split: the raw change against the split-adjusted change series 9×7 → Dividend increases declared in the last 7 days, largest companies first (capped at 12 rows) series 7×8 → Increases, cuts and the typical raise this calendar year, by company size (bands use today's market value) table 4×6 → Dividend cuts at major US companies, ranked by the size of the drop (last 6 years) ranking 14×4 → AT&T's annual dividend per share, before and after its 2022 reset ranking 8×2 → See all 3,256 queries →