Strasmore Research
Phân tích chuyên sâu Matt ConnorBởi Matt Connor · Cập nhật 2026-07-23

Diễn biến khủng hoảng COVID năm 2020

Tái hiện cuộc khủng hoảng năm 2020 với bốn lần circuit breaker và bản đồ biến động của SPY từ đỉnh đến đáy trong giai đoạn thị trường biến động mạnh.

Cuộc khủng hoảng COVID năm 2020 đã khiến chỉ số S&P 500 giảm từ mức đóng cửa kỷ lục vào ngày 19 tháng 2 xuống mức thua lỗ -34.2% từ đỉnh đến đáy trong 23 ngày giao dịch. Trong giai đoạn này, thị trường đã có bốn lần tạm ngừng giao dịch (circuit-breaker) trên diện rộng, lần đầu tiên kể từ năm 1997. Trang này tái hiện lại toàn bộ diễn biến: bản đồ của cuộc khủng hoảng, chi tiết từng phút của phiên tạm ngừng giao dịch ngày 9 tháng 3 (bao gồm cả những phút bị thiếu trong dữ liệu, vốn là minh chứng rõ nhất trên trang này), các mã cổ phiếu giảm mạnh nhất, cùng diễn biến của trái phiếu Chính phủ (Treasuries) và thị trường options. Mọi con số đều được truy vấn từ cơ sở dữ liệu; bạn có thể mở rộng bất kỳ bảng nào để xem mã SQL.

Toàn bộ cuộc khủng hoảng trong một dòng

Trước ngày biến động lịch sử đó là một bản đồ dữ liệu. Một truy vấn về giá đóng cửa phiên giao dịch thường ngày của SPY đã xác định điểm đỉnh, điểm đáy, tốc độ giảm và sự phục hồi — cùng với các phép đo tương tự của thị trường gấu năm 2008 để so sánh quy mô.

Truy vấnĐợt sụt giảm COVID, từ đỉnh đến đáy đến phục hồi — giá đóng cửa hàng ngày của SPY, một hàng
Câu lệnh SQL chính xác đằng sau mỗi con số
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 dailies

Giá đóng cửa tại đỉnh của SPY là $338.31 vào ngày 2020-02-19. Giá đóng cửa tại đáy là $222.51 vào ngày 2020-03-23, thấp hơn -34.2% so với đỉnh — một thị trường gấu bị nén chặt chỉ trong 23 phiên giao dịch, tương đương 33 ngày lịch. Nhận định "mức sụt giảm 30% nhanh nhất lịch sử" thường được trích dẫn cũng được xác nhận trong cùng một dòng: giá đóng cửa của SPY lần đầu tiên giảm quá 30% so với đỉnh chỉ sau 22 phiên. Thị trường gấu năm 2008, nếu đo lường tương tự từ đỉnh đóng cửa tháng 10 năm 2007, cần tới 250 phiên để giảm cùng mức 30% đó. Những gì mất khoảng một năm vào năm 2008 thì chỉ mất khoảng một tháng vào năm 2020.

Khung thời gian của cuộc khủng hoảng, với mọi con số được trích xuất từ các bảng trên trang này:

  • Ngày 19 tháng 2 năm 2020 — mức đóng cửa kỷ lục của SPY, $338.31.
  • Ngày 9 tháng 3 — lần ngắt mạch (circuit breaker) toàn thị trường đầu tiên kể từ năm 1997; SPY đóng cửa giảm -7.7%. Chi tiết từng phút được ghi lại bên dưới.
  • Ngày 12, 16 và 18 tháng 3 — thêm ba lần tạm dừng giao dịch Level-1. Ngày 16 tháng 3 đóng cửa ở mức -11.6%, phiên tồi tệ nhất trong cuộc khủng hoảng.
  • Ngày 23 tháng 3 — mức đáy đóng cửa: $222.51, thấp hơn -34.2% so với đỉnh.
  • Ngày 24 tháng 3 — bước ngoặt. Đợt hồi phục nhờ gói kích thích ngày 24 tháng 3 ghi nhận sự thay đổi này.
  • 2020-08-18 — SPY đóng cửa vượt trên mức đỉnh của tháng Hai, sau 103 phiên kể từ mức đáy.

Ngày 9 tháng 3 năm 2020: phiên giao dịch kích hoạt ngắt mạch

Các lệnh ngắt mạch trên toàn thị trường dựa trên chỉ số S&P 500, vì vậy bảng này hiển thị việc tạm dừng giao dịch thông qua SPY — ETF mô phỏng S&P 500 — thay vì bất kỳ công cụ thay thế nào khác. Trong cuối tuần trước đó, việc định giá lại do đại dịch đã kết hợp với cú sốc cung dầu (chi tiết bên dưới), khiến thị trường không thể mở cửa một cách ổn định.

