yield_trace
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.
| ex_date | ex_label | quarterly_dividend | indicated_annual_dividend | close_on_ex_date | indicated_yield_pct |
|---|---|---|---|---|---|
| 2024-02-14 | Feb 14, 2024 | 0.75 | 3 | $409.49 | 0.73 |
| 2024-05-15 | May 15, 2024 | 0.75 | 3 | $423.08 | 0.71 |
| 2024-08-15 | Aug 15, 2024 | 0.75 | 3 | $421.03 | 0.71 |
| 2024-11-21 | Nov 21, 2024 | 0.83 | 3.32 | $412.87 | 0.8 |
| 2025-02-20 | Feb 20, 2025 | 0.83 | 3.32 | $416.13 | 0.8 |
| 2025-05-15 | May 15, 2025 | 0.83 | 3.32 | $453.13 | 0.73 |
| 2025-08-21 | Aug 21, 2025 | 0.83 | 3.32 | $504.24 | 0.66 |
| 2025-11-20 | Nov 20, 2025 | 0.91 | 3.64 | $478.43 | 0.76 |
| 2026-02-19 | Feb 19, 2026 | 0.91 | 3.64 | $398.46 | 0.91 |
| 2026-05-21 | May 21, 2026 | 0.91 | 3.64 | $419.09 | 0.87 |
| 2026-08-20 | Aug 20, 2026 | 0.91 | 3.64 | $481.15 | 0.76 |
- Rows × columns
- 11 × 6
- Period covered
- to
- 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 |
|---|---|---|---|
ex_date |
date | 2024-02-14 to 2026-08-20 | |
ex_label |
text | 11 distinct values (Aug 15, 2024, Aug 20, 2026, Aug 21, 2025…) | |
quarterly_dividend |
number | 0.75 to 0.91 | |
indicated_annual_dividend |
number | 3 to 3.64 | |
close_on_ex_date |
text | 11 distinct values ($398.46, $409.49, $412.87…) | |
indicated_yield_pct |
number | 0.66 to 0.91 | 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.
SELECT
toString(d.ex_day) AS ex_date,
concat(formatDateTime(d.ex_day, '%b'), ' ',
toString(toDayOfMonth(d.ex_day)), ', ',
toString(toYear(d.ex_day))) AS ex_label,
round(toFloat64(d.dividend), 2) AS quarterly_dividend,
round(toFloat64(d.dividend) * 4, 2) AS indicated_annual_dividend,
concat('$', toString(round(toFloat64(p.close), 2))) AS close_on_ex_date,
round(toFloat64(d.dividend) * 4 / toFloat64(p.close) * 100, 2) AS indicated_yield_pct
FROM
(
SELECT
ex_dividend_date AS ex_day,
any(cash_amount) AS dividend
FROM global_markets.stocks_dividends
WHERE ticker = 'MSFT'
AND ex_dividend_date >= toDate('2024-01-01')
AND ex_dividend_date <= today()
GROUP BY ex_dividend_date
) AS d
INNER JOIN
(
SELECT
toDate(date) AS day,
any(close) AS close
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'MSFT'
AND date >= toDate('2024-01-01')
AND date <= today()
GROUP BY day
) AS p ON p.day = d.ex_day
ORDER BY d.ex_day