Strasmore Research
Аналитика Matt ConnorАвтор: Matt Connor · Обновлено 2026-07-24

Хронология Flash Crash 6 мая 2010 года

6 мая 2010 года рынок потерял почти один триллион долларов, но восстановился за 36 минут. Представляем подробную ленту торгов во время этого обвала.

6 мая 2010 года на фондовом рынке США произошел обвал, за которым последовало восстановление менее чем за полчаса. Это «мгновенное обрушение» (flash crash) остается одним из самых странных периодов торгов в современной истории рынка. Рыночная капитализация сократилась почти на триллион долларов, но большая часть стоимости вернулась на место. В процессе торгов акции известных компаний достигали цен в $0.01 и $100000 за акцию. Ниже представлены минутные данные, время, названия акций и SQL-запросы для каждого показателя. Вы можете развернуть любую панель, чтобы просмотреть SQL-код.

Обзор торгового дня

ЗапросSPY, 6 мая 2010 г. — день flash crash, данные ленты
Точный 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('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')

Рынок был в напряжении — все утро лента новостей была заполнена заголовками о греческом долге. Индекс SPY снижался с уровня открытия $116.26. Затем произошло резкое падение: дневной минимум составил $105 в 14:45 ET, что на -10.1% ниже предыдущего закрытия в $116.83. К моменту закрытия сессии SPY восстановился до $112.88 — падение за день составило -3.4%, однако это значение оказалось значительно выше нижней точки провала. Объем торгов составил 639.9 миллионов акций, что сделало этот день одним из самых высокообъемных для SPY за всю историю.

Обвал по минутам

Получасовые графики скрывают это событие; на минутном таймфрейме оно очевидно. Вот график SPY с 14:00 до 15:30 по восточному времени (ET):

ЗапросSPY, минутный график, 14:00–15:30 ET, 6 мая 2010 г.
Точный SQL-код для каждого числа
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

Совместный отчет SEC и CFTC фиксирует начало события примерно в 14:32 ET, когда крупная автоматизированная программа продаж начала исполнять ордер объемом около 75 000 фьючерсов E-mini S&P 500 (примерно на 4,1 миллиарда долларов), и завершила его примерно в 15:08, когда цены восстановились после основной части падения — всего тридцать шесть минут от начала до конца. График выше соответствует этой динамике. SPY завершил 14:32 минуту на уровне $113.15. Двенадцать минут спустя на 14:44 минуте было проторговано 9.21 миллионов акций — против 1.44 миллионов в спокойную минуту, такую как 14:05, — а на 14:45 минуте был зафиксирован дневной минимум $105. К концу 15:08 минуты SPY стоил $113.63 — выше уровня, с которого началось падение. Полный цикл колебаний занял около получаса.

В течение дня была одна остановка торгов, она длилась пять секунд. В 14:45:28 ET — в ту же минуту, когда был зафиксирован минимум выше — функция Stop Logic биржи CME приостановила торги фьючерсами E-mini, согласно официальному отчету; после возобновления торгов котировки вернулись. Рыночные механизмы защиты (circuit breakers) 2010 года были привязаны к индексу Dow с порогами в 10, 20 и 30 процентов; действовавшие тогда правила не предусматривали остановку торгов при десятипроцентном падении в столь позднее время сессии; ни один механизм не сработал. Механизмов защиты для отдельных акций еще не существовало — они стали одним из открытий этого дня.

Причины распродажи

Регуляторы всегда знали, кто был инициатором продаж. В отчете SEC–CFTC описывается один комплекс взаимных фондов — в прессе он упоминается как Waddell & Reed. Фонд использовал автоматизированный алгоритм для продажи контрактов E-mini. Скорость продаж зависела от объема торгов, без учета цены или времени. С ростом объема алгоритм ускорял продажи на рынке, где высокочастотные посредники перестали поглощать позиции и начали передавать их друг другу — это явление в отчете названо «эффектом горячей картошки». Пять лет спустя к событиям того дня привязалось второе имя: в апреле 2015 года власти США арестовали лондонского трейдера Navinder Singh Sarao. Его обвинили в спуфинге книги ордеров E-mini — он размещал заявки, которые не собирался исполнять — 6 мая и в сотни других дней. В 2016 году он признал вину, а в январе 2020 года был приговорен к наказанию. Значимость его ордеров в тот день остается предметом дискуссий; приведенный ниже структурный анализ от этого не зависит.

Где продажи были наиболее интенсивными

ЗапросМаксимальные падения за одну минуту — разница между открытием и минимумом, 14:00–15:30 ET
Точный SQL-код для каждого числа
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

