Strasmore Research
深度研究 Matt Connor作者: Matt Connor · 更新于 2026-09-28

2020年3月24日:市场转折之日

重看2020年3月24日的分钟级行情:股灾、现金争夺、美联储特别方案与板块广度,解析市场为何转向,以及迟迟未现的回踩。

2020年3月23日,美联储宣布开展无上限资产购买,即没有预设规模上限的量化宽松(QE),并推出一项前所未有的措施:设立购买公司债券的工具。

2020年3月24日,市场给出了回应:新冠疫情刺激政策推动的反弹创下美国股市单日最大涨幅之一;只有回头看才会发现,这也是新一轮牛市的第二天。市场底部本身在该公告发布前一个交易日下午收盘时已经形成。

转折前的崩盘

崩盘本身另有专页;以下是本页所依据的记录,涵盖从历史高点到市场底部的每个交易日,并列出同期10年期美国国债收益率(单位为基点):

查询SPY日收盘价、回撤与10年期收益率:2020年2月19日至3月23日
24 rows (showing 20)
交易时段收盘价(美元)回撤(%)10年期收益率(基点)
2020-02-19338.310156
2020-02-20336.98-0.4152
2020-02-21333.49-1.4146
2020-02-24322.41-4.7138
2020-02-25312.7-7.6133
2020-02-26311.55-7.9133
2020-02-27297.55-12130
2020-02-28296.16-12.5113
2020-03-02309.08-8.6110
2020-03-03300.34-11.2102
2020-03-04312.91-7.5102
2020-03-05302.45-10.692
2020-03-06297.42-12.174
2020-03-09274.4-18.954
2020-03-10288.44-14.776
2020-03-11274.36-18.982
2020-03-12248.1-26.788
2020-03-13270.93-19.994
2020-03-16239.41-29.273
2020-03-17254.19-24.9102
每个数字背后的完整 SQL
WITH daily AS (
    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
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2020-02-19 00:00:00') AND window_start < toDateTime('2020-03-24 04:00:00')
    GROUP BY et_date
    HAVING et_date >= toDate('2020-02-19') AND et_date <= toDate('2020-03-23') AND close_usd > 0
)
SELECT
    toString(d.et_date) AS session,
    d.close_usd,
    round((d.close_usd / (SELECT max(close_usd) FROM daily) - 1) * 100, 1) AS drawdown_pct,
    round(t.yield_10_year * 100) AS y10_bps
FROM daily AS d
LEFT JOIN global_markets.treasury_yields AS t ON t.date = d.et_date
ORDER BY d.et_date
自己运行这个查询

SPY在2020-02-19创下338.31美元的历史收盘高点,随后于2020-03-23跌至222.51美元,回撤幅度为-34.2%。整个下跌过程的每个交易日都包含在面板的24行中。

收益率一栏揭示了关键变化。在2020-03-09之前,10年期收益率从156个基点骤降至当时的纪录低点54。这体现了典型的避险情绪,资金从股票转向债券。随后,模式发生改变:截至2020-03-18,收益率已翻倍以上,升至118个基点,而SPY的回撤则从-18.9%扩大至-28.8%。股票和美国国债价格同时下跌,是被迫抛售的典型特征。持有人通过出售仍有买盘的资产来筹集现金。到3月中旬,危机已不再只是股票价格问题,而是蔓延至信贷体系本身的运转。

美联储实际宣布了什么,以及哪些措施未能奏效

降息此前已经实施过。上方面板按日期列出了各项措施,时间顺序清晰可见:

  • 2020-03-03,紧急降息50个基点。这是2008年以来首次在议息会议之间降息。SPY收于$300.34,较高点低-11.2%,随后跌势延续。
  • 3月15日,星期日,利率降至零,并推出规模为7000亿美元的资产购买计划。下一交易日2020-03-16收盘时,较2月高点低-29.2%,成为整个暴跌期间最糟糕的单日交易时段之一。
  • 3月23日,美国东部时间上午8:00,美联储取消了购买上限:美国国债和抵押贷款支持证券将“按所需金额”持续购买,不设上限。相关措施还包括PMCCF和SMCCF。这是美联储首次设立公司债购买工具;此外,重启的TALF为消费信贷提供支持。但当天下午,SPY仍收于熊市最低点。
  • 3月24日,即下方所示交易日。隔夜,国会就规模约2万亿美元的《CARES法案》达成一致;法案于3月27日签署,属于下文进一步记录的三天密集政策行动。

