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 chi tiết vụ Flash Crash năm 2010

Ngày 6 tháng 5 năm 2010, gần một nghìn tỷ đô la vốn hóa đã biến mất và quay trở lại chỉ trong 36 phút. Xem lại mốc thời gian chi tiết của vụ flash crash.

Vào ngày 6 tháng 5 năm 2010, thị trường chứng khoán Mỹ đã sụp đổ rồi hồi phục chỉ trong vòng chưa đầy nửa giờ — một sự kiện flash crash, vẫn được coi là giai đoạn giao dịch kỳ lạ nhất trong lịch sử thị trường hiện đại. Gần một nghìn tỷ đô la vốn hóa thị trường đã biến mất rồi phần lớn quay trở lại; trong quá trình đó, các cổ phiếu phổ biến đã ghi nhận mức giá $0.01 và $100000 mỗi cổ phiếu. Dưới đây là dữ liệu chi tiết theo từng phút, mốc thời gian, các mã cổ phiếu — và truy vấn lưu trữ đằng sau mỗi con số. Bạn có thể mở rộng bất kỳ bảng nào để xem mã SQL.

Diễn biến trong ngày

Truy vấnSPY ngày 6/5/2010 — ngày flash crash, dữ liệu 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('2010-05-05 00:00:00') AND window_start < toDateTime('2010-05-06 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(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('2010-05-06 04:00:00') AND window_start < toDateTime('2010-05-06 23:59:00')

Thị trường đã ở trạng thái lo ngại — các tiêu đề tin tức về nợ của Hy Lạp xuất hiện liên tục suốt cả sáng — và SPY giảm dần từ mức mở cửa $116.26. Sau đó, đà giảm càng trầm trọng hơn: mức thấp nhất trong ngày đạt $105 vào lúc 14:45 ET, thấp hơn -10.1% so với mức đóng cửa trước đó là $116.83. Khi kết thúc phiên, SPY đã hồi phục lên mức $112.88 — tương đương -3.4% trong ngày, nhưng vẫn cao hơn nhiều so với mức đáy. Khối lượng giao dịch: 639.9 triệu cổ phiếu, một trong những phiên giao dịch có khối lượng lớn nhất của SPY trong kỷ nguyên này.

Diễn biến vụ sụt giảm theo từng phút

Biểu đồ nửa giờ không thể hiện rõ sự kiện này; nhưng ở độ phân giải một phút, nó hiện ra rất rõ ràng. Dưới đây là diễn biến của SPY từ 2:00 đến 3:30 chiều ET:

Truy vấnSPY theo khung thời gian 1 phút, 2:00–3:30 pm ET ngày 6/5/2010
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
    formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_minute,
    round(toFloat64(close), 2) AS close_usd,
    round(toFloat64(low), 2) AS low_usd,
    round(toFloat64(volume) / 1e6, 2) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= toDateTime('2010-05-06 18:00:00') AND window_start < toDateTime('2010-05-06 19:30:00')
ORDER BY window_start

Báo cáo phân tích sau sự kiện của SEC và CFTC xác định sự kiện bắt đầu vào khoảng 2:32 chiều ET, khi một chương trình bán tự động quy mô lớn bắt đầu thực hiện lệnh khoảng 75.000 hợp đồng E-mini S&P 500 futures (khoảng 4,1 tỷ USD), cho đến khoảng 3:08 chiều, khi giá trên diện rộng đã hồi phục phần lớn mức sụt giảm — kéo dài tổng cộng ba mươi sáu phút. Biểu đồ trên khớp với diễn biến đó. SPY kết thúc phút 14:32 ở mức $113.15. Mười hai phút sau, phút 14:44 có khối lượng giao dịch 9.21 triệu cổ phiếu — so với mức 1.44 triệu trong một phút bình thường như 14:05 — và phút 14:45 ghi nhận mức thấp nhất trong ngày là $105. Đến khi kết thúc phút 15:08, SPY đứng ở mức $113.63 — cao hơn mức bắt đầu đà giảm. Một chu kỳ biến động trọn vẹn chỉ trong khoảng nửa giờ.

Có một lệnh tạm dừng giao dịch trong ngày và nó kéo dài năm giây. Vào lúc 2:45:28 chiều ET — cùng trong phút ghi nhận mức thấp nhất ở trên — chức năng Stop Logic của CME đã tạm dừng giao dịch E-mini futures theo báo cáo chính thức, và các lệnh mua (bids) xuất hiện trở lại khi lệnh tạm dừng được gỡ bỏ. Các cơ chế ngắt mạch (circuit breakers) trên toàn thị trường năm 2010 được thiết lập theo chỉ số Dow với các ngưỡng 10, 20 và 30 phần trăm; các quy định có hiệu lực khi đó không quy định việc tạm dừng giao dịch đối với mức giảm mười phần trăm vào thời điểm muộn như vậy trong phiên; do đó không có lệnh ngắt mạch nào được kích hoạt. Các cơ chế ngắt mạch cho từng cổ phiếu riêng lẻ vẫn chưa tồn tại — chúng là một trong những phát kiến của ngày hôm nay.

Nguyên nhân gây ra đợt bán tháo

Các cơ quan quản lý chưa bao giờ thấy việc bán tháo là điều bí ẩn. Báo cáo của SEC–CFTC mô tả một nhóm quỹ tương hỗ duy nhất — được các báo chí xác định là Waddell & Reed — đã sử dụng một thuật toán tự động để bán các hợp đồng E-mini. Thuật toán này bán dựa trên tỷ lệ khối lượng, không quan tâm đến giá cả hay thời gian. Khi khối lượng giao dịch tăng vọt, thuật toán bán càng nhanh hơn, trong bối cảnh các trung gian giao dịch tần suất cao (high-frequency intermediaries) đã ngừng hấp thụ hàng tồn kho và bắt đầu đẩy qua lại lẫn nhau — hiện tượng mà báo cáo gọi là khối lượng "hot potato". Năm năm sau, một cái tên thứ hai được gắn với sự kiện này: các cơ quan chức năng Hoa Kỳ đã bắt giữ nhà giao dịch Navinder Singh Sarao tại London vào tháng 4 năm 2015, vì hành vi spoofing sổ lệnh E-mini — đặt các lệnh mà ông ta không bao giờ có ý định thực hiện — vào ngày 6 tháng 5 và hàng trăm ngày khác. Ông ta đã nhận tội vào năm 2016 và bị tuyên án vào tháng 1 năm 2020. Việc các lệnh của ông ta có tầm quan trọng lớn thế nào vào chiều hôm đó vẫn còn là chủ đề tranh luận; bài học về cấu trúc dưới đây không phụ thuộc vào điều đó.

Nơi áp lực bán diễn ra mạnh nhất

Truy vấnCác phút biến động mạnh nhất — mức giảm từ giá mở cửa đến giá thấp nhất, 2:00–3:30 pm ET
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
    formatDateTime(toTimeZone(window_start, 'America/New_York'), '%H:%i') AS et_minute,
    round(toFloat64(open), 2) AS minute_open,
    round(toFloat64(low), 2) AS minute_low,
    round(toFloat64(open) - toFloat64(low), 2) AS drop_within_minute_usd,
    round(toFloat64(volume) / 1e6, 2) AS shares_m
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'SPY'
  AND window_start >= toDateTime('2010-05-06 18:00:00') AND window_start < toDateTime('2010-05-06 19:30:00')
ORDER BY drop_within_minute_usd DESC
LIMIT 5

Phút tồi tệ nhất chứng kiến mức giảm $5.72 từ giá mở cửa xuống mức thấp nhất — vào lúc 14:49 ET, với khối lượng 4.98 triệu cổ phiếu chỉ trong sáu mươi giây. Những gì dữ liệu giao dịch cho thấy rất rõ ràng: giá cả cần những người mua sẵn sàng khớp lệnh, và trong vài phút đó, không hề có người mua nào. Đây là minh chứng rõ nhất để hiểu cơ chế của lệnh market order — mọi lệnh stop-loss được kích hoạt trong khoảng thời gian đó đều trở thành lệnh market order đi tìm các mức giá mua (bids) vốn không hề tồn tại. NBBO là nhịp đập của thị trường, và chiều hôm đó, nhịp đập ấy đã ngừng lại.

Một xu và 100.000 USD: những mức giá phi lý

Khi các lệnh mua thực tế biến mất, các lệnh mới đổ vào khớp với bất kỳ mức giá nào còn sót lại — bao gồm cả các "stub quotes" (giá chào tạm thời) của nhà tạo lập thị trường được đặt cách xa mọi mức giá hợp lý. Dòng dữ liệu giao dịch vẫn còn lưu lại những mức giá đó:

Truy vấnCác lệnh giao dịch bất thường trên tape, 2:30–3:30 pm ET
Câu lệnh SQL chính xác đằng sau mỗi con số
SELECT
    ticker,
    round(min(toFloat64(price)), 2) AS lowest_print,
    round(max(toFloat64(price)), 2) AS highest_print,
    countIf(toFloat64(price) <= 0.05) AS penny_prints,
    countIf(toFloat64(price) >= 99999) AS hundred_k_prints,
    count() AS prints
FROM global_markets.stocks_trades
WHERE ticker IN ('ACN', 'AAPL', 'BID', 'PG')
  AND sip_timestamp >= toDateTime('2010-05-06 18:30:00') AND sip_timestamp < toDateTime('2010-05-06 19:30:00')
GROUP BY ticker
ORDER BY ticker ASC

Accenture (ACN), một công ty tư vấn từng giao dịch quanh mức $41.49 chiều hôm đó, đã ghi nhận 43 giao dịch ở mức năm xu hoặc thấp hơn, chạm đáy ở mức $0.01. Ở chiều ngược lại, Apple ghi nhận 2 giao dịch ở mức $100000 mỗi cổ phiếu, và Sotheby's cũng ghi nhận mức tương tự 2 lần.

Các sàn giao dịch sau đó đã hủy mọi giao dịch được thực hiện cách xa hơn 60 phần trăm so với giá tham chiếu trước khi sụp đổ — và ranh giới đó giải thích cho sự bất đối xứng trong hồ sơ. Các mức giá một xu của ACN đã bị xóa bỏ, vì vậy mức thấp nhất của thanh nến một phút còn tồn tại là $17.74, nằm dưới mức tham chiếu -57.2% — vừa đủ trong phạm vi bị hủy. Procter & Gamble chưa bao giờ giao dịch ở mức stub: giao dịch tệ nhất của hãng trong giai đoạn này là $39.37, thấp hơn -36.7% so với mức tham chiếu, vì vậy mọi lệnh stop-loss bán ở đó đều được khớp. Các mức giá một xu của ACN đã vượt quá ranh giới đó và bị xóa; mức khớp lệnh tệ nhất của P&G vẫn nằm trong ranh giới đó và được giữ lại. Ranh giới tùy ý này đã dạy cho các nhà giao dịch về các loại lệnh nhiều hơn bất kỳ tài liệu nào từng được in ra.

How wide the damage spread

Same window, honored tape only — the minute aggregates, measured from each name's 2:30 pm price:

Truy vấnThiệt hại trong khung giờ crash theo mã — so với mốc tham chiếu 2:30 pm ET
Câu lệnh SQL chính xác đằng sau mỗi con số
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 870), 2) AS pre_crash_1430,
    round(minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 871 AND 915), 2) AS crash_low,
    round((minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 871 AND 915) / argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 870) - 1) * 100, 1) AS low_vs_1430_pct,
    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 871 AND 915), 'America/New_York'), '%H:%i') AS low_et,
    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) / argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 870) - 1) * 100, 1) AS close_vs_1430_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('ACN', 'PG', 'MMM', 'IWM', 'DIA', 'SPY')
  AND window_start >= toDateTime('2010-05-06 04:00:00') AND window_start < toDateTime('2010-05-06 23:59:00')
