STRASMORE/EXPLORE 2,595 QUERIES

ex_date_gaps

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 us-dividend-frequency-for-russian-investors.

as of table 4×5read in context →
ex_date_gaps — 4 rows by 5 columns, computed from US exchange, SIP and OPRA data.
bucketinterval_countshare_pctmedian_gap_daysmedian_gap_label
шаг около месяца (до 45 дней)185936.62929 дней
квартальный шаг (46-120 дней)309060.89191 день
полугодовой шаг (121-250 дней)1272.5181181 день
годовой шаг (свыше 250 дней)40.1364364 дня
Rows × columns
4 × 5
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 ex_date_gaps, derived from the stored result.
ColumnTypeRangeNotes
bucket text 4 distinct values
interval_count number 4 to 3,090 count
share_pct number 0.1 to 60.8 percent
median_gap_days number 29 to 364
median_gap_label text 4 distinct values (181 день, 29 дней, 364 дня…)

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 liquid AS
(
    SELECT ticker
    FROM global_markets.stocks_daily_aggs
    WHERE date >= today() - 120
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker
    HAVING avg(volume) >= 1000000
       AND avg(close)  >= 5
),
ex_dates AS
(
    SELECT
        d.ticker AS ticker,
        arraySort(groupUniqArray(toUInt32(toDate(d.ex_dividend_date)))) AS day_numbers
    FROM global_markets.stocks_dividends AS d
    INNER JOIN liquid AS l ON l.ticker = d.ticker
    WHERE d.ex_dividend_date >= today() - 400
      AND d.ex_dividend_date <  today()
      AND d.cash_amount > 0
    GROUP BY d.ticker
),
gaps AS
(
    SELECT arrayJoin(arrayDifference(day_numbers)) AS gap_days
    FROM ex_dates
    WHERE length(day_numbers) >= 2
)
SELECT
    bucket,
    interval_count,
    share_pct,
    median_gap_days,
    concat(toString(median_gap_days), ' ',
           multiIf((median_gap_days % 10 = 1) AND (median_gap_days % 100 != 11), 'день',
                   ((median_gap_days % 10) IN (2, 3, 4)) AND ((median_gap_days % 100 < 12) OR (median_gap_days % 100 > 14)), 'дня',
                   'дней')) AS median_gap_label
FROM
(
    SELECT
        multiIf(g.gap_days <= 45,  'шаг около месяца (до 45 дней)',
                g.gap_days <= 120, 'квартальный шаг (46-120 дней)',
                g.gap_days <= 250, 'полугодовой шаг (121-250 дней)',
                                   'годовой шаг (свыше 250 дней)') AS bucket,
        count()                                     AS interval_count,
        round(100.0 * count() / any(t.total), 1)    AS share_pct,
        toUInt16(quantileExact(0.5)(g.gap_days))    AS median_gap_days
    FROM gaps AS g
    CROSS JOIN (SELECT count() AS total FROM gaps WHERE gap_days > 0) AS t
    WHERE g.gap_days > 0
    GROUP BY bucket
)
ORDER BY median_gap_days
⌘/Ctrl + Enter

Work with this data in your AI assistant

Opens ready to query, with this page's data. Free, no account.