STRASMORE/EXPLORE 2,358 QUERIES

gap_buckets

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-18, from upcoming-dividend-payment-dates.

as of ranking 6×4read in context →
gap_buckets — 6 rows by 4 columns, computed from US exchange, SIP and OPRA data.
gap_bucketpayoutsshare_pctcumulative_pct
0-7 days3239459.759.7
8-14 days837215.475.2
15-21 days819615.190.3
22-30 days25004.694.9
31-45 days17973.398.2
46+ days9731.8100
Rows × columns
6 × 4
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 gap_buckets, derived from the stored result.
ColumnTypeRangeNotes
gap_bucket text 6 distinct values (0-7 days, 15-21 days, 22-30 days…)
payouts number 973 to 32,394
share_pct number 1.8 to 59.7 percent
cumulative_pct number 59.7 to 100 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
    gap_bucket,
    payouts,
    round(100 * payouts / sum(payouts) OVER (), 1)                                        AS share_pct,
    round(100 * sum(payouts) OVER (ORDER BY bucket_order) / sum(payouts) OVER (), 1)      AS cumulative_pct
FROM
(
    SELECT
        multiIf(gap_days <= 7,  '0-7 days',
                gap_days <= 14, '8-14 days',
                gap_days <= 21, '15-21 days',
                gap_days <= 30, '22-30 days',
                gap_days <= 45, '31-45 days',
                                '46+ days')                  AS gap_bucket,
        multiIf(gap_days <= 7, 1, gap_days <= 14, 2, gap_days <= 21, 3,
                gap_days <= 30, 4, gap_days <= 45, 5, 6)     AS bucket_order,
        count()                                              AS payouts
    FROM
    (
        SELECT dateDiff('day', ex_dividend_date, pay_date) AS gap_days
        FROM global_markets.stocks_dividends
        WHERE ex_dividend_date >= today() - 365
          AND ex_dividend_date <  today()
          AND pay_date > ex_dividend_date
          AND cash_amount > 0
        GROUP BY ticker, ex_dividend_date, pay_date
    )
    GROUP BY gap_bucket, bucket_order
)
ORDER BY bucket_order

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 analysisupcoming-dividend-payment-dates
pay_calendar table 30×8 pay_days series 12×4 sector_gap table 7×5 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 See all 2,358 queries →