STRASMORE/EXPLORE 2,595 QUERIES

drawdown_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-25, from msft-decline-from-peak.

as of ranking 5×4read in context →
drawdown_buckets — 5 rows by 4 columns, computed from US exchange, SIP and OPRA data.
drawdown_bucketsessionsshare_pctat_least_this_deep_pct
當日收在新高30410.3100
距高點 0 至 5%125342.589.7
距高點 5 至 10%57419.547.2
距高點 10 至 20%48116.327.8
距高點 20% 以上33811.511.5
Rows × columns
5 × 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 drawdown_buckets, derived from the stored result.
ColumnTypeRangeNotes
drawdown_bucket text 5 distinct values (當日收在新高, 距高點 0 至 5%, 距高點 10 至 20%…)
sessions number 304 to 1,253
share_pct number 10.3 to 42.5 percent
at_least_this_deep_pct number 11.5 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.

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 daily AS
(
    SELECT
        date,
        toFloat64(max(close)) AS close
    FROM global_markets.stocks_daily_aggs
    WHERE ticker = 'MSFT'
      AND date >= '2015-01-01'
    GROUP BY date
),
marked AS
(
    SELECT
        date,
        close,
        max(close) OVER (ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS peak_close
    FROM daily
),
tagged AS
(
    SELECT
        multiIf(close >= peak_close, 1,
                close / peak_close >= 0.95, 2,
                close / peak_close >= 0.90, 3,
                close / peak_close >= 0.80, 4,
                5) AS ord,
        multiIf(close >= peak_close, '當日收在新高',
                close / peak_close >= 0.95, '距高點 0 至 5%',
                close / peak_close >= 0.90, '距高點 5 至 10%',
                close / peak_close >= 0.80, '距高點 10 至 20%',
                '距高點 20% 以上') AS bucket
    FROM marked
),
counts AS
(
    SELECT
        ord,
        any(bucket) AS bucket_label,
        count()     AS sessions
    FROM tagged
    GROUP BY ord
),
totals AS
(
    SELECT sum(sessions) AS total FROM counts
)
SELECT
    c.bucket_label                         AS drawdown_bucket,
    toUInt32(c.sessions)                   AS sessions,
    round(c.sessions * 100.0 / t.total, 1) AS share_pct,
    round(sum(c.sessions) OVER (ORDER BY c.ord DESC ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
          * 100.0 / t.total, 1)            AS at_least_this_deep_pct
FROM counts AS c
CROSS JOIN totals AS t
ORDER BY c.ord
⌘/Ctrl + Enter

Work with this data in your AI assistant

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