Truy vấnSPY ngày 9/3/2020 — phiên ngắt mạch (circuit-breaker), chi tiết giao dịch
Câu lệnh SQL chính xác đằng sau mỗi con số
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')

Hai con số quan trọng. Đầu tiên là mức gap: SPY mở cửa ở mức $275.3, thấp hơn -7.4% so với mức đóng cửa $297.42 của thứ Sáu — và chỉ trong vài phút đầu tiên, mức giảm của S&P 500 đã chạm ngưỡng Level-1 là 7%. Thứ hai, một con số tích cực hơn: chỉ có 376 nến phút trong phiên giao dịch thường thay vì 390 nến như thông thường. Dòng dữ liệu dừng lại sau 9:34 sáng: bắt đầu từ 09:35 ET, 14 phút liên tiếp không có nến nào được ghi nhận. Không có giao dịch nào diễn ra ở bất kỳ đâu. Khoảng trống trong dữ liệu chính là biểu hiện của việc ngắt mạch. Phiên giao dịch đóng cửa ở mức $274.4, giảm -7.7%, với khối lượng 304.6 triệu cổ phiếu.

Hình thái của một phiên giao dịch bị tạm dừng

Truy vấnSPY theo nửa giờ — phiên giao dịch bình thường ngày 9/3/2020
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Phiên mở cửa bao gồm cả cú sụt giảm, lệnh tạm dừng và sự hồi phục diễn ra cùng một lúc: mức thấp nhất là $273.5 chỉ chênh lệch vài cent so với mức thấp nhất cả ngày là $273.45 — mức giá lúc 14:44 ET chỉ đơn thuần là kiểm tra lại mức giá của buổi sáng. Sau khi mở cửa trở lại, biến động giá gần như không đáng kể: mọi mức giá đóng cửa mỗi nửa giờ đều nằm trong phạm vi vài đô la so với giá mở cửa lại, và thiệt hại trong ngày đã xảy ra ngay trong những phút đầu tiên. Khối lượng giao dịch cũng phản ánh điều tương tự theo chiều ngược lại — nửa giờ cuối cùng, với 46.7 triệu cổ phiếu, là khối lượng lớn nhất trong ngày khi các dòng lệnh đóng vị thế tập trung. Các cơ chế ngắt mạch (circuit breakers) được thiết kế để tạo ra chính xác hình thái này: ngăn chặn đà giảm sâu, buộc phải có một phiên đấu giá mở cửa lại, và để giao dịch liên tục tiếp diễn tại mức giá mới. Đồng hồ của thị trường hiện đã tích hợp vĩnh viễn cơ chế này.

Bốn lần tạm dừng giao dịch trong tám phiên

Ngày 9 tháng 3 mới chỉ là lần đầu tiên.

Truy vấnBốn phiên ngắt mạch (circuit-breaker) tháng 3/2020 — giá đóng cửa, mức thay đổi, volume của SPY
Câu lệnh SQL chính xác đằng sau mỗi con số
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_date

Các lệnh tạm dừng Level-1 cũng đã kích hoạt vào ngày 12 tháng 3 (đóng cửa ở mức -9.6%), ngày 16 tháng 3 (đóng cửa ở mức -11.6% tại $239.41 — mức giảm phần trăm trong một ngày lớn nhất của S&P kể từ năm 1987), và ngày 18 tháng 3 (tạm dừng trong phiên, đóng cửa ở mức -5.2%). Có bốn lần tạm dừng trên toàn thị trường trong tám ngày giao dịch, sau hai mươi ba năm không có lần nào. Hãy lưu ý điều chưa từng xảy ra: mọi lần tạm dừng đều là Level 1, mức 7%. Các mức 13% và 20% chưa bao giờ bị chạm tới — ngay cả vào ngày 16 tháng 3, đà giảm đã chậm lại sau khi tạm dừng và phiên giao dịch kết thúc trong phạm vi của đường Level-2.

Who fell hardest

An index number hides the dispersion underneath it. The same daily-close arithmetic, run across a handful of representative large-caps, shows where the crash actually landed — both on March 9 itself and across the full February 19 to March 23 slide.

Truy vấnBiến động ngày 9/3 và toàn bộ đợt sụt giảm — cruise, airline, energy, bank, tech, staples so với SPY
Câu lệnh SQL chính xác đằng sau mỗi con số
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

The hardest-hit name in the panel, CCL (Carnival, the cruise operator), lost -19.9% on March 9 alone and -72.3% peak to trough. United Airlines gave up -66.9% over the crash; ExxonMobil -47.9%; JPMorgan -42.6%. Against them, SPY's -34.2% looks almost gentle, Apple fell roughly with the market at -31%, and Walmart — groceries, essentials, open through lockdowns — finished the same window at just -2.9%. Travel and energy repriced for a stopped world; staples barely moved.

