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

Guerra Russia Ucraina 24 febbraio 2022 mercato

Analisi della sessione del 24 febbraio 2022: l'invasione russa e il reversal dei titoli US. Focus su oil, gold, titoli difesa, Treasuries e mercato azionario.

Nelle prime ore del 24 febbraio 2022, la Russia ha lanciato la sua invasione su larga scala dell'Ucraina: il mercato azionario statunitense ha registrato una delle sessioni più studiate del decennio. I futures sugli indici sono crollati durante la notte, l'ETF Nasdaq-100 QQQ è aperto con un calo del -3.2% ed è chiuso a +3.4%. Questa pagina documenta l'intero evento: il reversal minuto per minuto, l'andamento di S&P 500 e Dow, l'evoluzione di oil, gold, titoli della difesa, Treasuries e volatilità, e l'andamento delle settimane successive. Ogni numero deriva da una query memorizzata; espandi ogni pannello per visualizzare il codice SQL.

Prima dell'apertura: l'evoluzione della notte

L'invasione non è stata un evento improvviso. Tra la fine del 2021 e l'inizio del 2022 la Russia ha schierato truppe vicino al confine con l'Ucraina — le stime occidentali dell'epoca superavano abbondantemente le 100.000 unità — e i mercati avevano già scontato il rischio per settimane. Lunedì 21 febbraio, Mosca ha riconosciuto le due repubbliche separatiste autoproclamate nell'Ucraina orientale; i mercati USA erano chiusi per la festività del Washington's Birthday, e la prima sessione in grado di prezzare la notizia è stata quella di martedì 22, una sessione in rosso. La prima tranche di sanzioni occidentali è arrivata proprio quel martedì, insieme alla decisione della Germania di sospendere la certificazione del gasdotto Nord Stream 2.

Poi, poco prima delle 6:00 del mattino ora di Mosca di giovedì 24 febbraio — circa le 22:00 di mercoledì a New York — il presidente russo ha annunciato l'operazione e sono state segnalate esplosioni in diverse città ucraine entro l'ora successiva. I futures sugli indici USA, che sono scambiati durante la notte, hanno subito un forte sell-off. Al sorgere del sole, l'unica domanda aperta era di quanto il asta di apertura delle 9:30 sarebbe sceso rispetto alla chiusura di mercoledì.

La giornata, in un'unica riga

Un'unica riga contiene tutte le risposte — chiusura precedente, gap, minimo, massimo, chiusura e volume:

QueryQQQ il 24 febbraio 2022 — il reversal del giorno dell'invasione, registrato
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 = 'QQQ'
          AND window_start >= toDateTime('2022-02-23 00:00:00') AND window_start < toDateTime('2022-02-24 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(maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2) AS rth_high,
    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(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS trough_to_close_pct,
    round((maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) - 1) * 100, 2) AS close_to_high_pct,
    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)) / minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 2) AS open_above_low_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 = 'QQQ'
  AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2022-02-24 23:59:00')

Il dato fondamentale per tutti: il minimo della sessione di $318.26 registrato alle 09:30 ET — al primo minuto di apertura-3.4% sotto la chiusura precedente. Dopo quel primo segnale, QQQ è salito per sei ore e mezza chiudendo a $340.65: +3.4% sulla giornata, uno swing trough-to-close del 7% su 128 milioni di azioni. La chiusura non ha subito un calo verso la fine della sessione: si è attestata solo 0.11% sotto il massimo della sessione di $341.04, il che significa che la giornata si è conclusa essenzialmente ai suoi massimi. Chiunque abbia venduto nel primo minuto di trading ha venduto entro il 0.18% dal minimo assoluto della sessione — il vero punto di minimo registrato pochi istanti dopo l'opening cross, non durante di esso (il prezzo dell'asta era $318.84; il minimo, $318.26).

La inversione, bucket per bucket

I bucket da mezz'ora mostrano l'andamento della salita:

