ex_open_basket
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-17, from do-you-get-the-dividend-if-you-buy-on-the-ex-date.
| label | ex_date_count | avg_dividend_pct_of_price | avg_close_to_open_pct |
|---|---|---|---|
| All 20 combined | 182 | 0.71 | -0.55 |
| PFE | 9 | 1.65 | -1.48 |
| VZ | 9 | 1.62 | -1.46 |
| CVX | 9 | 1.04 | -0.85 |
| PEP | 10 | 0.93 | -0.93 |
| ABBV | 9 | 0.83 | -0.72 |
| XOM | 9 | 0.8 | -0.62 |
| MRK | 9 | 0.8 | -0.6 |
| KO | 9 | 0.71 | -0.85 |
| IBM | 9 | 0.69 | -0.58 |
| TXN | 9 | 0.68 | -0.5 |
| JNJ | 9 | 0.68 | -0.61 |
| PG | 9 | 0.66 | 0.46 |
| HD | 9 | 0.64 | -0.17 |
| CSCO | 9 | 0.62 | -1.03 |
| MCD | 10 | 0.61 | -0.67 |
| JPM | 9 | 0.52 | -0.54 |
| WMT | 9 | 0.23 | -0.35 |
| MSFT | 9 | 0.19 | 0.33 |
| LLY | 9 | 0.17 | -0.15 |
| AAPL | 9 | 0.11 | 0.43 |
- Rows × columns
- 21 × 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 |
|---|---|---|---|
label |
text | 21 distinct values (AAPL, ABBV, All 20 combined…) | |
ex_date_count |
number | 9 to 182 | count |
avg_dividend_pct_of_price |
number | 0.11 to 1.65 | percent |
avg_close_to_open_pct |
number | -1.48 to 0.46 | 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.
the exact SQL behind every number
SELECT
arrayJoin([toString(d.sym), 'All 20 combined']) AS label,
count() AS ex_date_count,
round(avg(100 * toFloat64(d.cash) / toFloat64(px.prior_close)), 2) AS avg_dividend_pct_of_price,
round(avg(100 * (toFloat64(px.ex_open) / toFloat64(px.prior_close) - 1)), 2) AS avg_close_to_open_pct
FROM
(
SELECT
any(ticker) AS sym,
any(ex_dividend_date) AS ex_dt,
any(cash_amount) AS cash
FROM global_markets.stocks_dividends
WHERE ticker IN ('AAPL', 'MSFT', 'KO', 'JNJ', 'PG', 'PEP', 'JPM', 'XOM', 'CVX', 'HD',
'MCD', 'WMT', 'IBM', 'CSCO', 'VZ', 'MRK', 'PFE', 'ABBV', 'TXN', 'LLY')
AND ex_dividend_date >= '2024-06-01'
AND ex_dividend_date < today() - 3
GROUP BY id
) AS d
INNER JOIN
(
SELECT
sym,
sess,
ex_open,
lagInFrame(close_px, 1) OVER (PARTITION BY sym ORDER BY sess ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prior_close
FROM
(
SELECT
ticker AS sym,
date AS sess,
any(open) AS ex_open,
any(close) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker IN ('AAPL', 'MSFT', 'KO', 'JNJ', 'PG', 'PEP', 'JPM', 'XOM', 'CVX', 'HD',
'MCD', 'WMT', 'IBM', 'CSCO', 'VZ', 'MRK', 'PFE', 'ABBV', 'TXN', 'LLY')
AND date >= '2024-05-01'
AND date < today()
GROUP BY sym, sess
)
) AS px ON px.sym = d.sym AND px.sess = d.ex_dt
WHERE px.prior_close > 0
AND px.ex_open > 0
GROUP BY label
ORDER BY (label = 'All 20 combined') DESC, avg_dividend_pct_of_price DESC
Run your own version of this
The same 22 years of US equities and 12 years of options data are queryable in SQL or plain English. A free account runs 100 queries a day and takes no card.
More from this analysisdo-you-get-the-dividend-if-you-buy-on-the-ex-date
gap_by_month
series 40×5
→
aapl_dividends
series 8×12
→
Top 25 weekly-options underlyings by distinct contracts traded, with expiration weekdays
ranking 25×4
→
Annualized volatility vs total return, 25 large caps, calmest to wildest (~2 years)
ranking 25×3
→
SPY options median spread by expiration date, near-the-money strikes only
ranking 25×4
→
Share of prints with a placeholder participant timestamp, one March session per year (IBM and MSFT)
ranking 24×4
→
See all 2,309 queries →