Strasmore Research
Analizy Matt ConnorAutor: Matt Connor · Zaktualizowano 2026-07-24

Krach COVID 2020 i cztery przerwy w handlu

Analiza krachu z 2020 roku: cztery mechanizmy circuit-breaker w osiem dni oraz przebieg indeksu S&P 500 od szczytu do dołka. Szczegółowe dane o rynku.

Krach wywołany COVID w 2020 roku spowodował spadek indeksu S&P 500 z rekordowego poziomu zamknięcia z 19 lutego do -34.2% straty od szczytu do dołka w ciągu 23 dni handlowych. W tym okresie nastąpiły cztery całkowite wstrzymania handlu (circuit-breakers), co stanowi pierwszy taki przypadek od 1997 roku. Niniejsza strona przedstawia pełny przebieg wydarzeń: mapę krachu, przebieg sesji z 9 marca minuta po minucie (wliczając w to brakujące w danych minuty, które stanowią najważniejszy dowód na tej stronie), spółki, których kursy spadły najbardziej, oraz zachowanie obligacji skarbowych i rynku opcji w tym czasie. Każda liczba pochodzi z zapytania bazodanowego; po rozwinięciu dowolnego panelu można zobaczyć kod SQL.

Cały krach w jednym wierszu

Mapa przed słynnym pojedynczym dniem. Jedno zapytanie dotyczące zamknięć sesji regularnych SPY wskazuje szczyt, dno, tempo oraz odbicie — wraz z tym samym pomiarem wykonanym dla bessy z 2008 roku w celu porównania skali.

ZapytanieKrach COVID: od szczytu do dołka i odbicia — zamknięcia dzienne SPY, jeden wiersz
Dokładny kod SQL dla każdej liczby
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

Szczytowe zamknięcie SPY wyniosło $338.31 dnia 2020-02-19. Zamknięcie na dnie wyniosło $222.51 dnia 2020-03-23, co stanowi -34.2% poniżej szczytu — bessa skondensowana w 23 sesjach handlowych, 33 dniach kalendarzowych. Często cytowane stwierdzenie o „najszybszym trzydziestoprocentowym spadku odnotowanym w historii” znajduje potwierdzenie w tym samym wierszu: zamknięcie SPY po raz pierwszy spadło o 30% poniżej szczytu już po 22 sesjach. Bessa z 2008 roku, mierzona w ten sam sposób od szczytowego zamknięcia w październiku 2007 roku, potrzebowała 250 sesji, aby stracić tyle samo 30%. To, co w 2008 roku zajęło około roku, w 2020 roku zajęło około miesiąca.

Chronologiczne zestawienie krachu, gdzie każda liczba pochodzi z paneli na tej stronie:

  • 19 lutego 2020 — rekordowe zamknięcie SPY, $338.31.
  • 9 marca — pierwszy od 1997 roku mechanizm circuit breaker na całym rynku; zamknięcie SPY spadło o -7.7%. Szczegóły poniżej, minuta po minucie.
  • 12, 16 i 18 marca — trzy kolejne wstrzymania handlu Level-1. 16 marca zamknięcie wyniosło -11.6%, co było najgorszą pojedynczą sesją podczas krachu.
  • 23 marca — najniższe zamknięcie: $222.51, -34.2% od szczytu.
  • 24 marca — odwrócenie trendu. Rally stymulowane pakietem pomocowym z 24 marca dominuje w tych danych.
  • 2020-08-18 — SPY ponownie zamyka się powyżej szczytu z lutego, 103 sesji po dnie.

9 marca 2020: sesja, która uruchomiła mechanizm wyłącznika bezpieczeństwa

Mechanizmy wyłącznika bezpieczeństwa (circuit breakers) na całym rynku są uzależnione od indeksu S&P 500, dlatego niniejsza tabela przedstawia wstrzymanie handlu na podstawie SPY — funduszu ETF na S&P 500 — a nie innego wskaźnika zastępczego. W poprzedni weekend wycena pandemiczna zderzyła się z szokiem podażowym na rynku ropy naftowej (szczegóły poniżej), przez co rynek nie rozpoczął handlu w uporządkowany sposób.