3月23日方案与此前措施之间有两项设计差异。固定规模的计划有明确终止日期,压力市场可以提前消化这一点;而“按所需金额”购买则没有这一限制。公司债工具将公共部门买方直接置于信贷市场内部,而当时该市场的运作机制已经失灵。

这些差异是否决定了结果,仍取决于判断。市场走势记录了这一过程:两次升级后市场继续下跌,第三次采用不同设计,随后出现转折。

同日走势

查询2020年3月24日SPY:转折,已确认
前收盘价正常交易时段开盘价跳空幅度(%)正常交易时段最低价最低价时间(美东)正常交易时段最高价正常交易时段收盘价日变化(%)最低价较前收盘价变化(%)日成交股数(百万)正常交易时段分钟K线
222.51234.425.4233.809:31244.1243.599.55.1232.4390
每个数字背后的完整 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-23 00:00:00') AND window_start < toDateTime('2020-03-24 04:00:00')
    ) AS prior_rth_close
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,
    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(maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS rth_high,
    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((minIf(toFloat64(low), (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 low_vs_prior_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-24 04:00:00') AND window_start < toDateTime('2020-03-24 23:59:00')
自己运行这个查询

从3月23日收盘价$222.51(熊市最后一个收盘价)算起,SPY高开+5.4%,开盘报$234.42。开盘几分钟内(美国东部时间09:31)录得盘中低点$233.8,此后再未回到该价位。最终收盘报$243.59,当日上涨+9.5%。低点在第一分钟成交价中出现的上涨行情,是以最低价收盘的暴跌行情的镜像。不过,单行数据会掩盖价格路径;下方的半小时行情显示,市场在该交易日还消化了这轮回落。

本交易时段的走势形态

查询SPY半小时走势:2020年3月24日常规交易时段,最后半小时收盘竞价成交
美东时间区间收盘价区间最低价成交股数(百万)
09:30235.51233.827.3
10:00238.45234.617.4
10:30237.46237.0413.2
11:00238.36236.1611.5
11:30240.43237.5812.5
12:00242.24239.6514.2
12:30239.65239.5712.9
13:00239.41237.8616.1
13:30237.25236.7610.7
14:00237.38235.0516.9
14:30240.58236.6111.5
15:00241.45240.2112.1
15:30243.59240.4137.5
每个数字背后的完整 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-24 04:00:00') AND window_start < toDateTime('2020-03-24 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-24 20:00:00', 'UTC')
      AND sip_timestamp <  toDateTime('2020-03-24 20:15:00', 'UTC')
) AS p
ORDER BY et_time
自己运行这个查询

盘面显示,走势并非一路直行。开盘第一分钟录得233.8美元的低点,此后再未触及。这部分单边行情的判断确实成立。但午间时段触及242.24美元后,盘面在随后两小时回吐涨幅。13:30时段收于237.25美元,14:00时段录得午后的最低点235.05美元。这一阶段本可能让当天再次成为一次失败的反弹。实际回吐后的低点仍远高于开盘低点。最后半小时则录得全时段最高的时段收盘价243.59美元,成交量为37.5百万股,是全天232.4百万股成交量中最大的时段,甚至高于开盘时的27.3百万股。午间回调获得买盘承接,随后在成交量达到峰值时收于高位。

广泛上涨,还是局部行情?

指数可能仅靠少数超大盘股就被推高。但这次并非如此。以下十二只基金——三只主要指数跟踪基金和九只标普行业基金——在这两个收盘日均上涨:

查询2020年3月24日指数与行业ETF:全线上涨,周期股领先
ticker3月23日收盘价3月24日收盘价变化(%)
XLE23.5327.3916.4
XLI48.7554.9712.8
XLF17.6219.8512.7
DIA185.87206.9611.3
XLU44.9249.7610.8
XLK70.277.6410.6
XLY87.4295.779.6
SPY222.51243.599.5
IWM99.83109.179.4
QQQ170.61183.797.7
XLV74.880.317.4
XLP48.6651.125.1
每个数字背后的完整 SQL
SELECT
    ticker,
    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 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2020-03-23')), 2) AS mar23_close,
    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 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2020-03-24')), 2) AS mar24_close,
    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 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2020-03-24')) / argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2020-03-23')) - 1) * 100, 1) AS change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'DIA', 'QQQ', 'IWM', 'XLE', 'XLI', 'XLF', 'XLK', 'XLY', 'XLV', 'XLU', 'XLP')
  AND window_start >= toDateTime('2020-03-23 00:00:00') AND window_start < toDateTime('2020-03-25 00:00:00')
GROUP BY ticker
ORDER BY change_pct DESC
自己运行这个查询

