halt_days
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 market-wide-circuit-breakers-explained.
| session_date | session_label | prior_close | level_1_line | session_low | open_drop_pct | low_drop_pct | close_drop_pct |
|---|---|---|---|---|---|---|---|
| 2020-03-09 | March 9 | 297.46 | 276.64 | 273.45 | 7.45 | 8.07 | 7.81 |
| 2020-03-12 | March 12 | 274.36 | 255.15 | 247.68 | 6.69 | 9.72 | 9.57 |
| 2020-03-16 | March 16 | 269.32 | 250.47 | 237.36 | 10.45 | 11.87 | 10.94 |
| 2020-03-18 | March 18 | 252.8 | 235.1 | 228.02 | 6.55 | 9.8 | 5.06 |
- Rows × columns
- 4 × 8
- Period covered
- to
- 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 |
|---|---|---|---|
session_date |
date | 2020-03-09 to 2020-03-18 | |
session_label |
text | 4 distinct values (March 12, March 16, March 18…) | |
prior_close |
number | 252.8 to 297.46 | US dollars |
level_1_line |
number | 235.1 to 276.64 | |
session_low |
number | 228.02 to 273.45 | US dollars |
open_drop_pct |
number | 6.55 to 10.45 | percent |
low_drop_pct |
number | 8.07 to 11.87 | percent |
close_drop_pct |
number | 5.06 to 10.94 | 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
toString(d) AS session_date,
concat(monthName(d), ' ', toString(toDayOfMonth(d))) AS session_label,
round(prev_close_px, 2) AS prior_close,
round(prev_close_px * 93 / 100, 2) AS level_1_line,
round(low_px, 2) AS session_low,
round((1 - open_px / prev_close_px) * 100, 2) AS open_drop_pct,
round((1 - low_px / prev_close_px) * 100, 2) AS low_drop_pct,
round((1 - close_px / prev_close_px) * 100, 2) AS close_drop_pct
FROM
(
SELECT
d,
open_px,
low_px,
close_px,
lagInFrame(close_px, 1) OVER (ORDER BY d ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS prev_close_px
FROM
(
SELECT
date AS d,
toFloat64(max(open)) AS open_px,
toFloat64(min(low)) AS low_px,
toFloat64(max(close)) AS close_px
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'SPY'
AND date BETWEEN toDate('2020-02-24') AND toDate('2020-03-31')
GROUP BY date
)
)
WHERE d >= toDate('2020-03-02')
AND (1 - low_px / prev_close_px) * 100 >= 7
ORDER BY d
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 analysismarket-wide-circuit-breakers-explained
march_2020_sessions
series 22×6
→
daily_recalc
series 15×5
→
trigger_levels
table 3×7
→
One SPY $600 LEAPS call's price over two years (expired Jan 16 2026)
series 470×2
→
monthly
series 241×4
→
2s10s spread, monthly average: last 20 years
series 240×2
→
See all 2,358 queries →