ZapytanieSPY 9 marca 2020 — sesja z mechanizmem circuit-breaker, dane archiwalne
Dokładny kod SQL dla każdej liczby
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')

Dwie kluczowe wartości na wstępie. Po pierwsze, luka: SPY otworzył się na poziomie $275.3, czyli o -7.4% poniżej piątkowego zamknięcia wynoszącego $297.42 — a w ciągu pierwszych minut spadek indeksu S&P 500 osiągnął próg 7% poziomu Level-1. Po drugie, wartość pozytywna: 376 minutowych słupków sesji regulowanej zamiast standardowych 390. Rejestracja transakcji została przerwana po godzinie 9:34 rano: począwszy od 09:35 ET, 14 kolejnych minut nie wygenerowało żadnych słupków. Na żadnym rynku nie doszło do transakcji. Luka w danych stanowi bezpośredni dowód na uruchomienie mechanizmu wyłącznika bezpieczeństwa. Sesja zamknęła się na poziomie $274.4, co oznacza spadek o -7.7% przy obrocie wynoszącym 304.6 milionów akcji.

Przebieg sesji z przerwą w handlu

ZapytanieSPY w interwałach 30-minutowych — sesja regularna 9 marca 2020
Dokładny kod SQL dla każdej liczby
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

Pierwszy segment sesji obejmuje gwałtowny spadek, przerwę w handlu oraz wznowienie transakcji: dołek na poziomie $273.5 znajduje się zaledwie kilka centów powyżej najniższego poziomu całego dnia wynoszącego $273.45 — popołudniowy odczyt o godzinie 14:44 ET stanowił jedynie ponowne przetestowanie poziomu z rana. Po wznowieniu handlu kurs nie wykazywał znaczących ruchów: każde zamknięcie półgodzinne oscylowało w granicach kilku USD od ceny wznowienia, a główne spadki nastąpiły w pierwszych minutach sesji. Wolumen potwierdził tę tendencję — ostatnia półgodzina, przy obrocie rzędu 46.7 milionów akcji, była najbardziej aktywnym okresem dnia ze względu na napływ zleceń przed zamknięciem. Mechanizmy circuit breakers mają za zadanie wywołać właśnie taką sytuację: zatrzymać gwałtowny spadek, wymusić aukcję wznowienia i umożliwić kontynuację handlu ciągłego na nowo wycenionym poziomie. Zegar rynku posiada obecnie trwale zaimplementowane te mechanizmy.

Cztery przerwy w ciągu ośmiu sesji

9 marca była dopiero pierwszą.

ZapytanieCztery sesje circuit-breaker marca 2020 — zamknięcia SPY, zmiana, wolumen
Dokładny kod SQL dla każdej liczby
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

Przerwy typu Level-1 wystąpiły również 12 marca (zamknięcie na poziomie -9.6%), 16 marca (zamknięcie na poziomie -11.6% przy 239.41 USD — największy jednodniowy spadek procentowy wskaźnika S&P 500 od 1987 roku) oraz 18 marca (przerwa w trakcie sesji, zamknięcie na poziomie -5.2%). Odnotowano cztery przerwy obejmujące cały rynek w ciągu ośmiu dni handlowych, po dwudziestu trzech latach bez takiej sytuacji. Należy zauważyć, co się nie wydarzyło: każda przerwa była stopniem Level 1, czyli progiem 7%. Progi 13% i 20% nie zostały osiągnięte — nawet 16 marca spadki wyhamowały po przerwie, a sesja zakończyła się w granicach poziomu Level-2.

Kto stracił najwięcej

Wskaźnik indeksowy ukrywa rozrzut wyników poszczególnych spółek. Porównanie zamknięć sesji dla wybranych reprezentatywnych spółek typu large-cap pokazuje rzeczywistą skalę spadków — zarówno w dniu 9 marca, jak i w całym okresie spadkowym od 19 lutego do 23 marca.

ZapytanieRuchy 9 marca i pełnego krachu — cruise, airline, energy, bank, tech, staples vs SPY
Dokładny kod SQL dla każdej liczby
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

