2020年新冠暴跌:四次熔断与峰谷跌幅
复盘2020年新冠暴跌:四次熔断、3月9日逐分钟记录缺口,以及SPY从峰值到谷值的完整路径,查看数据证据与SQL查询。
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 个日历日内完成压缩。市场经常引用的“有记录以来最快下跌 30%”这一说法,也能在同一行数据中得到验证:SPY 收盘价仅在第 22 个交易日就首次跌破峰值下方 30% 的位置。采用相同方法、以 2007 年 10 月的峰值收盘价为起点测算,2008 年熊市用了 250 个交易日才下跌同样的 30%。2008 年大约需要一年的跌幅,2020 年只用了约一个月。
这轮崩盘的时间线如下,所有数字均来自本页各面板:
- 2020 年 2 月 19 日,SPY 创纪录收盘,报 $338.31。
- 3 月 9 日,自 1997 年以来首次触发全市场熔断;SPY 收跌 -7.7%。下文将按分钟提供数据记录。
- 3 月 12 日、16 日和 18 日,又发生三次一级熔断。3 月 16 日收跌 -11.6%,为本轮崩盘中最糟糕的单日表现。
- 3 月 23 日,收盘低点为 $222.51,较峰值低 -34.2%。
- 3 月 24 日,市场转向。3 月 24 日的刺激措施驱动反弹推动了这轮行情。
- 2020-08-18,SPY 收盘价再次高于 2 月峰值,距低点已过去 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 | 50.2 |
每个数字背后的完整 SQL
SELECT
b.et_time AS et_time,
b.bucket_close AS bucket_close,
b.bucket_low AS bucket_low,
round((b.bar_shares + if(b.et_time = '15:30', p.print_shares, 0)) / 1e6, 1) AS shares_m
FROM
(
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,
toFloat64(sum(volume)) AS bar_shares
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
) AS b
CROSS JOIN
(
SELECT toFloat64(maxIf(size, has(conditions, 8))) AS print_shares
FROM global_markets.stocks_trades
WHERE ticker = 'SPY'
AND sip_timestamp >= toDateTime('2020-03-09 20:00:00', 'UTC')
AND sip_timestamp < toDateTime('2020-03-09 20:15:00', 'UTC')
) AS p
ORDER BY et_time开盘时段同时包含了暴跌、暂停交易和恢复交易:该时段低点为$273.5,与全天低点$273.45仅相差几美分;东部时间14:44的午后成交价只是再次测试了早盘水平。恢复交易后,行情几乎没有进一步变化:每个半小时收盘价都处于恢复交易价格上下几美元的范围内,全天跌幅在开盘后的最初几分钟内就已形成。成交量也从反方向印证了这一点。最后半小时成交量达到50.2百万股,是全天成交量最大的时段,因为收盘资金流在此时完成交叉撮合。熔断机制正是为了形成这种走势:阻止瀑布式下跌,强制进行重新开盘拍卖,并让连续交易在重新定价后的水平恢复。如今,市场时钟已将这套机制永久嵌入其中。
八个交易日内四次熔断
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%,标普指数单日跌幅为1987年以来最大,收于$239.41);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%。
避险潮,以及它逆转的那一周
股市只是其中一半。另一半发生在美国国债市场。经典的避险潮曾达到纪录水平,但随后在非同寻常的一周内逆转。
| 日期 | 10年期涨跌幅 | 3个月涨跌幅 |
|---|---|---|
| 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%,创历史新低。买家接受了连续十年每年仅半个百分点的回报,以换取安全性。随后走势发生逆转:截至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 session3月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%阈值至今仍在执行。系统出现弯曲,但市场基础设施经受住了考验。
COVID-19暴跌常见问题
2020年3月9日是什么触发了熔断机制?
开盘几分钟内,标普500指数较前一收盘价下跌7%,达到全市场一级熔断阈值。全市场交易暂停15分钟,随后通过集合竞价恢复。该停牌在本页的分钟级成交记录中显示为从09:35 ET开始连续缺失的14根K线。
COVID-19暴跌期间股市下跌了多少?
按SPY的日收盘价计算,从2020年2月19日的$338.31跌至2020年3月23日的$222.51,跌幅为-34.2%,期间共经历23个交易日。
2020年3月触发了多少次熔断?
共触发四次全市场一级熔断,日期分别为3月9日、12日、16日和18日。这是自1997年10月以来首次触发全市场熔断。
2020年是否触发过二级或三级熔断?
没有。2020年的四次停牌全部属于一级熔断(7%)。在现行机制下,全市场二级熔断(13%)或三级熔断(20%)从未触发过,包括3月16日这次暴跌中跌幅最大的交易日,当日跌幅为-11.6%。
市场是否完全收复了COVID-19暴跌期间的失地?
是。SPY于2020-08-18收盘价超过2020年2月19日的峰值,距离3月23日低点仅103个交易日。这是如此深度的熊市中最快的全面复苏之一。
以上每个面板都是基于历史成交记录生成的、带版本控制的查询。展开SQL即可查看每项测量的具体过程。想亲身感受这一天,而不是只阅读相关内容?您可以在Strasmore Labs交易模拟器中体验这一场景。