Strasmore Research
Enquêtes Matt ConnorPar Matt Connor · Mis à jour le 2026-07-22

24 mars 2020 : le jour du retournement

Le 24 mars 2020 minute par minute : le krach, la ruée vers les liquidités, le plan de la Fed qui a changé, l'ampleur sectorielle et le test jamais venu.

Le 23 mars 2020, la Réserve fédérale a annoncé des achats d'actifs sans limite fixée — un assouplissement quantitatif (QE) sans plafond déclaré — ainsi qu'une mesure inédite : des dispositifs d'achat d'obligations d'entreprises. Le 24 mars 2020 fut la réponse du marché : le rallye lié au plan de relance COVID, l'un des plus forts gains d'actions américaines en une seule séance jamais enregistrés et — visible seulement avec le recul — la deuxième journée d'un nouveau marché haussier. Le creux lui-même avait clôturé l'après-midi précédant l'annonce.

Le krach avant le retournement

Le krach lui-même a sa propre page ; voici la pièce sur laquelle celle-ci s'appuie — chaque séance du sommet historique jusqu'au creux, avec en regard le rendement du bon du Trésor à 10 ans, en points de base :

RequêteClôture quotidienne du SPY, repli et rendement à 10 ans — 19 févr. au 23 mars 2020
Le SQL exact derrière chaque chiffre
WITH daily AS (
    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
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE ticker = 'SPY'
      AND window_start >= toDateTime('2020-02-19 00:00:00') AND window_start < toDateTime('2020-03-24 04:00:00')
    GROUP BY et_date
    HAVING et_date >= toDate('2020-02-19') AND et_date <= toDate('2020-03-23') AND close_usd > 0
)
SELECT
    toString(d.et_date) AS session,
    d.close_usd,
    round((d.close_usd / (SELECT max(close_usd) FROM daily) - 1) * 100, 1) AS drawdown_pct,
    round(t.yield_10_year * 100) AS y10_bps
FROM daily AS d
LEFT JOIN global_markets.treasury_yields AS t ON t.date = d.et_date
ORDER BY d.et_date

Depuis la clôture au sommet historique de 338.31 $ le 2020-02-19, le SPY est tombé à 222.51 $ le 2020-03-23 — un repli de -34.2 %, chaque séance de la glissade figurant dans les 24 lignes du tableau.

La colonne du rendement est révélatrice. Jusqu'au 2020-03-09, le rendement à 10 ans s'est effondré de 156 points de base à un record de l'époque de 54 — la classique fuite vers la sécurité, l'argent quittant les actions pour les obligations. Puis le schéma s'est rompu : au 2020-03-18, le rendement avait plus que doublé pour atteindre 118 points de base, tandis que le repli du SPY s'aggravait de -18.9 % à -28.8 %. Des actions et des bons du Trésor qui baissent ensemble signent une vente forcée — des détenteurs levant des liquidités en vendant tout ce qui trouve encore preneur. À la mi-mars, la crise portait sur la mécanique même du crédit, non sur le prix des actions.

Ce que la Fed a réellement annoncé — et ce qui n'avait pas marché

Les baisses de taux avaient déjà été tentées. La séquence datée, chaque entrée se lisant dans le tableau ci-dessus :

  • 2020-03-03 — une baisse de taux d'urgence d'un demi-point, la première hors réunion depuis 2008. Le SPY a clôturé à 300.34 $, à -11.2 % du sommet, et la glissade s'est poursuivie.
  • Le 15 mars, un dimanche — taux ramenés à zéro et programme d'achat d'actifs de 700 milliards de dollars. La séance suivante, le 2020-03-16, a clôturé à -29.2 % sous le sommet de février — parmi les pires séances de tout le krach.
  • Le 23 mars, 8h00 ET — la Fed a levé le plafond : les achats de bons du Trésor et de titres adossés à des créances hypothécaires se poursuivraient « dans les montants nécessaires », sans limite. S'y ajoutaient les dispositifs PMCCF et SMCCF — les tout premiers mécanismes d'achat d'obligations d'entreprises de la Fed — et un TALF réactivé pour soutenir le crédit à la consommation. Le SPY a tout de même clôturé au plus bas du marché baissier cet après-midi-là.
  • Le 24 mars — la séance ci-dessous. Dans la nuit, le Congrès a convergé vers le CARES Act d'environ 2 000 milliards de dollars ; il a été promulgué le 27 mars, au sein de la poussée de trois jours détaillée plus bas.