Największą stratę w zestawieniu odnotował CCL (Carnival, operator linii wycieczkowych), który stracił -19.9% tylko 9 marca, a w całym cyklu od szczytu do dołka spadł o -72.3%. United Airlines straciło -66.9% podczas krachu; ExxonMobil -47.9%; JPMorgan -42.6%. W porównaniu do nich, spadek SPY na poziomie -34.2% wydaje się łagodny, Apple spadło wraz z rynkiem o około -31%, natomiast Walmart — sektor produktów spożywczych i podstawowych dóbr pierwszej potrzeby, działający podczas lockdownów — zamknął ten sam okres ze spadkiem wynoszącym zaledwie -2.9%. Sektor podróży i energii przeszedł wycenę ze względu na wstrzymanie aktywności na świecie; dobra podstawowe niemal nie zmieniły wartości.

Wojna cenowa na rynku ropy naftowej – skrót

Powyższy spór energetyczny wymaga wyjaśnienia, ponieważ termin „wojna cenowa na rynku ropy” stanowi drugą część wydarzeń z 9 marca. Negocjacje OPEC+ dotyczące produkcji między Arabią Saudyjską a Rosją zakończyły się bez porozumienia w piątek, 6 marca 2020 roku. W trakcie weekendu Arabia Saudyjska obniżyła oficjalne ceny sprzedaży i ogłosiła plany zwiększenia wydobycia w sytuacji, gdy popyt na podróże już gwałtownie spadał — był to szok podażowy nałożony na szok popytowy. Poniedziałkowe otwarcie rynku akcji odzwierciedliło oba te zjawiska jednocześnie, co widać w powyższej tabeli: ExxonMobil spadło o -12.2% w ten poniedziałek względem -7.7% indeksu SPY.

Ucieczka do bezpieczeństwa — i tydzień, który przełamał schemat

Akcje stanowiły tylko połowę obrazu sytuacji. Drugą połową był rynek obligacji skarbowych, gdzie klasyczna ucieczka do bezpieczeństwa osiągnęła rekordowy poziom — a następnie, przez jeden niezwykły tydzień, nastąpiło odwrócenie tego trendu.

ZapytanieRentowności obligacji skarbowych 10-letnich i 3-miesięcznych w trakcie krachu, zamknięcia dzienne
Dokładny kod SQL dla każdej liczby
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

Rentowność 10-letnich obligacji wynosiła 1.56% w szczycie na rynku akcji z 19 lutego. Do 9 marca — sesji wstrzymania handlu — zamknęła się na poziomie 0.54%, co stanowiło historyczne minimum, przy czym kupujący akceptowali pół procenta rocznie przez dekadę w zamian za bezpieczeństwo. Następnie trend uległ odwróceniu: do 18 marca rentowność 10-letnich obligacji wzrosła do 1.18%, podczas gdy akcje nadal spadały — był to tzw. „wyścig po gotówkę”, tydzień, w którym fundusze, spółki i zagraniczni posiadacze sprzedawali wszelkie płynne aktywa, w tym obligacje skarbowe, aby pozyskać USD. W tym samym czasie 3-miesięczna nota zamknięła się tego dnia na poziomie 0.02% — ekwiwalenty gotówki przytwierdzone do zera. Gdy najbezpieczniejsze i najbardziej ryzykowne aktywo spadają jednocześnie, przedmiotem zakupu staje się sama płynność. Krzywa dochodowości trwale odnotowuje to wydarzenie w swojej historii.

Co wynika z rejestru opcji

Opcje notowane na SPY — główny instrument służący do zabezpieczania pozycji na rynku — odzwierciedliły panikę, a kluczowy jest moment jej wystąpienia.

ZapytanieOpcje SPY: obrót puts vs calls, 2–13 marca 2020 (miliony kontraktów)
Dokładny kod SQL dla każdej liczby
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

Wskaźnik wolumenu opcji sprzedaży do opcji kupna osiągnął szczyt na poziomie 1.95 — niemal dwie opcje sprzedaży na każdą opcję kupna — w piątek, 6 marca, przed sesją po wznowieniu handlu. W samym dniu 9 marca, sprzedano 4.35 mln opcji sprzedaży wobec 2.38 mln opcji kupna, co daje wskaźnik 1.83. Do 12 marca — sesji o wolumenie -9.6% — wskaźnik spadł do 1.32, ponieważ wolumen opcji kupna wzrósł równolegle do opcji sprzedaży. Największa przewaga opcji sprzedaży wystąpiła na początku spadków, a nie na ich dnie: zabezpieczenia kupowano wcześnie, natomiast późniejsze, większe spadki charakteryzowały się bardziej zrównoważowanym obrotem na rynku opcji.