GROUP BY ticker
ORDER BY low_vs_1430_pct ASC

The dispersion is the story. ACN's surviving low sat -57.2% under its reference and P&G's -36.7%, while the broad ETFs bottomed single-digit percentages down — DIA, the Dow-tracking ETF, -6.5% and IWM -5.2%. Those DIA minutes were reported around the world as the largest intraday point drop in the Dow's history to that date. The last column is the recovery receipt: each of the six closed within about three percent of its 2:30 pm level, as if the middle hour had been a rumor.

So sánh ngày 6 tháng 5 với các ngày sụt giảm khác

Hãy so sánh vụ flash crash này với các đợt sụt giảm trong một ngày nổi tiếng khác trong kỷ nguyên dữ liệu theo phút (dữ liệu cổ phiếu này bắt đầu từ năm 2003; còn ngày Thứ Hai Đen tối 1987 diễn ra trước đó):

Truy vấnNăm phiên crash nổi tiếng — mức giảm sâu nhất và đà hồi phục (SPY)
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH daily AS (
    SELECT
        toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
        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,
        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 rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND ((window_start >= toDateTime('2008-09-26 04:00:00') AND window_start < toDateTime('2008-09-30 00:00:00'))
        OR (window_start >= toDateTime('2010-05-05 04:00:00') AND window_start < toDateTime('2010-05-07 00:00:00'))
        OR (window_start >= toDateTime('2015-08-21 04:00:00') AND window_start < toDateTime('2015-08-25 00:00:00'))
        OR (window_start >= toDateTime('2018-02-02 04:00:00') AND window_start < toDateTime('2018-02-06 00:00:00'))
        OR (window_start >= toDateTime('2020-03-13 04:00:00') AND window_start < toDateTime('2020-03-17 00:00:00')))
    GROUP BY et_date
)
SELECT
    toString(et_date) AS session,
    round((rth_low / prev_close - 1) * 100, 1) AS low_vs_prior_pct,
    round((rth_close / prev_close - 1) * 100, 1) AS close_vs_prior_pct,
    round((rth_close / rth_low - 1) * 100, 1) AS bounce_off_low_pct