Tóm tắt về cuộc chiến giá dầu

Cuộc tranh chấp năng lượng nêu trên cần được giải thích ngắn gọn, vì thuật ngữ "cuộc chiến giá dầu" liên quan trực tiếp đến nửa còn lại của câu chuyện ngày 9 tháng 3. Các cuộc thảo luận về sản lượng của OPEC+ giữa Saudi Arabia và Nga đã kết thúc mà không đạt được thỏa thuận vào thứ Sáu, ngày 6 tháng 3 năm 2020. Trong cuối tuần đó, Saudi Arabia đã cắt giảm giá bán chính thức và thông báo kế hoạch tăng sản lượng trong bối cảnh nhu cầu đi lại đang sụt giảm mạnh — một cú sốc cung chồng lên cú sốc cầu. Thị trường chứng khoán mở cửa vào thứ Hai đã chịu tác động kép từ cả hai yếu tố, và kết quả được thể hiện trong bảng trên: ExxonMobil giảm -12.2% vào thứ Hai đó so với mức -7.7% của SPY.

Xu hướng tìm nơi trú ẩn an toàn — và tuần lễ phá vỡ quy luật

Thị trường cổ phiếu chỉ là một nửa câu chuyện. Nửa còn lại nằm ở thị trường trái phiếu Treasury, nơi xu hướng tìm nơi trú ẩn an toàn điển hình đã đạt mức kỷ lục — và sau đó, trong một tuần đáng chú ý, xu hướng này đã đảo ngược.

Truy vấnLợi suất Treasury 10 năm và 3 tháng qua đợt sụt giảm, giá đóng cửa hàng ngày
Câu lệnh SQL chính xác đằng sau mỗi con số
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 date

Lợi suất kỳ hạn 10 năm ở mức 1.56% tại thời điểm cổ phiếu đạt đỉnh vào ngày 19 tháng 2. Đến ngày 9 tháng 3 — phiên tạm dừng giao dịch — lợi suất đóng cửa ở mức 0.54%, mức thấp nhất mọi thời đại, khi người mua chấp nhận mức lãi suất nửa phần trăm một năm cho một thập kỷ để đổi lấy sự an toàn. Sau đó, mô hình này bị đảo ngược: tính đến ngày 18 tháng 3, lợi suất 10 năm tăng lên 1.18% trong khi cổ phiếu tiếp tục giảm — hiện tượng "chạy đua tìm tiền mặt" (dash for cash), một tuần mà các quỹ, công ty và các nhà đầu tư nước ngoài bán mọi tài sản có tính thanh khoản, bao gồm cả trái phiếu Treasury, để huy động đồng USD. Trong khi đó, kỳ phiếu 3 tháng đóng cửa vào ngày hôm đó ở mức 0.02% — các tài sản tương đương tiền bị đẩy về mức bằng không. Khi tài sản an toàn nhất và tài sản rủi ro nhất cùng giảm, thứ đang được mua chính là tính thanh khoản. Đường cong lợi suất sẽ lưu giữ sự kiện này vĩnh viễn trong lịch sử của nó.

Dữ liệu giao dịch options cho thấy điều gì

Các hợp đồng options niêm yết của SPY — công cụ phòng ngừa rủi ro chính của thị trường — đã ghi nhận sự hoảng loạn, và thời điểm diễn ra sự việc này là chi tiết đáng chú ý nhất.

Truy vấnSPY options: lượng giao dịch puts vs calls, 2–13/3/2020 (triệu hợp đồng)
Câu lệnh SQL chính xác đằng sau mỗi con số
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

Tỷ lệ khối lượng put/call đạt đỉnh ở mức 1.95 — gần hai hợp đồng put cho mỗi hợp đồng call — vào thứ Sáu, ngày 6 tháng 3, trước phiên tạm dừng giao dịch. Riêng trong ngày 9 tháng 3, có 4.35 triệu hợp đồng put được giao dịch so với 2.38 triệu hợp đồng call, tương ứng tỷ lệ 1.83. Đến ngày 12 tháng 3 — một phiên -9.6% — tỷ lệ này đã giảm xuống còn 1.32 khi khối lượng call tăng lên cùng với khối lượng put. Sự lệch về phía put mạnh nhất xuất hiện ở giai đoạn đầu của đợt sụt giảm, chứ không phải ở đáy: hoạt động mua bảo vệ diễn ra sớm, và các ngày giảm điểm lớn hơn sau đó được giao dịch với dữ liệu options cân bằng hơn giữa hai chiều.

