Strasmore Research
Analisi approfondite Matt ConnorDi Matt Connor · Aggiornato 2026-07-24

Crollo COVID 2020: i quattro circuit breaker

Analisi del crash del 2020: i quattro circuit breaker in otto giorni, i dati sull'halt del 9 marzo e l'andamento del picco al minimo su SPY.

Il crollo dovuto al COVID nel 2020 ha portato l'S&P 500 da una chiusura record il 19 febbraio a una perdita -34.2% dal picco al minimo in 23 giorni di trading — con quattro interruzioni tramite circuit-breaker su tutto il mercato, la prima dal 1997. Questa pagina ripercorre l'intero arco temporale dai dati: la mappa del crollo, la sessione di halt del 9 marzo minuto per minuto (inclusi i minuti mancanti dai dati, che rappresentano la prova migliore presente nella pagina), i titoli che hanno subito i cali maggiori e l'andamento di Treasury e del mercato delle opzioni. Ogni numero deriva da una query memorizzata; espandi qualsiasi pannello per visualizzare la SQL.

L'intero crash in un'unica riga

Prima del celebre singolo giorno, la mappa. Una query sulle chiusure della sessione regolare giornaliera di SPY individua il picco, il minimo, la velocità e il recupero — con lo stesso calcolo applicato al bear market del 2008 per confronto.

QueryIl crash COVID, dal picco al minimo e alla ripresa — chiusure giornaliere SPY, una riga
L'esatto SQL dietro ogni numero
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

La chiusura al picco di SPY è stata di $338.31 il 2020-02-19. La chiusura al minimo, $222.51 il 2020-03-23, si attesta -34.2% sotto il picco — un bear market compresso in 23 sessioni di trading, 33 giorni di calendario. L'affermazione spesso citata sul "drawdown del trenta per cento più veloce mai registrato" trova conferma nella stessa riga: la chiusura di SPY ha violato per la prima volta il limite del 30% sotto il picco dopo appena 22 sessioni. Il bear market del 2008, misurato identicamente dalla chiusura al picco di ottobre 2007, ha impiegato 250 sessioni per perdere la stessa percentuale del 30%. Ciò che nel 2008 ha richiesto circa un anno, nel 2020 ha richiesto circa un mese.

La cronologia del crash, con ogni numero estratto dai pannelli di questa pagina:

  • 19 febbraio 2020 — chiusura record di SPY, $338.31.
  • 9 marzo — il primo circuit breaker a livello di mercato dal 1997; SPY chiude in calo del -7.7%. Dettagli minuti per minuto riportati sotto.
  • 12, 16 e 18 marzo — altri tre halt di Level-1. Il 16 marzo chiude con un calo del -11.6%, la peggiore singola sessione del crash.
  • 23 marzo — il minimo di chiusura: $222.51, -34.2% dal picco.
  • 24 marzo — l'inversione. Il rally da stimulus del 24 marzo guida il listino.
  • 2020-08-18 — SPY chiude nuovamente sopra il picco di febbraio, 103 sessioni dopo il minimo.

9 marzo 2020: la sessione che ha attivato il circuit breaker

I circuit breaker di mercato si basano sull'S&P 500, quindi questo pannello riporta l'interruzione tramite SPY — l'ETF sull'S&P 500 — invece di qualsiasi altro proxy. Durante il fine settimana precedente, il repricing dovuto alla pandemia si è scontrato con uno shock dell'offerta di petrolio (maggiori dettagli sotto) e il mercato non ha mai aperto in modo ordinato.

QuerySPY il 9 marzo 2020 — la sessione con circuit-breaker, dettagliata
L'esatto SQL dietro ogni numero
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')

Due numeri iniziali. Primo, il gap: SPY ha aperto a $275.3, ovvero -7.4% sotto la chiusura di venerdì a $297.42 — e nei primi minuti il calo dell'S&P 500 ha raggiunto la soglia del 7% del Level-1. Secondo, e migliore: 376 candele minute della sessione regolare invece delle solite 390. Il tape si ferma dopo le 9:34 am: a partire dalle 09:35 ET, 14 minuti consecutivi non registrano alcuna candela. Non è stato scambiato nulla ovunque. Il gap nei dati rappresenta il circuit breaker. La sessione si è chiusa a $274.4, con un calo di -7.7%, su 304.6 milioni di share.

La struttura di una sessione sospesa

QuerySPY ogni mezz'ora — sessione regolare del 9 marzo 2020
L'esatto SQL dietro ogni numero
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