FROM (
    SELECT et_date, rth_low, rth_close,
           lagInFrame(rth_close) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_close
    FROM daily
)
WHERE et_date IN (toDate('2008-09-29'), toDate('2010-05-06'), toDate('2015-08-24'), toDate('2018-02-05'), toDate('2020-03-16'))
ORDER BY et_date

Ngày 6 tháng 5 năm 2010 không phải là ngày có mức giảm sâu nhất trong bảng: Ngày 16 tháng 3 năm 2020 đã giao dịch thấp hơn -12.4% so với mức đóng cửa trước đó, tương đương với -10.1% của vụ flash crash. Tuy nhiên, không có ngày nào có mức hồi phục ấn tượng như vậy. SPY đóng cửa cao hơn 7.5% so với mức thấp nhất ngày 6 tháng 5, trong khi mức hồi phục tốt thứ hai trong danh sách là 3.9% (ngày 24 tháng 8 năm 2015 — bản thân nó cũng là một vụ mini flash crash) và chỉ đạt 1.7% và 0.9% vào các ngày sụt giảm thời kỳ Lehman và COVID. Một đợt định giá lại sẽ duy trì ở mức thấp cho đến khi đóng cửa; trong khi một lỗ hổng thanh khoản sẽ bật tăng trở lại ngay trong cùng buổi chiều đó.