Deux différences de conception séparaient le plan du 23 mars des tentatives précédentes. Un programme de taille fixe comporte une date de fin qu'un marché sous tension peut anticiper ; « dans les montants nécessaires », non. Et les dispositifs pour les entreprises plaçaient un acheteur public directement au cœur des marchés du crédit, là où la mécanique s'était grippée. Savoir si ce sont ces différences qui ont compté relève du jugement ; la bande enregistre la séquence — deux escalades, la baisse qui continue, une troisième conception, puis le retournement.

La journée, en une seule ligne

RequêteLe SPY le 24 mars 2020 — le retournement, pièces à l'appui
Le SQL exact derrière chaque chiffre
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-23 00:00:00') AND window_start < toDateTime('2020-03-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(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-24 04:00:00') AND window_start < toDateTime('2020-03-24 23:59:00')

Depuis la clôture du 23 mars à 222.51 $ — la dernière clôture du marché baissier — le SPY a ouvert en écart de +5.4 % à 234.42 $, a inscrit son plus bas de séance à 233.8 $ dans les premières minutes (09:31 ET) et n'y est jamais revenu : la clôture à 243.59 $ affichait +9.5 % sur la journée. Un rallye dont le plus bas s'inscrit à la première minute est l'image inversée d'un krach qui clôture sur son plus bas. Une seule ligne, toutefois, aplatit le parcours — la bande par demi-heure ci-dessous montre le repli que la séance a dû absorber.

La forme de la séance

RequêteLe SPY par demi-heure — séance régulière du 24 mars 2020
Le SQL exact derrière chaque chiffre
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-24 04:00:00') AND window_start < toDateTime('2020-03-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

Le tableau est honnête : le parcours a fléchi. Le plus bas de 233.8 $ s'est inscrit à la première minute et n'a jamais été revisité — cette part du récit à sens unique est réelle. Mais après avoir atteint 242.24 $ à la tranche de midi, la bande a cédé du terrain pendant deux heures — la tranche de 13h30 a clôturé à 237.25 $, celle de 14h00 a inscrit le plus bas le plus profond de l'après-midi, 235.05 $ — le moment où la journée aurait pu devenir un rebond avorté de plus. Au lieu de cela, le repli s'est maintenu bien au-dessus du plus bas d'ouverture, et la dernière demi-heure a livré la plus haute clôture de tranche de la séance, 243.59 $, sur 34.7 millions d'actions — la tranche la plus lourde de la journée à 232.4 millions d'actions, au-dessus même des 27.3 millions de l'ouverture. Un creux de mi-séance qui trouve des acheteurs, puis une clôture sur les plus hauts à volume maximal.

Rallye large, ou étroit ?

Un indice peut être tiré vers le haut par une poignée de méga-capitalisations. Ce n'est pas ce qui s'est passé ici. Douze fonds — les trois principaux trackers indiciels plus neuf fonds sectoriels du S&P — sur les deux mêmes clôtures :

RequêteLe 24 mars 2020 sur les ETF indiciels et sectoriels — tout en hausse, cycliques en tête
Le SQL exact derrière chaque chiffre
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 959 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2020-03-23')), 2) AS mar23_close,
    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 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2020-03-24')), 2) AS mar24_close,
    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 AND toDate(toTimeZone(window_start, 'America/New_York')) = toDate('2020-03-24')) / 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('2020-03-23')) - 1) * 100, 1) AS change_pct
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('SPY', 'DIA', 'QQQ', 'IWM', 'XLE', 'XLI', 'XLF', 'XLK', 'XLY', 'XLV', 'XLU', 'XLP')
  AND window_start >= toDateTime('2020-03-23 00:00:00') AND window_start < toDateTime('2020-03-25 00:00:00')
GROUP BY ticker
ORDER BY change_pct DESC

Les 12 ont toutes clôturé en hausse. L'énergie (XLE) a mené la marche à +16.4 %, l'industrie (XLI, +12.8 %) et la finance (XLF, +12.7 %) juste derrière — les recoins les plus sensibles à la conjoncture, ceux qu'un confinement menace en premier. Le tracker du Dow, DIA, a gagné 11.3 % — le mouvement à l'origine des titres « meilleure journée depuis 1933 » de cette semaine-là, un superlatif qui tient à l'historique de cours plus long du Dow. Les plus faibles gains se trouvaient dans les valeurs défensives classiques, la consommation de base (XLP, +5.1 %) et la santé (XLV, +7.4 %), et le QQQ du Nasdaq-100 (+7.7 %) est resté derrière le +9.5 % du SPY. Une bande menée par les cycliques et entièrement verte est l'exact opposé d'un resserrement étroit sur les méga-capitalisations — l'ampleur était la signature de la journée.