所有 12 均收高。能源板块(XLE)领涨,涨幅为 +16.4%;工业板块(XLI,+12.8%)和金融板块(XLF,+12.7%)紧随其后。这些都是对经济最敏感的市场领域,也是政府停摆最先威胁到的领域。道琼斯指数跟踪基金 DIA 上涨 11.3%,推动了当周“自1933年以来最佳单日表现”的标题;这一最高纪录应放在道琼斯指数更长的价格历史中理解。涨幅最小的是传统防御板块,包括必需消费品(XLP,+5.1%)和医疗保健(XLV,+7.4%)。纳斯达克100指数的 QQQ(+7.7%)落后于 SPY 的 +9.5%。由周期性板块领涨、全线飘红的盘面,正是局部超大盘股挤压行情的相反形态。市场广度成为当天行情的主要特征。

这一天的历史意义究竟有多大?

“自1933年以来最强劲的一天”是当周报纸引用的道琼斯指数统计。以下是我们自己的行情数据能够核实的内容,范围仅限于数据实际覆盖的时期:

查询2020年3月24日:与SPY自2003年以来每个交易日的分钟走势排名比较
测量交易时段数首个交易时段3月24日涨幅(%)更大涨幅日数3月24日排名更大涨幅日期3日突发行情涨幅(%)更大突发行情数相对30日波动率相对250日波动率2024年3月股份数(百万)
56132003-09-109.5232008-10-13, 2008-10-2817.501.122.86232
每个数字背后的完整 SQL
SELECT
    countIf(isFinite(day_pct)) AS sessions_measured,
    toString(min(et_date)) AS first_session,
    round(mar24_d, 1) AS mar24_gain_pct,
    countIf(isFinite(day_pct) AND day_pct > mar24_d) AS bigger_days,
    countIf(isFinite(day_pct) AND day_pct > mar24_d) + 1 AS mar24_rank,
    arrayStringConcat(arraySort(groupArrayIf(toString(et_date), isFinite(day_pct) AND day_pct > mar24_d)), ', ') AS bigger_day_dates,
    round(mar26_b, 1) AS burst3_gain_pct,
    countIf(isFinite(burst3_pct) AND burst3_pct > mar26_b) AS bigger_bursts,
    round(mar24_r30, 2) AS vol_vs_30d,
    round(mar24_r250, 2) AS vol_vs_250d,
    round(mar24_shares / 1e6, 0) AS mar24_shares_m
FROM (
    SELECT
        et_date, day_pct, burst3_pct,
        max(if(et_date = toDate('2020-03-24'), day_pct, -999)) OVER () AS mar24_d,
        max(if(et_date = toDate('2020-03-26'), burst3_pct, -999)) OVER () AS mar26_b,
        max(if(et_date = toDate('2020-03-24'), shares / vol_avg_30, -999)) OVER () AS mar24_r30,
        max(if(et_date = toDate('2020-03-24'), shares / vol_avg_250, -999)) OVER () AS mar24_r250,
        max(if(et_date = toDate('2020-03-24'), shares, -999)) OVER () AS mar24_shares
    FROM (
        SELECT
            et_date,
            (close_usd / lagInFrame(close_usd, 1) OVER (ORDER BY et_date ASC ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) - 1) * 100 AS day_pct,
            (close_usd / lagInFrame(close_usd, 3) OVER (ORDER BY et_date ASC ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) - 1) * 100 AS burst3_pct,
            shares,
            avg(shares) OVER (ORDER BY et_date ASC ROWS BETWEEN 30 PRECEDING AND 1 PRECEDING) AS vol_avg_30,
            avg(shares) OVER (ORDER BY et_date ASC ROWS BETWEEN 250 PRECEDING AND 1 PRECEDING) AS vol_avg_250
        FROM (
            SELECT
                toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
                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 close_usd,
                toFloat64(sum(volume)) AS shares
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPY' AND window_start < toDateTime('2026-01-01 00:00:00')
            GROUP BY et_date
            HAVING close_usd > 0
        )
    )
)
GROUP BY mar24_d, mar26_b, mar24_r30, mar24_r250, mar24_shares
自己运行这个查询

自2003-09-10(我们的分钟级数据起始的首个交易日)以来,SPY共出现5613次收盘至收盘的日回报。2020年3月24日的+9.5%排名第3位:恰好有2个交易日的涨幅超过它(2008-10-13, 2008-10-28),而且都发生在2008年10月的恐慌行情期间。三日走势更加罕见:从3月23日收盘至3月26日收盘的+17.5%涨幅,在整个样本中仅有0次更大的三日涨幅。这一数据仓库能够核查的范围内,没有任何行情能与这轮爆发相提并论。