За одну минуту цена упала на $5.72 от цены открытия до минимума — в 14:49 ET, при объеме в 4.98 миллионов акций за шестьдесят секунд. Данные ленты сделок демонстрируют очевидный факт: ценам необходимы устойчивые покупатели, а в течение нескольких минут их не было. Это наиболее наглядный пример того, как работает рыночный ордер — каждый стоп-лосс, сработавший в этот период, превратился в рыночный ордер, который искал предложения о покупке, которых не существовало. NBBO — это пульс рынка, и в тот день после обеда он остановился.

Один цент и 100 000 долларов: абсурдные сделки

Когда реальные заявки на покупку исчезли, новые ордера исполнялись по любым оставшимся котировкам, включая «заглушки» (stub quotes) маркетмейкеров, которые были далеки от рыночных цен. Лента сделок все еще содержит эти данные:

ЗапросАномальные сделки в ленте, 14:30–15:30 ET
Точный SQL-код для каждого числа
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), акции которой в тот день торговались в районе $41.49, зафиксировала 43 сделок по цене пять центов или ниже, достигнув минимума в $0.01. В другом направлении Apple показала 2 сделок по $100000 за акцию, а Sotheby's продемонстрировала аналогичный результат 2 раз.

Позже биржи отменили все сделки, цена которых отклонялась более чем на 60 процентов от справочной цены до обвала — именно это объясняет асимметрию в данных. Сделки ACN по цене в один цент были аннулированы, поэтому ее минимальное сохранившееся значение на минутной свече, $17.74, находится на -57.2% ниже справочной цены — как раз в пределах границы отмены. Procter & Gamble никогда не торговалась по «заглушкам»: ее худшая сделка за этот период, $39.37, была на -36.7% ниже справочной цены, поэтому все стоп-лоссы, исполнившиеся по этой цене, остались в силе. Сделки ACN по цене в один цент пересекли эту границу и были удалены; худшее исполнение P&G осталось внутри границы и было подтверждено. Это произвольное ограничение дало трейдерам больше информации о типах ордеров, чем любая печатная инструкция.

Масштаб ущерба

Те же временные интервалы, только данные по котировкам — минутные агрегаты, рассчитанные относительно цены каждой акции на 14:30:

ЗапросУбытки в период краха по активам — относительно уровня на 14:30 ET
Точный 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 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

Основное значение имеет разброс цен. Минимальная цена ACN оказалась на -57.2% ниже базового уровня, а у P&G — на -36.7%. При этом широкие ETF показали однозначное процентное падение: DIA, отслеживающий индекс Dow, снизился на -6.5%, а IWM — на -5.2%. Падение DIA в эти минуты было зафиксировано во всем мире как крупнейшее внутридневное падение индекса Dow в истории на тот момент. В последнем столбце указана динамика восстановления: все шесть активов закрылись в пределах трех процентов от уровня на 14:30, как если бы середина часа была лишь слухом.

How May 6 compares to other crash days

Set the flash crash against the other famous one-day wrecks in the minute-bar era (this equities tape reaches back to 2003; Black Monday 1987 predates it):

ЗапросПять известных сессий краха — глубина минимума и отскок (SPY)
Точный SQL-код для каждого числа
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

May 6, 2010 is not the deepest hole in the table: March 16, 2020 traded -12.4% below its prior close against -10.1% for the flash crash. But no other day comes close on the bounce. SPY closed 7.5% above its May 6 low, versus 3.9% for the next-best recovery in the set (August 24, 2015 — itself a mini flash crash) and just 1.7% and 0.9% on the Lehman-era and COVID crash days. A repricing stays down into the close; a liquidity hole snaps back the same afternoon.

Удержалась ли V-образная кривая?

Два фактора определяют характер обвала: скорость восстановления цены и был ли достигнут уровень панического минимума. Ответы на оба вопроса получены:

ЗапросПоследствия — время восстановления уровня закрытия 5 мая и пробоя панического минимума
Точный SQL-код для каждого числа
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
        )
    )
)

Восстановление произошло быстро: SPY закрылся выше уровня закрытия 5 мая в $116.83 всего через 4 сессий, а именно 2010-05-12. V-образная кривая удержалась — на какое-то время. Однако минимум мгновенного обвала не остался аномалией: через 37 сессий после обвала, 2010-06-29, SPY закрылся на уровне $104.22 — ниже панического минимума в $105 — во время распродажи суверенных долгов в Европе, которая доминировала тем летом. В этом и заключается ключевое различие: мгновенный обвал достиг этой цены за считанные минуты без новостного фона и последовал отскок; летнее падение продолжалось неделями и закрепилось. Цена — это то, по чему можно совершить сделку в данную секунду; стоимость — это то, что сохраняется после завершения торгового дня.