À quel point était-ce vraiment historique ?

« La plus grosse journée depuis 1933 » est une statistique du Dow tirée des journaux de cette semaine-là. Voici ce que notre propre bande peut vérifier, limitée à ce qu'elle couvre réellement :

RequêteLe 24 mars 2020 comparé à chaque séance du SPY sur la bande minute
Le SQL exact derrière chaque chiffre
SELECT
    countIf(isFinite(day_pct)) AS sessions_measured,
    toString(min(et_date)) AS first_session,
    round(mar24_d, 1) AS mar24_gain_pct,
    countIf(isFinite(day_pct) AND day_pct > mar24_d) AS bigger_days,
    countIf(isFinite(day_pct) AND day_pct > mar24_d) + 1 AS mar24_rank,
    arrayStringConcat(arraySort(groupArrayIf(toString(et_date), isFinite(day_pct) AND day_pct > mar24_d)), ', ') AS bigger_day_dates,
    round(mar26_b, 1) AS burst3_gain_pct,
    countIf(isFinite(burst3_pct) AND burst3_pct > mar26_b) AS bigger_bursts,
    round(mar24_r30, 2) AS vol_vs_30d,
    round(mar24_r250, 2) AS vol_vs_250d,
    round(mar24_shares / 1e6, 0) AS mar24_shares_m
FROM (
    SELECT
        et_date, day_pct, burst3_pct,
        max(if(et_date = toDate('2020-03-24'), day_pct, -999)) OVER () AS mar24_d,
        max(if(et_date = toDate('2020-03-26'), burst3_pct, -999)) OVER () AS mar26_b,
        max(if(et_date = toDate('2020-03-24'), shares / vol_avg_30, -999)) OVER () AS mar24_r30,
        max(if(et_date = toDate('2020-03-24'), shares / vol_avg_250, -999)) OVER () AS mar24_r250,
        max(if(et_date = toDate('2020-03-24'), shares, -999)) OVER () AS mar24_shares
    FROM (
        SELECT
            et_date,
            (close_usd / lagInFrame(close_usd, 1) OVER (ORDER BY et_date ASC ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) - 1) * 100 AS day_pct,
            (close_usd / lagInFrame(close_usd, 3) OVER (ORDER BY et_date ASC ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) - 1) * 100 AS burst3_pct,
            shares,
            avg(shares) OVER (ORDER BY et_date ASC ROWS BETWEEN 30 PRECEDING AND 1 PRECEDING) AS vol_avg_30,
            avg(shares) OVER (ORDER BY et_date ASC ROWS BETWEEN 250 PRECEDING AND 1 PRECEDING) AS vol_avg_250
        FROM (
            SELECT
                toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
                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 close_usd,
                toFloat64(sum(volume)) AS shares
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPY' AND window_start < toDateTime('2026-01-01 00:00:00')
            GROUP BY et_date
            HAVING close_usd > 0
        )
    )
)
GROUP BY mar24_d, mar26_b, mar24_r30, mar24_r250, mar24_shares

Depuis le 2003-09-10 — la première séance de nos données à la minute — le SPY a inscrit 5613 rendements quotidiens de clôture à clôture. Le +9.5 % du 24 mars 2020 se classe 3 : exactement 2 séances l'ont dépassé (2008-10-13, 2008-10-28), toutes deux au sein de la panique d'octobre 2008. La séquence de trois jours est plus rare encore : la hausse de +17.5 % de la clôture du 23 mars à celle du 26 mars ne compte que 0 gains sur trois séances supérieurs dans tout l'échantillon. Parmi tout ce que cet entrepôt peut vérifier, rien n'égale cette poussée.

Le volume raconte l'histoire plus discrète : 232 millions d'actions SPY représentaient 2.86× la moyenne de l'année écoulée — et seulement 1.12× la moyenne des 30 séances précédentes. Face à n'importe quelle période normale de l'histoire, l'activité était extraordinaire ; face aux semaines de krach qui l'ont précédée, ce n'était qu'un jour de plus dans la tempête. Les retournements historiques ne s'annoncent pas par un volume historique.

La poussée de trois jours