Cơ chế hoạt động thực tế của lệnh tạm dừng giao dịch toàn thị trường

Vì các cơ chế này hiếm khi xảy ra nên có thể dễ bị quên: các ngưỡng ngắt mạch (breakers) toàn thị trường dựa trên mức giảm của S&P 500 so với giá đóng cửa phiên trước đó — mức giảm 7% (Level 1) và 13% (Level 2) sẽ kích hoạt lệnh tạm dừng 15 phút nếu chạm ngưỡng trước 3:25 pm ET; mức giảm 20% (Level 3) sẽ kết thúc phiên giao dịch ngay lập tức. Trong thời gian tạm dừng, không có giao dịch nào diễn ra trên bất kỳ sàn giao dịch nào; các lệnh sẽ được xếp hàng chờ phiên đấu giá mở lại, giúp tập trung nhu cầu tích lũy vào một mức giá duy nhất tương tự như phiên đấu giá mở cửa mỗi sáng. Thiết kế này ra đời sau vụ flash crash năm 2010, khi các ngưỡng cũ được chứng minh là quá lỏng lẻo và không thể kích hoạt ngay cả trong một đợt bán tháo liên hoàn thực sự.

Tháng 3 năm 2020 là lần thử nghiệm thực tế đầu tiên — và cho đến nay là duy nhất — của thiết kế này, và kết quả được thể hiện trong các bảng trên: bốn lần tạm dừng Level 1, mỗi lần đều được mở lại một cách trật tự, không có Level 2 hay Level 3 nào bị chạm tới, và thị trường vẫn hoạt động bình thường trong mọi phiên của 23 đợt sụt giảm mạnh nhất trong lịch sử của chỉ số này. Các quy tắc vẫn được giữ nguyên sau đó: các ngưỡng 7/13/20 dựa trên S&P 500 vẫn đang có hiệu lực cho đến nay. Hệ thống đã bị uốn cong, nhưng bộ máy vận hành vẫn đứng vững.

Câu hỏi thường gặp về đợt sụt giảm do COVID

Điều gì đã kích hoạt cơ chế ngắt mạch (circuit breaker) vào ngày 9 tháng 3 năm 2020?

Chỉ số S&P 500 đã giảm 7% so với mức đóng cửa trước đó — ngưỡng Level-1 trên toàn thị trường — chỉ trong vài phút mở cửa. Giao dịch bị tạm dừng 15 phút trên toàn thị trường, sau đó mở cửa trở lại thông qua hình thức đấu giá. Sự tạm dừng này được hiển thị trong biểu đồ phút của trang này với 14 thanh nến bị thiếu liên tiếp bắt đầu từ 09:35 ET.

Thị trường chứng khoán đã giảm bao nhiêu trong đợt sụt giảm do COVID?

Tính theo mức đóng cửa hàng ngày của SPY, mức giảm là -34.2% — từ $338.31 vào ngày 19 tháng 2 năm 2020 xuống $222.51 vào ngày 23 tháng 3 năm 2020, trải qua 23 phiên giao dịch.

Có bao nhiêu lần ngắt mạch đã được kích hoạt trong tháng 3 năm 2020?

Bốn lần tạm dừng Level-1 trên toàn thị trường: các ngày 9, 12, 16 và 18 tháng 3. Đây là những lần ngắt mạch đầu tiên kể từ tháng 10 năm 1997.

Có lần nào ngắt mạch Level 2 hoặc Level 3 bị kích hoạt trong năm 2020 không?

Không. Cả bốn lần tạm dừng trong năm 2020 đều là Level 1 (7%). Chưa có lần tạm dừng Level-2 (13%) hoặc Level-3 (20%) nào trên toàn thị trường được kích hoạt theo thiết kế hiện tại — ngay cả trong phiên tồi tệ nhất của đợt sụt giảm vào ngày 16 tháng 3 với mức giảm -11.6%.

Thị trường có phục hồi hoàn toàn sau đợt sụt giảm do COVID không?

Có. SPY đã đóng cửa trên mức đỉnh ngày 19 tháng 2 năm 2020 vào ngày 2020-08-18 — sau 103 phiên giao dịch kể từ mức thấp nhất ngày 23 tháng 3. Đây là một trong những đợt phục hồi hoàn toàn nhanh nhất từ một thị trường gấu (bear market) có độ sâu như vậy.


Mỗi bảng trên là một truy vấn đã được lưu trữ và phân phiên từ dữ liệu lịch sử — hãy mở rộng SQL để xem từng phép đo. Bạn muốn trải nghiệm ngày này thay vì chỉ đọc về nó? Đây là một trong các kịch bản có thể chơi được trong trình mô phỏng giao dịch Strasmore Labs.

#market history#covid crash#circuit breakers#spy