Jak w praktyce działają przerwy w handlu na całym rynku

Mechanizm ten rzadko jest stosowany, przez co zasady mogą wydawać się nieznane: mechanizmy zabezpieczające (circuit breakers) aktywują się w oparciu o spadek indeksu S&P 500 względem poprzedniego zamknięcia. Spadek o 7% (Level 1) oraz 13% (Level 2) powoduje piętnastominutową przerwę w handlu, jeśli zostanie osiągnięty przed godziną 3:25 pm ET; spadek o 20% (Level 3) oznacza natychmiastowe zakończenie sesji. Podczas przerwy na żadnej giełdzie nie dochodzi do transakcji; zlecenia oczekują na aukcję ponownego otwarcia, która koncentruje zgromadzony popyt i podaż w jednej cenie, podobnie jak aukcja otwarcia każdego ranka. Ten model wprowadzono po flash crash z 2010 roku, kiedy to okazało się, że starsze progi były zbyt wysokie, aby zadziałać nawet podczas gwałtownego załamania.

Marzec 2020 roku był pierwszym — i dotychczas jedynym — praktycznym testem tego systemu, a jego skuteczność potwierdzają powyższe panele: odnotowano cztery przerwy typu Level-1, z których każda zakończyła się uporządkowanym wznowieniem handlu. Nie osiągnięto progów Level 2 ani Level 3, a rynek funkcjonował podczas każdej z 23 sesji w trakcie najszybszego spadku w historii tego indeksu. Po tym wydarzeniu przepisy pozostały niezmienione: te same progi 7/13/20, odniesione do S&P 500, obowiązują do dziś. System został poddany próbie, a infrastruktura wytrzymała.

FAQ dotyczące krachu COVID

Co wywołało mechanizm circuit breaker 9 marca 2020 roku?

Spadek indeksu S&P 500 o 7% względem poprzedniego zamknięcia — co stanowi próg Level-1 dla całego rynku — w ciągu pierwszych minut sesji. Handel został wstrzymany na 15 minut w skali całego rynku, a następnie wznowiony poprzez aukcję. Przerwa jest widoczna w rejestrze minutowym na tej stronie jako 14 kolejnych brakujących słupków, zaczynając od godziny 09:35 ET.

O ile spadł rynek akcji podczas krachu COVID?

Mierzony na podstawie dziennych zamknięć SPY, wynosi -34.2% — ze $338.31 w dniu 19 lutego 2020 roku do $222.51 w dniu 23 marca 2020 roku, w ciągu 23 sesji handlowych.

Ile razy aktywowano mechanizmy circuit breaker w marcu 2020 roku?

Cztery wstrzymania handlu na całym rynku (Level-1): 9, 12, 16 i 18 marca. Były to pierwsze takie zdarzenia od października 1997 roku.

Czy w 2020 roku aktywowano mechanizmy circuit breaker poziomu 2 lub 3?

Nie. Wszystkie cztery wstrzymania w 2020 roku dotyczyły poziomu 1 (7%). Żadne wstrzymanie rynku na poziomie 2 (13%) ani 3 (20%) nie zostało dotąd aktywowane w ramach obecnego systemu — nawet 16 marca, podczas najgorszej sesji krachu przy -11.6%.

Czy rynek w pełni odrobił straty po krachu COVID?

Tak. SPY zamknął się powyżej szczytu z 19 lutego 2020 roku w dniu 2020-08-18 — po 103 sesjach handlowych od dołka z 23 marca, co stanowi jeden z najszybszych pełnych powrotów po bessie o takiej głębokości.


Każdy powyższy panel to zapisane, wersjonowane zapytanie do historycznego rejestru transakcji — rozwiń SQL, aby zobaczyć każde pomiary. Chcesz przeżyć ten dzień zamiast tylko o nim czytać? Jest to jeden z możliwych do rozegrania scenariuszy w symulatorze handlowym Strasmore Labs(https://labs.strasmore.com/g1).

#market history#covid crash#circuit breakers#spy