ex_calendar
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 ex-dividend-date-premarket-and-open-orders.
| ticker | ex_date_label | dividend_usd | reduction_pct |
|---|---|---|---|
| JPM | Oct 6 | 1.65 | 0.485 |
| CSCO | Oct 2 | 0.42 | 0.392 |
| MSFT | Nov 19 | 0.98 | 0.197 |
- Rows × columns
- 3 × 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 |
|---|---|---|---|
ticker |
text | 3 distinct values (CSCO, JPM, MSFT) | |
ex_date_label |
text | 3 distinct values (Nov 19, Oct 2, Oct 6) | |
dividend_usd |
number | 0.42 to 1.65 | US dollars |
reduction_pct |
number | 0.197 to 0.485 | 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.
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
upcoming AS
(
SELECT
ticker,
min(ex_dividend_date) AS ex_date,
argMin(cash_amount, ex_dividend_date) AS dividend_usd
FROM global_markets.stocks_dividends
WHERE ticker IN ('AAPL', 'MSFT', 'KO', 'JNJ', 'PG', 'XOM', 'CVX', 'HD', 'JPM', 'PEP', 'CSCO', 'MRK')
AND cash_amount > 0
AND ex_dividend_date >= today()
AND ex_dividend_date <= today() + 120
GROUP BY ticker
),
last_price AS
(
SELECT
ticker,
argMax(close, date) AS px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'KO', 'JNJ', 'PG', 'XOM', 'CVX', 'HD', 'JPM', 'PEP', 'CSCO', 'MRK')
AND date >= today() - 30
GROUP BY ticker
)
SELECT
u.ticker AS ticker,
formatDateTime(u.ex_date, '%b %e') AS ex_date_label,
round(toFloat64(u.dividend_usd), 2) AS dividend_usd,
round(100 * toFloat64(u.dividend_usd) / toFloat64(p.px), 3) AS reduction_pct
FROM upcoming AS u
INNER JOIN last_price AS p ON p.ticker = u.ticker
ORDER BY reduction_pct DESC
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.