STRASMORE/EXPLORE 2,170 QUERIES 22Y EQUITIES · 12Y OPTIONS

2,170 answered market questions

every one with its exact SQL, its result and the date it was computed · free, no signup

SPY Dividend Yield: Why It Trails the Index
Every SPY distribution over the last three years, against the share priceseries · 2026-08-22 · 12×5Preview: a 12-point series, ending lower. Days from ex-dividend date to pay date, last three yearsranking · 2026-08-22 · 3×4Preview: 3 ranked values, largest first. Trailing 12-month dividend yield: SPY against two open-end S&P 500 ETFsranking · 2026-08-22 · 3×3Preview: 3 ranked values, largest first. SPY by calendar year: price change against dividends collectedranking · 2026-08-22 · 7×3Preview: 7 ranked values, smallest first.
Every SPY distribution over the last three years, against the share price

Every SPY distribution over the last three years, against the share price

most recentas of series 12×5read in context →
Every SPY distribution over the last three years, against the share price — 12 rows by 5 columns, computed from US exchange, SIP and OPRA data.
ex_dateex_date_labelpay_date_labelcash_amountpct_of_price
2023-09-15Sep 15, 2023Oct 31, 20231.58320.357
2023-12-15Dec 15, 2023Jan 31, 20241.90610.406
2024-03-15Mar 15, 2024Apr 30, 20241.59490.313
2024-06-21Jun 21, 2024Jul 31, 20241.7590.323
2024-09-20Sep 20, 2024Oct 31, 20241.74550.307
2024-12-20Dec 20, 2024Jan 31, 20251.96550.333
2025-03-21Mar 21, 2025Apr 30, 20251.69550.301
2025-06-20Jun 20, 2025Jul 31, 20251.76110.296
2025-09-19Sep 19, 2025Oct 31, 20251.83110.276
2025-12-19Dec 19, 2025Jan 30, 20261.99340.293
2026-03-20Mar 20, 2026Apr 30, 20261.7970.277
2026-06-18Jun 18, 2026Jul 31, 20261.90350.255
the exact SQL behind every number
WITH
    divs AS
    (
        SELECT
            ex_dividend_date            AS ex_date,
            any(pay_date)               AS pay_date,
            max(toFloat64(cash_amount)) AS cash_amount
        FROM global_markets.stocks_dividends
        WHERE ticker = 'SPY'
          AND ex_dividend_date >= today() - 1095
          AND ex_dividend_date <  today()
        GROUP BY ex_dividend_date
    ),
    px AS
    (
        SELECT
            toDate(toTimeZone(window_start, 'America/New_York')) AS d,
            toFloat64(argMax(close, window_start))               AS close_px
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'SPY'
          AND window_start >= today() - 1105
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) >= 570
          AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60
               + toMinute(toTimeZone(window_start, 'America/New_York'))) <  960
        GROUP BY d
    )
SELECT
    toString(divs.ex_date)                         AS ex_date,
    formatDateTime(divs.ex_date, '%b %e, %Y')      AS ex_date_label,
    formatDateTime(divs.pay_date, '%b %e, %Y')     AS pay_date_label,
    round(divs.cash_amount, 4)                     AS cash_amount,
    round(divs.cash_amount / px.close_px * 100, 3) AS pct_of_price
FROM divs
INNER JOIN px ON px.d = divs.ex_date
ORDER BY ex_date
$