QueryQQQ ogni mezz'ora — sessione regolare del 24 febbraio 2022
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 = 'QQQ'
  AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2022-02-24 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

La scalinata non è stata perfettamente lineare — il bucket ET 12:00 ha chiuso a $328.03, sotto la chiusura 11:30 di $330.29 — ma la direzione non è mai cambiata drasticamente, e l'ultimo bucket ha chiuso a $340.65, il valore massimo della tabella. I volumi hanno seguito l'andamento a U tipico: 18.6 milioni di azioni nella prima mezz'ora e 15 milioni nell'ultima, contro i 4.7 milioni della pausa pranzo. È l'immagine speculare della discesa a gradoni del 2011. Sessioni come questa spiegano perché i resoconti sulla "caduta del mercato durante l'invasione" siano fuorvianti: i futures sono scesi durante la notte; la sessione cash è rimbalzata fin dal primo minuto. L'impatto dipendeva interamente dall'orario di arrivo degli ordini — il tema gap overnight viene analizzato in settimane più calme.

Non solo il Nasdaq: inversione per l'intero mercato

Un'analisi limitata a un singolo indice lascerebbe aperta una domanda fondamentale: si è trattato di un fenomeno isolato sulle growth-stock o di un'inversione generalizzata del mercato? Il pannello sottostante analizza undici ticker su un unico parametro: i tre principali ETF indicizzati, seguiti dai settori tipicamente coinvolti in scenari di shock geopolitico: energia, oro, long Treasuries, un ETF sulla volatilità e quattro contractor della difesa.

QueryEleven tickers il 24 febbraio 2022 — gap, estremi intraday, close (% vs prior close)
L'esatto SQL dietro ogni numero
SELECT
    ticker,
    round(prior_close, 2) AS prior_close,
    round((rth_open / prior_close - 1) * 100, 1) AS gap_pct,
    round((rth_low / prior_close - 1) * 100, 1) AS low_vs_prior_pct,
    round((rth_high / prior_close - 1) * 100, 1) AS high_vs_prior_pct,
    round((rth_close / prior_close - 1) * 100, 1) AS day_change_pct