Mô hình V có được duy trì không?

Hai câu hỏi sẽ quyết định một đợt sụt giảm thực sự là gì: giá cũ hồi phục nhanh đến mức nào, và liệu mức đáy hoảng loạn có bao giờ được giao dịch trở lại hay không. Cả hai đều đã có câu trả lời rõ ràng:

Truy vấnHệ quả — thời điểm lấy lại mức đóng cửa ngày 5/5, và khi mức thấp hoảng loạn bị phá vỡ thực sự
Câu lệnh SQL chính xác đằng sau mỗi con số
WITH
    (
        SELECT minIf(toFloat64(low), (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('2010-05-06 04:00:00') AND window_start < toDateTime('2010-05-07 00:00:00')
    ) AS flash_low
SELECT
    round(any(flash_low), 2) AS flash_crash_low,
    round(any(may5_close), 2) AS may5_close,
    toString(any(first_above_date)) AS first_close_above_may5,
    countIf(et_date > toDate('2010-05-06') AND et_date <= first_above_date) AS sessions_until_reclaim,
    toString(any(first_below_date)) AS first_close_below_low,
    round(anyIf(close_usd, et_date = first_below_date), 2) AS close_that_session,
    countIf(et_date > toDate('2010-05-06') AND et_date <= first_below_date) AS sessions_until_break
FROM (
    SELECT et_date, close_usd, flash_low, may5_close,
           min(if(et_date > toDate('2010-05-06') AND close_usd < flash_low, et_date, toDate('2100-01-01'))) OVER () AS first_below_date,
           min(if(et_date > toDate('2010-05-06') AND close_usd > may5_close, et_date, toDate('2100-01-01'))) OVER () AS first_above_date
    FROM (
        SELECT et_date, close_usd, flash_low,
               max(if(et_date = toDate('2010-05-05'), close_usd, 0)) OVER () AS may5_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,
                flash_low
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPY'
              AND window_start >= toDateTime('2010-05-05 04:00:00') AND window_start < toDateTime('2011-01-01 00:00:00')
            GROUP BY et_date
        )
    )
)

Sự hồi phục diễn ra nhanh chóng: SPY đóng cửa vượt lại mức đóng cửa ngày 5 tháng 5 là $116.83 chỉ 4 phiên sau đó, vào ngày 2010-05-12. Mô hình V đã được duy trì — trong một thời gian. Tuy nhiên, mức đáy của đợt flash-crash không phải là một sự bất thường nhất thời: 37 phiên sau đợt sụt giảm, vào ngày 2010-06-29, SPY đã đóng cửa ở mức $104.22 — thấp hơn mức đáy hoảng loạn $105 — trong đợt bán tháo nợ công tại châu Âu thống trị mùa hè năm đó. Điểm khác biệt chính là ở đây: đợt flash crash chạm mức giá đó chỉ trong vài phút, không có tin tức gì và sau đó bật tăng; còn đợt sụt giảm mùa hè mất nhiều tuần để chạm mức đó và duy trì ở đó. Giá là mức bạn có thể giao dịch ngay giây phút này; giá trị là thứ tồn tại sau một buổi chiều.

Những thay đổi sau đó

Cú sụt giảm chớp nhoáng (flash crash) đã tạo ra cơ chế ngắt mạch (circuit-breaker) hiện đại: các dải Limit Up/Limit Down cho từng cổ phiếu riêng lẻ và các quy định tạm dừng giao dịch trên toàn thị trường được sửa đổi. Cơ chế này đã được thể hiện rõ trong các cuộc khủng hoảng sau đó (các đợt tạm dừng giao dịch vào tháng 3 năm 2020 là hệ quả trực tiếp của nó). Các lệnh giá ảo (stub quotes) đã bị cấm; các quy tắc về giao dịch sai sót rõ rệt đã được chính thức hóa; các lệnh futures lớn hiện phải chịu sự kiểm soát thực thi dựa trên mức giá. Cấu trúc thị trường mà bạn đang giao dịch ngày nay phần lớn được hình thành sau ba mươi sáu phút đó.

Câu hỏi thường gặp về flash crash

Nguyên nhân gây ra vụ flash crash năm 2010 là gì?

Báo cáo chính thức từ SEC/CFTC mô tả một chương trình bán tự động E-mini trị giá khoảng 4,1 tỷ USD được thực hiện trong điều kiện thanh khoản mỏng, với các trung gian giao dịch tần suất cao (high-frequency) ban đầu làm tăng khối lượng giao dịch rồi sau đó rút lui. Các báo chí đã xác định bên bán là công ty quỹ tương hỗ Waddell & Reed; trader Navinder Sarao sau đó đã bị truy tố vì hành vi spoofing trên chính thị trường đó vào ngày hôm đó. Góc nhìn từ dữ liệu giao dịch cho thấy: thanh khoản biến mất, và giá giảm xuống bất kỳ mức bid nào tiếp theo đang chờ sẵn — đôi khi chỉ là một penny.

Vụ flash crash bắt đầu và kết thúc lúc mấy giờ?

Mốc thời gian của các cơ quan quản lý kéo dài từ khoảng 2:32 chiều ET, khi việc bán tự động bắt đầu, đến khoảng 3:08 chiều, khi giá chung đã hồi phục phần lớn mức giảm — tổng cộng 36 phút. Mức thấp nhất của SPY được ghi nhận tại 14:45 ET, thấp hơn -10.1% so với giá đóng cửa trước đó, và quá trình hồi phục về mức trước khi giảm mất khoảng 23 phút kể từ đáy.

Những cổ phiếu nào bị ảnh hưởng trong vụ flash crash năm 2010?

Hầu hết mọi thứ đều giảm, nhưng những thiệt hại nổi tiếng nhất thuộc về các mã có lệnh bid biến mất hoàn toàn: Accenture ghi nhận mức thấp nhất là $0.01, Apple và Sotheby's ghi nhận ở mức $100000, và Procter & Gamble giao dịch xuống mức $39.37 — thấp hơn -36.7% so với mức giá buổi chiều. Các giao dịch chênh lệch hơn 60 phần trăm so với giá trước khi crash đã bị hủy; các lệnh khớp của P&G vẫn được giữ nguyên.

Giao dịch có bị tạm dừng trong vụ flash crash không?

Không có cơ chế ngắt mạch (circuit breaker) trên toàn thị trường nào được kích hoạt vào ngày 6 tháng 5 năm 2010 — các quy tắc có hiệu lực vào thời điểm đó quy định không tạm dừng đối với mức giảm lớn như vậy vào thời điểm muộn như vậy trong phiên. Sự tạm dừng duy nhất trong ngày chỉ kéo dài năm giây: cơ chế Stop Logic của CME đã tạm dừng ngắn hạn các hợp đồng tương lai E-mini vào lúc 2:45:28 chiều ET, cùng phút với mức thấp nhất của chỉ số. Các cơ chế ngắt mạch cho từng cổ phiếu riêng lẻ và các dải Limit Up/Limit Down đã được tạo ra sau đó.

Flash crash có thể xảy ra lần nữa không?

Các phiên bản nhỏ hơn đã xảy ra — các mã riêng lẻ thường xuyên chạm ngưỡng tạm dừng LULD, và các sự kiện flash nhỏ vẫn tái diễn. Phiên bản quy mô toàn thị trường như năm 2010 cho đến nay đã được kiểm soát bởi các cơ chế tạm dừng được tạo ra từ chính sự kiện đó. Câu trả lời thực tế là yếu tố cấu trúc — thanh khoản có thể rút lui trong vài mili giây — là yếu tố tồn tại vĩnh viễn.

Ghi chú dữ liệu

Ghi chú dữ liệu đầy đủ
  • Thanh nến 15:09 trong bảng dữ liệu theo từng phút có mức thấp bất thường 108.37 ngay sau khi phục hồi. Thanh nến này cũng xuất hiện trong danh sách các biến động mạnh nhất theo từng phút — điều này nhất quán với các lệnh khớp trễ, vốn được các số liệu tổng hợp ghi nhận vào phút mà chúng được gửi đến. Ngày 6 tháng 5 có rất nhiều trường hợp như vậy.
  • Các giao dịch bị hủy và số liệu tổng hợp: Dữ liệu thô của ACN cho thấy các mức giá $0.01 trong khi mức thấp của thanh nến phút là $17.74 — các số liệu tổng hợp theo phút phản ánh hồ sơ sau khi đã hủy lệnh, còn dữ liệu giao dịch thô phản ánh các mức giá gốc.
  • "Mốc tham chiếu 2:30 pm" trong bảng phân tán là mức giá đóng cửa của thanh nến cuối cùng trong phiên giao dịch bình thường của mỗi mã vào hoặc trước 2:30 pm ET; khung thời gian sụt giảm là từ 2:31–3:15 pm.
  • QQQ không có mặt trong các bảng so sánh giữa các mã: vào năm 2010, mã này được giao dịch dưới ticker QQQQ.

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