Последствия

В результате мгновенного обвала была сформирована современная система автоматических выключателей: лимиты Limit Up/Limit Down для отдельных акций и пересмотренный механизм приостановки торгов по всему рынку. Эти механизмы проявили себя в последующих кризисах (остановки в марте 2020 года являются их прямыми предшественниками). Были запрещены некорректные котировки (stub quotes); формализованы правила для явно ошибочных сделок; теперь крупные ордера на фьючерсы проходят проверку на соответствие рыночным ценам при исполнении. Структура рынка, на котором вы торгуете сегодня, была в значительной степени сформирована по итогам тех тридцати шести минут.

FAQ по мгновенному обвалу рынка (Flash crash)

Что стало причиной обвала 2010 года?

В официальном отчете SEC/CFTC указано, что причиной стала автоматическая программа продаж E-mini на сумму около $4,1 миллиарда. Программа исполнялась в условиях низкой ликвидности; высокочастотные посредники сначала увеличили объемы торгов, а затем вышли из рынка. В прессе называлось, что продавцом выступала компания по управлению взаимными фондами Waddell & Reed; позже трейдер Navinder Sarao был привлечен к ответственности за спуфинг на том же рынке в тот день. Версия биржевой ленты: ликвидность исчезла, и цены упали до ближайших заявок на покупку, иногда до одного цента.

Когда начался и когда закончился обвал?

Согласно данным регуляторов, временные рамки составляют от 14:32 по восточному времени (ET), когда начались автоматические продажи, до примерно 15:08, когда цены восстановились почти до уровней до обвала — всего 36 минут. Минимум по SPY был зафиксирован в 14:45 ET, что на -10.1% ниже предыдущего закрытия; восстановление до уровней до падения заняло около 23 минут с момента достижения дна.

Какие акции пострадали во время обвала 2010 года?

Упали почти все активы, но наиболее известными жертвами стали бумаги, заявки на покупку которых полностью исчезли: акции Accenture упали до $0.01, Apple и Sotheby's — до $100000, а Procter & Gamble торговались по $39.37, что на -36.7% ниже дневного уровня. Сделки, отклоняющиеся от цен до обвала более чем на 60 процентов, были аннулированы; сделки по P&G были подтверждены.

Приостанавливались ли торги во время обвала?

6 мая 2010 года общерыночные механизмы приостановки торгов (circuit breakers) не срабатывали — действовавшие тогда правила не предусматривали остановку при падении такого масштаба в столь позднее время сессии. Единственная пауза за день длилась пять секунд: механизм Stop Logic биржи CME кратковременно приостановил торги фьючерсами E-mini в 14:45:28 ET, в ту же минуту, когда индекс достиг минимума. Позже были введены механизмы приостановки торгов по отдельным акциям и лимиты Limit Up/Limit Down.

Может ли мгновенный обвал произойти снова?

Менее масштабные случаи уже случались: отдельные символы регулярно попадают под остановки LULD, а мини-обвалы повторяются. Рыночный обвал масштаба 2010 года пока сдерживается механизмами приостановки торгов, которые были созданы по его итогам. Прямой ответ заключается в том, что структурный фактор — ликвидность, которая может исчезнуть за миллисекунды, — является постоянным.

Примечания к данным

Полные примечания к данным
  • В минутном графике бар 15:09 содержит случайное значение 108.37 ниже минимума через несколько минут после восстановления. Этот же бар входит в таблицу самых резких минутных изменений. Это соответствует задержкам в отчетности, когда агрегированные данные фиксируют цену в минуту поступления. 6 мая таких случаев было много.
  • Отмененные сделки и агрегированные данные: в необработанном потоке сделок ACN указана цена $0.01, в то время как минутный минимум составляет $17.74. Агрегированные данные учитывают записи после отмены сделок, а необработанный поток содержит исходные данные.
  • В панели дисперсии «референс 2:30 pm» — это цена закрытия минутного бара каждой акции в рамках регулярной сессии не позднее 14:30 по восточному времени (ET); окно обвала длится с 14:31 до 15:15.
  • QQQ отсутствует в панелях сравнения активов: в 2010 году он торговался под тикером QQQQ.

Каждая панель выше представляет собой сохраненный версионный SQL-запрос к историческим данным — вы можете просмотреть код запроса, чтобы увидеть расчет каждого показателя. Хотите проторговать этот день вместо чтения отчета? Это один из сценариев в торговом симуляторе Strasmore Labs.