FROM (
    SELECT
        ticker,
        argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2022-02-23')) AS prior_close,
        argMinIf(toFloat64(open), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2022-02-24')) AS rth_open,
        minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2022-02-24')) AS rth_low,
        maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2022-02-24')) AS rth_high,
        argMaxIf(toFloat64(close), window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2022-02-24')) AS rth_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker IN ('QQQ', 'SPY', 'DIA', 'XLE', 'GLD', 'TLT', 'VIXY', 'LMT', 'NOC', 'RTX', 'GD')
      AND window_start >= toDateTime('2022-02-23 00:00:00') AND window_start < toDateTime('2022-02-24 23:59:00')
    GROUP BY ticker
)
ORDER BY indexOf(['QQQ', 'SPY', 'DIA', 'XLE', 'GLD', 'TLT', 'VIXY', 'LMT', 'NOC', 'RTX', 'GD'], ticker)

L'inversione ha coinvolto l'intero mercato, ma l'entità del movimento non ha seguito semplicemente l'ampiezza del gap mattutino: QQQ ha aperto con un gap di -3.2% e ha chiuso a +3.4%. SPY e DIA hanno registrato gap di entità quasi identica — rispettivamente -2.6% e -2.6% — eppure SPY ha chiuso a +1.5% contro il +0.3% di DIA, appena in territorio positivo. L'indice con maggiore esposizione alle growth ha registrato l'inversione più marcata; il Dow, sbilanciato verso i titoli industriali, quella minore — la differenza tra SPY e DIA dipende dalla composizione del portafoglio, non dall'ampiezza del gap.

Dove sono finiti i capitali: petrolio, oro, difesa, volatilità

Analizzando le righe inferiori dello stesso pannello — il "war trade" — si nota che l'energia ha aperto ai massimi per poi chiudere in rosso: XLE ha registrato un gap di +2.1%, ha toccato un minimo intraday di -3.4% rispetto alla chiusura precedente e ha concluso a -0.9%. L'oro ha seguito lo stesso andamento: GLD ha aperto a +2.4% e ha chiuso a -0.6%. VIXY — un ETF che detiene futures sul VIX a breve termine, il proxy scambiabile più vicino all'indice di volatilità — ha registrato un gap di +11.1% all'apertura e ha chiuso a -3%, sotto la chiusura del giorno precedente. I classici asset rifugio hanno raggiunto il picco proprio in concomitanza con le peggiori notizie e sono scesi durante il recupero azionario: l'inversione del trend azionario è stata speculare.

I contractor della difesa sono stati l'eccezione che ha mantenuto il trend. Tutti e quattro hanno chiuso in rialzo — LMT +1.7%, NOC +2.4%, RTX +2.1%, GD +1.1% — e Northrop Grumman non è mai sceso sotto la chiusura di mercoledì durante tutta la sessione (il suo low intraday è stato di +1%), l'unico dei quattro a non registrare valori in rosso.

Treasury: la domanda safe-haven è arrivata in ritardo

Un calo del rendimento dei Treasury indica un aumento dei prezzi delle obbligazioni: il classico flusso verso i safe-haven. Il giorno dell'invasione, tale flusso è stato quasi impercettibile alla chiusura:

QueryRendimenti Treasury 2-year e 10-year, 18 febbraio – 8 marzo 2022 (%)
L'esatto SQL dietro ogni numero
SELECT
    toString(date) AS session,
    round(yield_2_year, 2) AS yield_2_year,
    round(yield_10_year, 2) AS yield_10_year
FROM global_markets.treasury_yields
WHERE date BETWEEN '2022-02-18' AND '2022-03-08'
ORDER BY date

Il rendimento del 10-year ha chiuso al 1.96% il 24 febbraio, poco sotto il 1.99% del giorno precedente. La vera fuga di capitali è avvenuta la settimana successiva: entro il 2022-03-01 il 10-year ha registrato il 1.72% — il valore di chiusura più basso di questo periodo — e il 2-year è sceso da 1.58% a 1.31% nello stesso intervallo di tempo. TLT, l'ETF long-Treasury nel pannello sopra, ha mostrato la stessa dinamica durante la sessione: un gap di +1.8% all'apertura che si è ridotto al +0.2% alla chiusura.

I giorni circostanti

Tre settimane di chiusure giornaliere contestualizzano il reversal — e ne determinano se sia effettivamente durato:

QueryQQQ daily closes, 22 febbraio – 14 marzo 2022
L'esatto SQL dietro ogni numero
SELECT
    toString(et_date) AS session,
    close_usd,
    round(if(prev_close = 0, NULL, (close_usd / prev_close - 1) * 100), 1) AS change_pct,
    shares_m
FROM (
    SELECT et_date, close_usd, shares_m,
           lagInFrame(close_usd) OVER (ORDER BY et_date ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_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,
            round(toFloat64(sum(volume)) / 1e6, 1) AS shares_m
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'QQQ'
          AND window_start >= toDateTime('2022-02-18 00:00:00') AND window_start < toDateTime('2022-03-15 23:59:00')
        GROUP BY et_date
    )
)
WHERE et_date >= toDate('2022-02-22') AND et_date <= toDate('2022-03-14')
ORDER BY et_date

Le sessioni precedenti l'invasione sono state negative (-1% e -2.6% il 22–23 febbraio) poiché l'imminenza dell'evento dominava le notizie; il giorno dell'invasione si è chiuso con un +3.4%, seguito da un altro +1.5% il giorno successivo. Il fatto che i mercati scendano sulla minaccia e rimbalzino sull' evento è un pattern sufficientemente datato da avere un proverbio di Wall Street dedicato, e questo grafico ne è la prova moderna più limpida. Tuttavia, osservando la tabella: il trend termina a $318.21 il 2022-03-14 — al di sotto del livello registrato durante il panico della mattina dell'invasione.

Il rally è durato?

No — e ora le prove sono concrete:

QueryDopo il reversal: quando QQQ ha rotto il low del giorno dell'invasione e di quanto è sceso
L'esatto SQL dietro ogni numero
WITH
    daily AS (
        SELECT
            toDate(toTimeZone(window_start, 'America/New_York')) AS d,
            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 c
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'QQQ'
          AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2023-01-01 00:00:00')
        GROUP BY d
    ),
    (SELECT c FROM daily WHERE d = toDate('2022-02-24')) AS invasion_close,
    (
        SELECT round(minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2)
        FROM global_markets.delayed_stocks_minute_aggs
        WHERE ticker = 'QQQ'
          AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2022-02-24 23:59:00')
    ) AS invasion_low
SELECT
    invasion_close,
    invasion_low,
    toString(minIf(d, c < invasion_low AND d > toDate('2022-02-24'))) AS first_close_below_invasion_low,
    dateDiff('day', toDate('2022-02-24'), minIf(d, c < invasion_low AND d > toDate('2022-02-24'))) AS calendar_days_to_new_low,
    round(minIf(c, d BETWEEN toDate('2022-02-25') AND toDate('2022-03-31')), 2) AS march_low_close,
    toString(argMinIf(d, (c, d), d BETWEEN toDate('2022-02-25') AND toDate('2022-03-31'))) AS march_low_date,
    round((minIf(c, d BETWEEN toDate('2022-02-25') AND toDate('2022-03-31')) / invasion_close - 1) * 100, 1) AS march_low_vs_invasion_close_pct,
    round(minIf(c, d > toDate('2022-02-24')), 2) AS year_low_close,
    toString(argMinIf(d, (c, d), d > toDate('2022-02-24'))) AS year_low_date,
    round((minIf(c, d > toDate('2022-02-24')) / invasion_close - 1) * 100, 1) AS year_low_vs_invasion_close_pct
FROM daily

18 giorni di calendario dopo l'invasione, il 2022-03-14, QQQ ha chiuso sotto il minimo di panico di $318.26 registrato nel primo minuto di apertura del mattino dell'invasione. Quel minimo di chiusura di marzo a $318.21 si è posizionato -6.6% sotto la chiusura del giorno dell'invasione — e il trend è continuato: entro il 2022-12-28, QQQ ha chiuso a $260.02, ovvero -23.7% sotto il livello di chiusura del giorno dell'invasione. Il reversal del 24 febbraio è stato reale, violento — e locale. Il ciclo di rialzo dei tassi, non la guerra, ha determinato la direzione del 2022, la stessa lezione che il crash di marzo 2020 ha insegnato in direzione opposta.

Quanto è raro un reversal di questa entità?

Analizzando ogni sessione di QQQ dal 2003 fino alla fine del 2025, si contano esattamente 2 sessioni in cui il prezzo è sceso di almeno il 3% rispetto alla chiusura precedente durante la giornata, finendo però con un rialzo di almeno l'1% rispetto alla chiusura stessa:

QuerySessioni QQQ dal 2003: intraday low ≤ −3% vs prior close AND close ≥ +1%
L'esatto SQL dietro ogni numero
SELECT
    toString(d) AS session,
    low_vs_prior_pct,
    close_vs_prior_pct,
    trough_to_close_pct
FROM (
    SELECT
        d,
        round((lo / prev_c - 1) * 100, 1) AS low_vs_prior_pct,
        round((c / prev_c - 1) * 100, 1) AS close_vs_prior_pct,
        round((c / lo - 1) * 100, 1) AS trough_to_close_pct
    FROM (
        SELECT d, c, lo,
               lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
        FROM (
            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,
                minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS lo
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'QQQ'
              AND window_start >= toDateTime('2003-01-01 00:00:00') AND window_start < toDateTime('2026-01-01 00:00:00')
            GROUP BY d
        )
    )
    WHERE prev_c > 0 AND isFinite(prev_c)
)
WHERE low_vs_prior_pct <= -3 AND close_vs_prior_pct >= 1
ORDER BY session

Il 24 febbraio 2022 è uno di questi casi. L'altro è 2022-10-13 — la sessione aperta un'ora dopo un report sull'inflazione superiore alle attese, un altro caso di gap-down-close-green. Il reversal del giorno dell'invasione è stato il più ampio dei due: uno swing dal minimo alla chiusura di 7% contro 5.7%. Ventitré anni di dati, e entrambi i segnali si sono verificati nello stesso anno.

Cosa insegna questa giornata

In questo grafico operano tre meccanismi duraturi. Primo: quando si verifica un evento molto atteso, il posizionamento è spesso già avvenuto — le due sessioni rosse precedenti l'invasione avevano già incorporato l'anticipazione. Secondo: l'asta di apertura è il momento in cui il timore accumulato durante la notte si risolve a un unico prezzo, e tale prezzo può rappresentare l'estremo della giornata in entrambe le direzioni. Terzo: un violento reversal in un solo giorno indica i flussi di quella specifica giornata, non la direzione del prossimo trimestre — le settimane successive a questa sessione hanno comunque raggiunto nuovi minimi. I giorni di eventi premiano la conoscenza dei meccanismi di mercato; penalizzano chi confonde la struttura di una sessione con quella di un regime.

Il dettaglio dei volumi conferma l'operatività: 128.5 milioni di azioni hanno reso questa la sessione più intensa nella tabella di tre settimane sopra; un volume elevato durante una risalita dal minimo alla chiusura indica che l'acquisto è stato sostenuto da volumi reali che hanno incontrato vendite reali — non un movimento privo di liquidità. Confronta questa stessa firma con il rally del 24 marzo 2020, dove volumi decisi hanno segnato anche l'inversione di un panic, e mettila in contrasto con i giorni di rimbalzi sottili che svaniscono nella sessione successiva.

FAQ sul giorno dell'invasione

Cosa è successo al mercato azionario quando la Russia ha invaso l'Ucraina?

Il giorno stesso — 24 febbraio 2022 — l'ETF Nasdaq-100 QQQ è aperto con un calo del -3.2% toccando il minimo nel primo minuto di negoziazione, per poi salire durante tutta la sessione e chiudere a +3.4%. L'ETF S&P 500 SPY ha chiuso a +1.5% e l'ETF Dow DIA a +0.3%.

Perché le azioni sono salite quando la Russia ha invaso l'Ucraina?

Questa pagina non attribuisce motivazioni; registra solo la sequenza dei fatti. La forte pressione di vendita si è manifestata all'apertura delle 9:30, ma gli acquisti hanno dominato ogni ora successiva. Il pattern "calo durante la minaccia, rally durante l'evento" presenta molti precedenti storici.

Cosa è successo a petrolio e oro quando la Russia ha invasto l'Ucraina?

Entrambi sono impennati all'apertura per poi scendere: l'ETF energy XLE ha registrato un gap di +2.1% e ha chiuso a -0.9%, mentre l'ETF gold GLD ha registrato un gap di +2.4% e ha chiuso a -0.6%. I titoli del settore defense hanno mantenuto i guadagni: tutti e quattro i titoli principali del panel sopra hanno chiuso in rialzo.

Il rally dopo l'invasione è durato?

No. QQQ ha chiuso sotto il minimo di panico del giorno dell'invasione 18 giorni di calendario dopo, il 2022-03-14, e in corrispondenza del suo minimo del 2022 il 2022-12-28 si trovava a -23.7% sotto la chiusura del giorno dell'invasione.

Quanto è raro un reversal come quello del 24 febbraio 2022?

Molto raro. Dal 2003 alla fine del 2025, solo 2 sessioni di QQQ hanno scambiato con un calo intraday del 3% o superiore rispetto alla chiusura precedente per poi chiudere con un aumento di almeno l'1% — questo caso, e 2022-10-13.


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

#market history#geopolitics#reversals#qqq