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.
| drawdown_bucket | sessions | share_pct | at_least_this_deep_pct |
|---|---|---|---|
| 當日收在新高 | 304 | 10.3 | 100 |
| 距高點 0 至 5% | 1253 | 42.5 | 89.7 |
| 距高點 5 至 10% | 574 | 19.5 | 47.2 |
| 距高點 10 至 20% | 481 | 16.3 | 27.8 |
| 距高點 20% 以上 | 338 | 11.5 | 11.5 |
- Rows × columns
- 5 × 4
- 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 |
|---|---|---|---|
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
Work with this data in your AI assistant
Opens ready to query, with this page's data. Free, no account.