成交量揭示了较为平静的一面:232百万股SPY成交量是过去一年的平均水平的2.86倍,但仅为此前30个交易日平均水平的1.12倍。与历史上任何正常时期相比,当天的交易活动都异常活跃;但与此前几周的崩盘行情相比,它只是风暴中的普通一天。历史性转折并不会以历史性成交量预先宣告自己。

三日爆发

查询SPY收盘表现,2020年3月23日至26日:三日爆发
交易时段收盘价(美元)变化(%)成交股数(百万)
2020-03-23222.51-2.8322.4
2020-03-24243.599.5232.4
2020-03-25246.771.3297.4
2020-03-26261.395.9253.8
每个数字背后的完整 SQL
SELECT
    toString(et_date) AS session,
    close_usd,
    round(if(prev_close = 0, NULL, (close_usd / prev_close - 1) * 100), 1) AS change_pct,
    shares_m
FROM (
    SELECT et_date, close_usd, shares_m,
           lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    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-20 00:00:00') AND window_start < toDateTime('2020-03-26 23:59:00')
        GROUP BY et_date
    )
)
WHERE et_date >= toDate('2020-03-23') AND et_date <= toDate('2020-03-26')
ORDER BY et_date
自己运行这个查询

市场随即连续转强:24日上涨+9.5%,25日上涨+1.3%,26日上涨+5.9%。这三个交易日的连续上涨扭转了数周的暴跌。在上述样本中,没有更大幅度的三日反弹。2020年3月的走势有意呼应2009年3月:两次行情中,决定性的政策应对都在接近低点时出台,第一轮反弹都极为猛烈,而机会最大的那一天,在当日上午看来,都与熊市中的另一轮反弹没有区别。

反弹是否站稳?

在实时交易中,市场共识仍是“熊市反弹”。怀疑者也有自己的依据:就在十一天前,盘面已经出现过规模近似的反弹,从2020-03-12的$248.1涨至2020-03-13的$270.93;而在那之后的下一个交易日,收于$239.41,成为整个崩盘期间表现最差的一天。单日上涨无法证明任何问题。3月24日的不同之处,在于随后发生了什么:

查询守住了吗?未出现的回踩,以及两种复苏计时
2月19日历史最高收盘价3月23日最低收盘价恢复日期达到新高所需交易日数从低点到新高的天数往返天数之后最低收盘价最低收盘价日期最接近重测涨跌幅2007年峰值日期2013年恢复日期2008年往返天数
338.31222.512020-08-18103148181243.592020-03-249.52007-10-092013-03-141983
每个数字背后的完整 SQL
SELECT
    round(ath_close, 2) AS feb19_ath_close,
    round(bottom_close, 2) AS mar23_bottom_close,
    toString(rec_date) AS recovery_date,
    countIf(et_date > toDate('2020-03-23') AND et_date <= rec_date) AS sessions_to_new_high,
    dateDiff('day', toDate('2020-03-23'), rec_date) AS days_low_to_new_high,
    dateDiff('day', toDate('2020-02-19'), rec_date) AS round_trip_days,
    round(minIf(close_usd, et_date > toDate('2020-03-23') AND et_date <= rec_date), 2) AS lowest_close_after,
    toString(argMinIf(et_date, (close_usd, et_date), et_date > toDate('2020-03-23') AND et_date <= rec_date)) AS lowest_close_date,
    round((minIf(close_usd, et_date > toDate('2020-03-23') AND et_date <= rec_date) / bottom_close - 1) * 100, 1) AS closest_retest_pct,
    toString(peak07_date) AS peak_2007_date,
    toString(rec07_date) AS recovery_2013_date,
    dateDiff('day', peak07_date, rec07_date) AS round_trip_2008_days
FROM (
    SELECT
        et_date, close_usd, ath_close, bottom_close, peak07_date,
        min(if(et_date > toDate('2020-03-23') AND close_usd >= ath_close, et_date, toDate('2099-01-01'))) OVER () AS rec_date,
        min(if(et_date >= toDate('2008-01-01') AND close_usd >= peak07_close, et_date, toDate('2099-01-01'))) OVER () AS rec07_date
    FROM (
        SELECT
            et_date, close_usd,
            max(if(et_date = toDate('2020-02-19'), close_usd, -999)) OVER () AS ath_close,
            max(if(et_date = toDate('2020-03-23'), close_usd, -999)) OVER () AS bottom_close,
            max(if(et_date >= toDate('2007-01-01') AND et_date < toDate('2008-01-01'), (close_usd, et_date), (-999., toDate('1970-01-01')))) OVER () .1 AS peak07_close,
            max(if(et_date >= toDate('2007-01-01') AND et_date < toDate('2008-01-01'), (close_usd, et_date), (-999., toDate('1970-01-01')))) OVER () .2 AS peak07_date
        FROM (
            SELECT
                toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
                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 close_usd
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPY' AND window_start < toDateTime('2021-01-01 00:00:00')
            GROUP BY et_date
            HAVING close_usd > 0
        )
    )
)
GROUP BY ath_close, bottom_close, rec_date, peak07_date, rec07_date
自己运行这个查询