RequêteClôtures du SPY, 23-26 mars 2020 — la poussée de trois jours
Le SQL exact derrière chaque chiffre
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 = 'SPY'
          AND window_start >= toDateTime('2020-03-20 00:00:00') AND window_start < toDateTime('2020-03-26 23:59:00')
        GROUP BY et_date
    )
)
WHERE et_date >= toDate('2020-03-23') AND et_date <= toDate('2020-03-26')
ORDER BY et_date

Le retournement s'est amplifié aussitôt : +9.5 % le 24, +1.3 % le 25, +5.9 % le 26 — une séquence de trois séances qui a effacé des semaines d'effondrement, sans aucune plus forte nulle part dans l'échantillon ci-dessus. Le schéma de mars 2020 rime délibérément avec mars 2009 : dans les deux cas, la réponse décisive des autorités est arrivée près du creux, la première jambe du rallye a été violente, et le jour d'opportunité maximale paraissait — ce matin-là — impossible à distinguer d'un énième rebond de marché baissier.

Le rallye a-t-il tenu ?

Sur le moment, « rebond de marché baissier » était la lecture consensuelle, et les sceptiques avaient leurs propres pièces à l'appui : onze jours plus tôt, la bande avait déjà produit un rallye de presque cette ampleur — de 248.1 $ le 2020-03-12 à 270.93 $ le 2020-03-13 — et la séance qui a suivi celui-là a clôturé à 239.41 $, la pire journée de tout le krach. Une seule journée verte ne prouvait rien. Ce qui distingue le 24 mars, c'est ce qui a suivi :

RequêteA-t-il tenu ? Le test du creux qui n'est jamais venu, et deux horloges de reprise
Le SQL exact derrière chaque chiffre
SELECT
    round(ath_close, 2) AS feb19_ath_close,
    round(bottom_close, 2) AS mar23_bottom_close,
    toString(rec_date) AS recovery_date,
    countIf(et_date > toDate('2020-03-23') AND et_date <= rec_date) AS sessions_to_new_high,
    dateDiff('day', toDate('2020-03-23'), rec_date) AS days_low_to_new_high,
    dateDiff('day', toDate('2020-02-19'), rec_date) AS round_trip_days,
    round(minIf(close_usd, et_date > toDate('2020-03-23') AND et_date <= rec_date), 2) AS lowest_close_after,
    toString(argMinIf(et_date, (close_usd, et_date), et_date > toDate('2020-03-23') AND et_date <= rec_date)) AS lowest_close_date,
    round((minIf(close_usd, et_date > toDate('2020-03-23') AND et_date <= rec_date) / bottom_close - 1) * 100, 1) AS closest_retest_pct,
    toString(peak07_date) AS peak_2007_date,
    toString(rec07_date) AS recovery_2013_date,
    dateDiff('day', peak07_date, rec07_date) AS round_trip_2008_days
FROM (
    SELECT
        et_date, close_usd, ath_close, bottom_close, peak07_date,
        min(if(et_date > toDate('2020-03-23') AND close_usd >= ath_close, et_date, toDate('2099-01-01'))) OVER () AS rec_date,
        min(if(et_date >= toDate('2008-01-01') AND close_usd >= peak07_close, et_date, toDate('2099-01-01'))) OVER () AS rec07_date
    FROM (
        SELECT
            et_date, close_usd,
            max(if(et_date = toDate('2020-02-19'), close_usd, -999)) OVER () AS ath_close,
            max(if(et_date = toDate('2020-03-23'), close_usd, -999)) OVER () AS bottom_close,
            max(if(et_date >= toDate('2007-01-01') AND et_date < toDate('2008-01-01'), (close_usd, et_date), (-999., toDate('1970-01-01')))) OVER () .1 AS peak07_close,
            max(if(et_date >= toDate('2007-01-01') AND et_date < toDate('2008-01-01'), (close_usd, et_date), (-999., toDate('1970-01-01')))) OVER () .2 AS peak07_date
        FROM (
            SELECT
                toDate(toTimeZone(window_start, 'America/New_York')) AS et_date,
                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 close_usd
            FROM global_markets.delayed_stocks_minute_aggs
            WHERE ticker = 'SPY' AND window_start < toDateTime('2021-01-01 00:00:00')
            GROUP BY et_date
            HAVING close_usd > 0
        )
    )
)
GROUP BY ath_close, bottom_close, rec_date, peak07_date, rec07_date