Il primo bucket include il crash, la sospensione e la ripresa simultaneamente: il minimo di $273.5 è quasi identico al minimo dell'intera giornata di $273.45 — la quotazione del pomeriggio alle 14:44 ET ha semplicemente testato nuovamente il livello mattutino. Dopo la riapertura, il tape non ha registrato movimenti significativi: ogni chiusura semestrale si è attestata entro pochi dollari dal prezzo di riapertura, e il danno della giornata si è concentrato nei primi minuti di tempo effettivo. Il volume conferma questa dinamica al contrario — l'ultima mezz'ora, con 46.7 milioni di azioni, è stata la fascia più intensa della giornata a causa dei flussi di chiusura. I circuit breakers sono progettati per generare esattamente questa struttura: bloccare la caduta, forzare un'asta di riapertura e permettere la ripresa del trading continuo al livello di prezzo aggiornato. L'orologio del mercato ha ormai integrato permanentemente questo meccanismo.

Quattro sospensioni in otto sessioni

Il 9 marzo è stato solo il primo caso.

QueryLe quattro sessioni con circuit-breaker di marzo 2020 — chiusura, variazione e volume SPY
L'esatto SQL dietro ogni numero
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

Sono scattati anche i Level-1 breakers il 12 marzo (chiusura -9.6%), il 16 marzo (chiusura -11.6% a $239.41 — il maggior calo percentuale giornaliero dell'S&P dal 1987) e il 18 marzo (sospensione intraday, chiusura -5.2%). Quattro sospensioni dell'intero mercato in otto giorni di trading, dopo ventitré anni senza alcun evento simile. Si noti cosa non è mai accaduto: ogni sospensione è stata di Livello 1, la fascia del 7%. Le fasce del 13% e del 20% non sono mai state raggiunte — nemmeno il 16 marzo, quando la cascata di vendite ha rallentato dopo la sospensione e la sessione si è conclusa all'interno della linea del Level-2.

Chi ha subito i cali maggiori

Un indice nasconde la dispersione dei dati sottostanti. La stessa media aritmetica applicata a un campione di large-cap rappresentative mostra l'impatto reale del crollo — sia il 9 marzo, sia durante l'intero calo dal 19 febbraio al 23 marzo.

QueryMovimenti del 9 marzo e del crash totale — cruise, airline, energy, bank, tech, staples vs SPY
L'esatto SQL dietro ogni numero
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

Il titolo più penalizzato del campione, CCL (Carnival, l'operatore di crociere), ha perso -19.9% solo il 9 marzo e -72.3% dal picco al minimo. United Airlines ha perso -66.9% durante il crollo; ExxonMobil -47.9%; JPMorgan -42.6%. In confronto, il -34.2% di SPY appare quasi contenuto, Apple è scesa in linea con il mercato al -31%, e Walmart — beni di prima necessità, essenziali, aperti durante i lockdown — ha chiuso lo stesso periodo con una perdita di appena -2.9%. I settori travel ed energy sono stati rivalutati per un mondo in lockdown; i beni di consumo di base sono rimasti quasi invariati.

La guerra dei prezzi del petrolio, in breve

La controversia energetica sopra descritta richiede una spiegazione sintetica, poiché il termine "guerra dei prezzi del petrolio" rappresenta l'altra metà della vicenda del 9 marzo. I colloqui sulla produzione di OPEC+ tra Arabia Saudita e Russia si sono conclusi senza un accordo venerdì 6 marzo 2020. Durante il fine settimana, l'Arabia Saudita ha tagliato i propri prezzi ufficiali di vendita e ha annunciato piani per aumentare la produzione in un contesto in cui la domanda di viaggi era già in fase di contrazione — uno shock dell'offerta che si è aggiunto a uno shock della domanda. L'apertura azionaria di lunedì ha subito entrambi gli shock contemporaneamente, e il risultato è visibile nel pannello sopra: ExxonMobil è scesa del -12.2% quel lunedì rispetto al -7.7% di SPY.

La fuga verso la sicurezza — e la settimana in cui si è invertita

Le azioni rappresentavano solo metà della storia. L'altra metà era il mercato dei Treasury, dove la classica fuga verso la sicurezza ha raggiunto un record — per poi, per una settimana eccezionale, invertire la rotta.

QueryRendimenti Treasury a 10 anni e 3 mesi durante il crash, chiusure giornaliere
L'esatto SQL dietro ogni numero
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

Il rendimento a 10 anni si attestava al 1.56% in corrispondenza del picco azionario del 19 febbraio. Entro il 9 marzo — la sessione di sospensione — è chiuso al 0.54%, un minimo storico, con gli acquirenti disposti ad accettare mezzo punto percentuale annuo per un decennio in cambio di sicurezza. Successivamente il pattern si è invertito: fino al 18 marzo il rendimento a 10 anni è salito al 1.18% mentre le azioni continuavano a scendere — la "corsa alla liquidità", una settimana in cui fondi, società e detentori stranieri hanno venduto qualsiasi asset liquido, inclusi i Treasury, per reperire dollari. Nel frattempo, il titolo a 3 mesi ha chiuso quel giorno al 0.02% — equivalenti di cassa ancorati allo zero. Quando l'asset più sicuro e l'asset più rischioso scendono contemporaneamente, l'oggetto dell'acquisto è la liquidità stessa. La curva dei rendimenti conserva questo episodio permanentemente nella sua storia.

Cosa mostra il tape delle opzioni

Le opzioni quotate su SPY — il principale mercato per l'hedge — hanno registrato il panico, e la tempistica è l'elemento più rilevante.

QuerySPY options: puts vs calls scambiate, 2–13 marzo 2020 (milioni di contratti)
L'esatto SQL dietro ogni numero
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

Il rapporto put/call ha raggiunto il picco a 1.95 — quasi due put per ogni call — venerdì 6 marzo, prima della sessione di halt. Il 9 marzo, sono state scambiate 4.35 milioni di put rispetto a 2.38 milioni di call, con un rapporto di 1.83. Entro il 12 marzo — una sessione di -9.6% — il rapporto si è ridotto a 1.32 grazie all'aumento del volume delle call insieme alle put. Lo skew più marcato sulle put si è verificato all'inizio della cascata, non alla fine: la protezione è stata acquistata precocemente, mentre le successive e più ampie giornate di ribasso hanno visto un tape delle opzioni più bilanciato.

Come funziona realmente un halt di mercato

Le dinamiche, poiché avvengono con una frequenza tale da essere dimenticate tra un utilizzo e l'altro: i circuit breaker di mercato si attivano in base al calo dell'S&P 500 rispetto alla chiusura precedente — il 7% (Level 1) e il 13% (Level 2) attivano rispettivamente un halt di 15 minuti se raggiunti prima delle 15:25 ET; il 20% (Level 3) interrompe definitivamente la sessione. Durante l'halt, non avviene alcun scambio su nessuna borsa; gli ordini vengono messi in coda per un'asta di riapertura, che concentra l'interesse accumulato in un unico prezzo, nello stesso modo in cui avviene ogni mattina con l'opening auction. Questo design risale alle conseguenze del flash crash del 2010, che dimostrò come le vecchie soglie fossero troppo ampie per attivarsi anche durante una vera cascata di vendite.

Il marzo 2020 è stato il primo — e finora l'unico — test reale di questo design, e il verdetto è riportato nei pannelli sopra: quattro halt di Level 1, ciascuno seguito da una riapertura ordinata, senza mai raggiungere il Level 2 o il Level 3, e un mercato funzionante in ognuna delle 23 sessioni del drawdown più rapido nella storia dell'indice. Le regole sono state mantenute: le stesse soglie del 7/13/20, riferite all'S&P 500, rimangono in vigore oggi. Il sistema si è piegato; l'infrastruttura ha retto.

FAQ sul crash COVID

Cosa ha attivato il circuit breaker il 9 marzo 2020?

Il calo del 7% dell'S&P 500 rispetto alla chiusura precedente — la soglia Level-1 per l'intero mercato — nei primi minuti di apertura. Le negoziazioni sono state sospese per 15 minuti su tutto il mercato, per poi riprendere tramite asta. La sospensione è visibile nel tape al minuto di questa pagina come 14 barre consecutive mancanti a partire dalle 09:35 ET.

Di quanto è sceso il mercato azionario durante il crash COVID?

Misurato sulle chiusure giornaliere di SPY, -34.2% — da $338.31 il 19 febbraio 2020 a $222.51 il 23 marzo 2020, nell'arco di 23 sessioni di trading.

Quanti circuit breaker sono stati attivati nel marzo 2020?

Quattro sospensioni Level-1 su tutto il mercato: 9, 12, 16 e 18 marzo. Sono state le prime dal 1997.

Sono stati attivati circuit breaker di Level 2 o Level 3 nel 2020?

No. Tutte e quattro le sospensioni del 2020 sono state di Level 1 (7%). Nessuna sospensione di Level-2 (13%) o Level-3 (20%) su tutto il mercato è mai stata attivata con l'attuale configurazione — nemmeno il 16 marzo, la peggiore sessione del crash a -11.6%.

Il mercato si è ripreso completamente dal crash COVID?

Sì. SPY ha chiuso sopra il picco del 19 febbraio 2020 in 2020-08-18103 sessioni di trading dopo il minimo del 23 marzo, una delle riprese complete più rapide da un bear market di questa profondità.


Ogni pannello sopra è una query memorizzata e versionata sul tape storico — espandi la SQL per vedere ogni misurazione. Vuoi vivere questa giornata invece di leggerla? È uno degli scenari giocabili nel trading simulator di Strasmore Labs.

#market history#covid crash#circuit breakers#spy