回测并未出现。3月23日之后,SPY最低的收盘价是2020-03-24的$243.59,也就是刺激计划推动反弹的当天。此后,市场收盘价再也没有回到距离底部9.5%以内。COVID-19疫情前的高点$338.31于2020-08-18收复,距离低点过去了103个交易日;从历史高点跌回历史高点,再重新收复,整个往返耗时181天。以相同方法计算2008年的情况:SPY在2007-10-09触及的峰值,直到2013-03-14才创出新的收盘高点,间隔1983天。两场危机,两种速度,而这期间市场的运行节奏已经发生变化。

这一天带来的启示

有三点值得牢记。第一,涨幅主要来自跳空:当天的大部分涨幅在开盘前就已出现。任何等待正常交易时段入场的人,全天都只能以更高价格买入。这正是隔夜跳空机制达到最大幅度的表现。第二,底部先于确认出现:3月23日收盘价就是低点,但只有在之后的交易时段拒绝再次触及该点后,这一点才变得清晰。第三,速度具有双向作用:将-34.2%跌幅压缩到上文24行所示水平的同一市场结构,也将初步复苏压缩在三个交易日内。速度是这一时代市场基础设施的特征,并非利好或利空消息本身的属性。

那一周持怀疑态度的人并非愚蠢:市场广度、突然爆发的涨势,以及始终没有出现的回踩,所有区分3月24日与失败反弹的依据,都只有事后才能量化。熊市反弹与新一轮牛市之间的差异,在第一天无法看清,但几个月内便会变得毫无疑问。

新冠疫情反弹常见问题

2020年3月24日发生了什么?

这是美联储宣布无限量量化宽松后的首个完整交易日:SPY开盘跳涨5.4%,收盘上涨9.5%。在我们的分钟级行情数据覆盖的5613个交易日中,这是单日涨幅排名第3的交易日,仅次于2008年10月的两天。

美联储于2020年3月23日宣布了什么?

美联储宣布开放式购买美国国债和抵押贷款支持证券,“按所需金额”进行购买;同时推出PMCCF和SMCCF,这是其首次设立用于购买公司债券的工具,并重新启动用于消费者信贷的TALF。声明于美东时间上午8:00发布,早于开盘;SPY当天收盘价仍处于熊市低点。

2020年3月23日是新冠疫情崩盘的底部吗?

是,就收盘价而言:SPY于3月23日收于222.51美元,创下最低收盘价。该收盘价此后再未被触及;之后的最低收盘价出现在2020-03-24,比底部高9.5%。

股市何时收复疫情前高点?

SPY首次收盘高于2020年2月19日的历史最高收盘价是在2020-08-18,即底部之后第103个交易日。这段往返历时181天,而2008年崩盘的对应修复过程耗时1983天。

消息公布后买入,仍有机会取得良好表现吗?

在常规交易开始前,开盘已跳涨5.4%;当天市场继续上行。之后每个买入时点的成本都高于前一交易日收盘价,但在2020年8月市场复苏时,价格仍远低于当时的市场水平。

数据说明
  • 收盘价为常规交易时段(美东时间上午9:30至下午4:00)分钟级行情数据中的最后一笔成交价;与官方集合竞价收盘价相比,可能相差几美分。
  • 复苏日期仅基于价格;总回报指标将股息再投资,因此按定义会更早恢复。
  • 10年期国债收益率在交易日接入美国财政部的每日序列;基点为百分点的百分之一。
  • 排名面板的样本始于2003-09-10;本页所称“自2003年以来”指该时间窗口,而非所有有记录的市场历史。

上方每个面板都是基于历史行情的已存储、版本化查询。展开SQL即可查看每项指标的计算方式。想亲身感受这一天,而不是只阅读相关内容?它是Strasmore Labs交易模拟器中可玩的场景之一。

#market history#covid rally#bull markets#federal reserve#spy