Le test du creux n'est jamais venu. Après le 23 mars, la plus basse clôture jamais inscrite par le SPY fut 243.59 $ — le 2020-03-24, le jour même du rallye de relance. Le marché n'a plus jamais clôturé à moins de 9.5 % du creux. Le sommet d'avant-COVID de 338.31 $ a été retrouvé le 2020-08-18103 séances de bourse après le creux, un aller-retour de 181 jours d'un sommet historique à un sommet historique. La comparaison de 2008, calculée de la même façon : le sommet du SPY du 2007-10-09 n'a pas connu de nouvelle clôture record avant le 2013-03-14, soit 1983 jours plus tard. Deux crises, deux vitesses, un même marché dont le métabolisme avait changé entre-temps.

Ce que cette journée nous apprend

Trois pièces à retenir. Premièrement, l'écart a fait le travail : une grande partie du gain de la journée existait avant l'ouverture — quiconque attendait une entrée en séance régulière a payé plus cher toute la journée — la mécanique de l'écart overnight à son amplitude maximale. Deuxièmement, le creux a précédé la confirmation : la clôture du 23 mars était le plus bas, reconnu comme tel seulement après que des séances comme celle-ci ont refusé d'y revenir. Troisièmement, la vitesse joue dans les deux sens : la même structure de marché qui a comprimé un repli de -34.2 % dans les 24 lignes ci-dessus a comprimé la reprise initiale en trois séances. La vitesse est une propriété de la mécanique de marché de l'époque, non d'une bonne ou d'une mauvaise nouvelle.

Les sceptiques de cette semaine-là n'étaient pas des sots : l'ampleur, la poussée, le test du creux qui n'est jamais venu — chaque pièce séparant le 24 mars des rallyes avortés n'est mesurable qu'avec le recul. La différence entre un rallye de marché baissier et un nouveau marché haussier est invisible le premier jour et indéniable en quelques mois.

FAQ sur le rallye COVID

Que s'est-il passé le 24 mars 2020 ?

La première séance complète après l'annonce du QE illimité de la Fed : le SPY a ouvert en écart de +5.4 % et a clôturé à +9.5 % — le n°3 gain en une seule séance parmi les 5613 séances que couvre notre bande minute, derrière seulement deux journées d'octobre 2008.

Qu'a annoncé la Fed le 23 mars 2020 ?

Des achats sans limite de bons du Trésor et de titres adossés à des créances hypothécaires — « dans les montants nécessaires » — plus les dispositifs PMCCF et SMCCF, ses tout premiers mécanismes d'achat d'obligations d'entreprises, et un TALF réactivé pour le crédit à la consommation. Le communiqué est sorti à 8h00 ET, avant l'ouverture ; le SPY a tout de même clôturé ce jour-là au plus bas de son marché baissier.

Le 23 mars 2020 était-il le creux du krach COVID ?

Oui, en cours de clôture : la clôture basse du SPY à 222.51 $ s'est inscrite le 23 mars, quelques heures après l'annonce de la Fed. Elle n'a jamais été revisitée — la plus basse clôture ensuite est survenue le 2020-03-24, à 9.5 % au-dessus du creux.

Quand le marché boursier a-t-il retrouvé son sommet d'avant-COVID ?

Le SPY a clôturé pour la première fois au-dessus de sa clôture record du 19 février 2020 le 2020-08-18, 103 séances de bourse après le creux — un aller-retour de 181 jours, contre 1983 jours pour le parcours équivalent du krach de 2008.

Aurait-on pu acheter après l'annonce et bien s'en tirer quand même ?

L'ouverture a bondi de +5.4 % en écart avant le début de la séance régulière, et la journée a continué de grimper — chaque entrée ultérieure coûtait plus que la clôture précédente, tout en restant bien en dessous du niveau du marché lors de la reprise d'août 2020.

Notes sur les données
  • Les clôtures sont les derniers cours de la séance régulière (9h30-16h00 ET) issus de la bande minute ; elles peuvent différer de quelques cents des clôtures officielles en fixing.
  • Les dates de reprise sont en cours seul ; une mesure en rendement total (dividendes réinvestis) atteint la reprise plus tôt par construction.
  • Le rendement à 10 ans rejoint la série quotidienne du Trésor aux dates de bourse ; les points de base sont des centièmes de point de pourcentage.
  • L'échantillon du tableau de classement commence le 2003-09-10 — « depuis 2003 » sur cette page désigne cette fenêtre, non toute l'histoire boursière enregistrée.

Chaque tableau ci-dessus est une requête stockée et versionnée sur la bande historique — dépliez le SQL pour voir chaque mesure. Envie de ressentir cette journée plutôt que de la lire ? C'est l'un des scénarios jouables du simulateur de trading Strasmore Labs.

#market history#covid rally#bull markets#federal reserve#spy