2020年新冠暴跌:四次熔断与峰谷跌幅
还原2020年新冠暴跌:八天四次熔断、3月9日逐分钟缺失记录,以及SPY从峰值到谷底的完整跌幅路径,查看数据证据。
2020年的新冠疫情暴跌,使标普500指数从2月19日的历史收盘高点,在23个交易日内录得-34.2%的峰值至谷底跌幅。期间出现四次全市场熔断,1997年以来首次发生熔断。本页根据逐笔交易数据还原整个过程:暴跌路径、3月9日熔断交易日的逐分钟走势(包括数据中缺失的分钟,而这些缺失记录是本页最有力的证据)、跌幅最大的股票,以及美国国债和期权交易数据的同步变化。所有数字均来自已存储查询;展开任一面板即可查看 SQL。
整轮暴跌,一行看清
先看那一天之前的全貌。通过一次查询统计 SPY 常规交易时段的每日收盘价,可以确定峰值、谷值、下跌速度和修复情况;同时对 2008 年熊市进行同样测算,便于比较。
| 峰值日期 | 峰值收盘价 | 谷值日期 | 谷值收盘价 | 跌幅(%) | 峰值至谷值交易日数 | 自然日数 | 跌至-30%所需交易日数 | 2008年金融危机跌至-30%所需交易日数 | 恢复日期 | 谷值至恢复交易日数 |
|---|---|---|---|---|---|---|---|---|---|---|
| 2020-02-19 | 338.31 | 2020-03-23 | 222.51 | -34.2 | 23 | 33 | 22 | 250 | 2020-08-18 | 103 |
每个数字背后的完整 SQL
WITH dailies AS (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2020-02-01 00:00:00') AND window_start < toDateTime('2020-09-01 00:00:00')
GROUP BY d
),
peak AS (SELECT argMax(d, (c, -toInt32(d))) AS pd, max(c) AS pc FROM dailies WHERE d < toDate('2020-03-01')),
trough AS (SELECT argMin(d, (c, toInt32(d))) AS td, min(c) AS tc FROM dailies WHERE d < toDate('2020-04-01')),
gfc AS (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2007-06-01 00:00:00') AND window_start < toDateTime('2009-01-01 00:00:00')
GROUP BY d
),
gpeak AS (SELECT argMax(d, (c, -toInt32(d))) AS pd, max(c) AS pc FROM gfc WHERE d < toDate('2008-01-01'))
SELECT
toString((SELECT pd FROM peak)) AS peak_date,
round((SELECT pc FROM peak), 2) AS peak_close,
toString((SELECT td FROM trough)) AS trough_date,
round((SELECT tc FROM trough), 2) AS trough_close,
round(((SELECT tc FROM trough) / (SELECT pc FROM peak) - 1) * 100, 1) AS decline_pct,
countIf(d > (SELECT pd FROM peak) AND d <= (SELECT td FROM trough)) AS sessions_peak_to_trough,
dateDiff('day', (SELECT pd FROM peak), (SELECT td FROM trough)) AS calendar_days,
countIf(d > (SELECT pd FROM peak) AND d <= (SELECT min(d) FROM dailies WHERE c <= 0.7 * (SELECT pc FROM peak))) AS sessions_to_minus_30,
(SELECT countIf(d > (SELECT pd FROM gpeak) AND d <= (SELECT min(d) FROM gfc WHERE c <= 0.7 * (SELECT pc FROM gpeak))) FROM gfc) AS gfc_2008_sessions_to_minus_30,
toString((SELECT min(d) FROM dailies WHERE d > (SELECT td FROM trough) AND c >= (SELECT pc FROM peak))) AS recovery_date,
countIf(d > (SELECT td FROM trough) AND d <= (SELECT min(d) FROM dailies WHERE d > (SELECT td FROM trough) AND c >= (SELECT pc FROM peak))) AS sessions_trough_to_recovery
FROM dailiesSPY 的峰值收盘价为 $338.31,出现在 2020-02-19。谷值收盘价为 $222.51,出现在 2020-03-23,较峰值低 -34.2%。这轮熊市被压缩在 23 个交易时段、33 个日历日内。“历史上最快的百分之三十回撤”这一常见说法,也能从同一行数据得到验证:SPY 收盘价仅在第 22 个交易时段就首次跌破峰值下方百分之三十。按照相同方法,以 2007 年十月的峰值收盘价为起点测算,2008 年熊市用了 250 个交易时段才跌去同样的百分之三十。2008 年大约耗时一年的跌幅,在 2020 年约一个月内完成。
以下是这轮暴跌的时间线。每个数字都来自本页各面板:
- 2020 年二月十九日,SPY 创纪录的收盘价为 $338.31。
- 三月九日,自 1997 年以来首次触发全市场熔断;SPY 收跌 -7.7%。下文将逐分钟列出相关数据。
- 三月十二日、十六日和十八日,又有三次一级熔断。三月十六日收跌 -11.6%,是本轮暴跌中最严重的单日交易时段。
- 三月二十三日,收盘低点为 $222.51,较峰值低 -34.2%。
- 三月二十四日,市场转折。三月二十四日的刺激政策反弹推动了当日行情。
- 2020-08-18,SPY 收盘价重新高于二月峰值,距离低点过去 103 个交易时段。
2020年3月9日:触发熔断机制的交易日
全市场熔断机制以标普500指数为触发基准。因此,本图通过SPY这一标普500 ETF观察停牌情况,而不是使用其他代理标的。上一个周末,疫情引发的重新定价与石油供应冲击叠加(下文将进一步介绍),市场始终未能有序开盘。
| 前收盘价 | 常规交易时段开盘价 | 跳空幅度(%) | 停牌后首个缺失ET时间 | 停牌缺失分钟数 | 常规交易时段最低价 | 最低价ET时间 | 常规交易时段收盘价 | 日变化(%) | 当日成交股数(百万) | 常规交易时段分钟K线数 |
|---|---|---|---|---|---|---|---|---|---|---|
| 297.42 | 275.3 | -7.4 | 09:35 | 14 | 273.45 | 14:44 | 274.4 | -7.7 | 304.6 | 376 |
每个数字背后的完整 SQL
WITH
(
SELECT argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2020-03-06 00:00:00') AND window_start < toDateTime('2020-03-09 04:00:00')
) AS prior_rth_close,
(
SELECT (formatDateTime(toTimeZone(addMinutes(prev_bar, 1), 'America/New_York'), '%H:%i'), gap_minutes - 1)
FROM (
SELECT
lagInFrame(window_start) OVER (ORDER BY window_start ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_bar,
dateDiff('minute', prev_bar, window_start) AS gap_minutes
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2020-03-09 04:00:00') AND window_start < toDateTime('2020-03-09 23:59:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
)
WHERE prev_bar > toDateTime('2020-03-09 00:00:00')
ORDER BY gap_minutes DESC
LIMIT 1
) AS halt_gap
SELECT
round(prior_rth_close, 2) AS prior_close,
round(toFloat64(argMinIf(open, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)), 2) AS rth_open,
round((toFloat64(argMinIf(open, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / prior_rth_close - 1) * 100, 1) AS gap_pct,
halt_gap.1 AS halt_first_missing_et,
halt_gap.2 AS halt_missing_minutes,
round(minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS rth_low,
formatDateTime(toTimeZone(argMinIf(window_start, (toFloat64(low), toInt64(toUnixTimestamp(window_start))), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 'America/New_York'), '%H:%i') AS low_et,
round(toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)), 2) AS rth_close,
round((toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / prior_rth_close - 1) * 100, 1) AS day_change_pct,
round(toFloat64(sum(volume)) / 1e6, 1) AS day_shares_m,
countIf((toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS rth_minute_bars
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2020-03-09 04:00:00') AND window_start < toDateTime('2020-03-09 23:59:00')先看两个数字。第一是跳空:SPY开盘价为$275.3,较周五收盘价$297.42低-7.4%;开盘后最初几分钟内,标普500指数跌幅达到7%的一级熔断阈值。第二个数字更关键:本交易日有376个常规交易时段分钟K线,而通常为390根。行情在上午9:34后停止:从美东时间09:35开始,连续14分钟完全没有任何成交记录。市场中没有任何交易发生。数据中的这段空白,就是熔断机制的体现。当天收盘价为$274.4,下跌-7.7%,成交量为304.6百万股。
暂停交易时段的形态
| ET时间 | 区间收盘价 | 区间最低价 | 成交股数(百万) |
|---|---|---|---|
| 09:30 | 279.93 | 273.5 | 17.4 |
| 10:00 | 280.72 | 275.6 | 23.4 |
| 10:30 | 278.61 | 275.5 | 19.1 |
| 11:00 | 281.03 | 275.5 | 17.2 |
| 11:30 | 282.69 | 280.06 | 19.1 |
| 12:00 | 281.01 | 280.95 | 17.2 |
| 12:30 | 279.71 | 275.95 | 13.4 |
| 13:00 | 278.59 | 278.24 | 11.5 |
| 13:30 | 275.84 | 275.34 | 19.4 |
| 14:00 | 274.95 | 274.06 | 21.2 |
| 14:30 | 276.59 | 273.45 | 25.9 |
| 15:00 | 277.9 | 275.55 | 24.5 |
| 15:30 | 274.4 | 274.37 | 46.7 |
每个数字背后的完整 SQL
SELECT
formatDateTime(toStartOfInterval(toTimeZone(window_start, 'America/New_York'), INTERVAL 30 MINUTE), '%H:%i') AS et_time,
round(toFloat64(argMax(close, window_start)), 2) AS bucket_close,
round(min(toFloat64(low)), 2) AS bucket_low,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2020-03-09 04:00:00') AND window_start < toDateTime('2020-03-09 23:59:00')
AND (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959
GROUP BY et_time
ORDER BY et_time开盘时段同时包含了暴跌、停牌和复牌:该时段低点为 $273.5,与全天低点 $273.45仅相差几美分;14:44 ET 的午后成交价只是再次测试了早盘水平。复牌后,盘面几乎没有变化:每个半小时收盘价都在复牌价上下几美元的范围内,全天跌幅在开盘后的最初几分钟内基本确定。成交量则呈现出相反的情况。最后半小时成交量为 46.7百万股,是全天成交量最大的时段,因为收盘资金流在此交叉。熔断机制正是为了形成这种走势:阻止瀑布式下跌,促成复牌集合竞价,并让连续交易在重新定价后的水平上恢复。如今,市场时钟已将这套机制永久嵌入其中。
八个交易日内四次熔断
3月9日只是第一次。
| 交易时段 | 收盘价(美元) | 变化(%) | 成交股数(百万) |
|---|---|---|---|
| 2020-03-09 | 274.4 | -7.7 | 304.6 |
| 2020-03-12 | 248.1 | -9.6 | 389.3 |
| 2020-03-16 | 239.41 | -11.6 | 291.5 |
| 2020-03-18 | 241.01 | -5.2 | 324.7 |
每个数字背后的完整 SQL
SELECT
toString(et_date) AS session,
close_usd,
change_pct,
shares_m
FROM (
SELECT et_date, close_usd, shares_m,
round((close_usd / lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) - 1) * 100, 1) AS change_pct
FROM (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
round(argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS close_usd,
round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
AND window_start >= toDateTime('2020-03-06 00:00:00') AND window_start < toDateTime('2020-03-19 00:00:00')
GROUP BY et_date
)
)
WHERE toString(et_date) IN ('2020-03-09', '2020-03-12', '2020-03-16', '2020-03-18')
ORDER BY et_date3月12日,一级熔断机制也被触发(收于-9.6%);3月16日,触发后收于-11.6%,报$239.41,创下标普指数自1987年以来最大单日百分比跌幅;3月18日,盘中触发熔断,收于-5.2%。八个交易日内发生四次全市场熔断,此前已有二十三年未曾发生。值得注意的是,从未出现过以下情况:每次熔断都处于7%这一一级阈值。13%和20%的二级、三级阈值从未被触及。即使在3月16日,熔断后抛售链条也有所放缓,最终收盘点位仍处于二级阈值以内。
谁跌得最重
指数的涨跌幅会掩盖其内部的分化。将同样的日收盘价计算应用于几只具有代表性的大盘股,可以看出这场崩跌实际冲击了哪些股票,无论是仅看3月9日,还是看2月19日至3月23日的完整下跌阶段。
| ticker | 3月9日百分比 | 崩盘百分比 |
|---|---|---|
| CCL | -19.9 | -72.3 |
| UAL | -10.4 | -66.9 |
| XOM | -12.2 | -47.9 |
| JPM | -13.7 | -42.6 |
| SPY | -7.7 | -34.2 |
| AAPL | -7.9 | -31 |
| WMT | -0.1 | -2.9 |
每个数字背后的完整 SQL
WITH dailies AS (
SELECT
ticker,
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('UAL', 'CCL', 'XOM', 'JPM', 'AAPL', 'WMT', 'SPY')
AND window_start >= toDateTime('2020-02-18 00:00:00') AND window_start < toDateTime('2020-03-25 00:00:00')
GROUP BY ticker, d
)
SELECT
ticker,
round((anyIf(c, d = toDate('2020-03-09')) / anyIf(c, d = toDate('2020-03-06')) - 1) * 100, 1) AS mar9_pct,
round((anyIf(c, d = toDate('2020-03-23')) / anyIf(c, d = toDate('2020-02-19')) - 1) * 100, 1) AS crash_pct
FROM dailies
GROUP BY ticker
ORDER BY crash_pct ASC样本中跌幅最大的股票是CCL(邮轮运营商嘉年华),仅3月9日就下跌-19.9%,从高点到低点累计下跌-72.3%。联合航空在这轮崩跌中下跌-66.9%;埃克森美孚下跌-47.9%;摩根大通下跌-42.6%。相比之下,SPY下跌-34.2%,几乎显得温和;苹果的跌幅大致与市场一致,为-31%;沃尔玛在同一期间仅下跌-2.9%。旅行和能源股的估值因世界陷入停摆而重定价;必需消费品股几乎没有变动。
简述油价战
上文的能源一栏值得用一段话解释,因为“油价战”涵盖了3月9日新闻的另一半。2020年3月6日星期五,沙特阿拉伯与俄罗斯举行的OPEC+产量谈判未能达成协议。周末,沙特阿拉伯下调官方售价,并宣布计划提高产量。当时全球旅行需求已经开始停滞,市场同时遭遇供给冲击和需求冲击。周一股市开盘时,两种冲击同时显现。上方图表记录了这一结果:埃克森美孚(ExxonMobil)当日下跌了-12.2%,而SPY下跌了-7.7%。
避险潮,以及它逆转的一周
股市只是故事的一半。另一半发生在美国国债市场。经典的避险潮曾创下纪录,随后在非同寻常的一周内逆转。
| 日期 | 十年期百分比 | 三个月百分比 |
|---|---|---|
| 2020-02-18 | 1.55 | 1.58 |
| 2020-02-19 | 1.56 | 1.58 |
| 2020-02-20 | 1.52 | 1.58 |
| 2020-02-21 | 1.46 | 1.56 |
| 2020-02-24 | 1.38 | 1.53 |
| 2020-02-25 | 1.33 | 1.53 |
| 2020-02-26 | 1.33 | 1.53 |
| 2020-02-27 | 1.3 | 1.45 |
| 2020-02-28 | 1.13 | 1.27 |
| 2020-03-02 | 1.1 | 1.13 |
| 2020-03-03 | 1.02 | 0.95 |
| 2020-03-04 | 1.02 | 0.72 |
| 2020-03-05 | 0.92 | 0.62 |
| 2020-03-06 | 0.74 | 0.45 |
| 2020-03-09 | 0.54 | 0.33 |
| 2020-03-10 | 0.76 | 0.44 |
| 2020-03-11 | 0.82 | 0.42 |
| 2020-03-12 | 0.88 | 0.33 |
| 2020-03-13 | 0.94 | 0.28 |
| 2020-03-16 | 0.73 | 0.24 |
每个数字背后的完整 SQL
SELECT
toString(date) AS date,
round(yield_10_year, 2) AS ten_year_pct,
round(yield_3_month, 2) AS three_month_pct
FROM global_markets.treasury_yields
WHERE date >= '2020-02-18' AND date <= '2020-03-31'
AND isNotNull(yield_10_year)
ORDER BY date2月19日股市见顶时,10年期国债收益率为1.56%。到3月9日,也就是暂停交易的那天,收益率收于0.54%,创历史新低。买家愿意接受十年期年化仅为0.5%的收益,以换取安全性。
随后,走势发生逆转。到3月18日,10年期收益率升至1.18%,而股市仍在下跌。这就是“争相获取现金”的一周。基金、企业和海外持有者纷纷出售一切具有流动性的资产,包括美国国债,以筹集美元。
与此同时,3个月期国库券当日收于0.02%,现金等价物收益率被压至零附近。当最安全的资产与风险最高的资产同时下跌时,市场买入的其实是流动性本身。收益率曲线将这一事件永久载入其历史。
期权成交记录显示了什么
SPY的上市期权是市场公认的对冲场所。其自身也记录了这场恐慌,而时间节点尤其值得关注。
| 交易时段 | 看跌期权合约数(百万) | 看涨期权合约数(百万) | 看跌/看涨比率 |
|---|---|---|---|
| 2020-03-02 | 3.74 | 2.54 | 1.47 |
| 2020-03-03 | 3.14 | 2.24 | 1.4 |
| 2020-03-04 | 3.06 | 2.27 | 1.35 |
| 2020-03-05 | 3.14 | 1.82 | 1.73 |
| 2020-03-06 | 4.64 | 2.38 | 1.95 |
| 2020-03-09 | 4.35 | 2.38 | 1.83 |
| 2020-03-10 | 3.61 | 2.4 | 1.5 |
| 2020-03-11 | 3.75 | 2.44 | 1.54 |
| 2020-03-12 | 4.53 | 3.43 | 1.32 |
| 2020-03-13 | 4.63 | 3.27 | 1.41 |
每个数字背后的完整 SQL
SELECT
toString(toDate(toTimeZone(sip_timestamp, 'America/New_York'))) AS session,
round(sumIf(toFloat64(size), substring(ticker, 12, 1) = 'P') / 1e6, 2) AS put_contracts_m,
round(sumIf(toFloat64(size), substring(ticker, 12, 1) = 'C') / 1e6, 2) AS call_contracts_m,
round(sumIf(toFloat64(size), substring(ticker, 12, 1) = 'P') / sumIf(toFloat64(size), substring(ticker, 12, 1) = 'C'), 2) AS put_call_ratio
FROM global_markets.options_trades
WHERE ticker >= 'O:SPY2' AND ticker < 'O:SPY3'
AND sip_timestamp >= toDateTime('2020-03-02 00:00:00') AND sip_timestamp < toDateTime('2020-03-14 00:00:00')
GROUP BY session
ORDER BY session看跌/看涨期权成交量比在3月6日星期五达到1.95。在停牌交易日之前,市场每成交一张看涨期权,几乎对应两张看跌期权。3月9日当天,4.35百万张看跌期权成交,对应2.38百万张看涨期权,比例为1.83。到3月12日,在一个-9.6%交易日,随着看涨期权成交量与看跌期权一同增加,该比例回落至1.32。看跌期权偏斜最严重的时期出现在这轮下跌初段,而不是底部:市场很早就买入保护性期权;随后几个更大幅度下跌的交易日,期权成交更为双向。
市场范围熔断机制的实际运作方式
这套机制并不常用,因此两次使用之间很容易被遗忘。市场范围熔断以标普500指数较前一交易日收盘点位的跌幅为依据:若在美东时间下午3:25前触及7%(一级)或13%(二级),均会触发15分钟停牌;触及20%(三级)则直接结束当日交易。在停牌期间,所有交易所均停止交易。订单会排队等待重新开盘竞价,将累积的买卖兴趣集中到一个价格上,方式类似于每天早上的开盘竞价。这套设计源于2010年闪电崩盘之后的改革。当时的事件表明,旧有阈值过于宽松,即使市场真的出现级联式下跌,也可能无法触发熔断。
2020年3月是这套设计首次、也是迄今唯一一次实盘检验。上方图表已经给出结论:共触发四次一级熔断,每次都以有序的重新开盘结束;二级和三级熔断从未触发。在该指数历史上最快速的大幅下跌期间,23个交易日的市场均保持正常运转。此后,相关规则继续保留:以标普500指数为基准的7%/13%/20%阈值至今仍然有效。系统出现弯曲,但市场基础设施经受住了考验。
新冠疫情暴跌常见问题
2020年3月9日是什么触发了熔断?
标普500指数在开盘几分钟内较前一交易日收盘价下跌7%,触发全市场一级熔断。全市场交易暂停15分钟,随后通过集合竞价恢复。该停牌在本页的分钟级成交记录中显示为从09:35 ET开始连续缺失的14根K线。
新冠疫情暴跌期间股市下跌了多少?
按SPY的日收盘价计算,跌幅为-34.2%:从2020年2月19日的$338.31跌至2020年3月23日的$222.51,期间共经历23个交易日。
2020年3月触发了多少次熔断?
全市场一级熔断共四次,分别发生在3月9日、12日、16日和18日。这是自1997年10月以来首次触发全市场熔断。
2020年是否触发过二级或三级熔断?
没有。2020年的四次熔断全部属于一级熔断(7%)。按照现行机制,全市场二级熔断(13%)或三级熔断(20%)从未触发过,即使在本轮暴跌最严重的3月16日也没有触发,当日跌幅为-11.6%。
市场是否完全从新冠疫情暴跌中恢复?
是。SPY于2020-08-18收盘价超过2020年2月19日的峰值,距离3月23日低点仅经过103个交易日。这是从如此深度的熊市中实现完全恢复的最快案例之一。
上述每个面板都是基于历史成交记录生成的、经过版本控制的查询。展开SQL即可查看每项测量的具体过程。与其阅读,不如亲身体验这一天:它是Strasmore Labs交易模拟器中可进行体验的场景之一。