Börsenverlauf am 24. März 2020
Analyse des Markttages vom 24. März 2020: Der Crash, die Flucht in Cash und die Reaktion auf das neue Paket der Fed sowie die Entwicklung der Sektoren.
Am 23. März 2020 kündigte die Federal Reserve unbegrenzte Anleihenkäufe an – QE ohne festgelegte Obergrenze – sowie eine bisher nie dagewesene Maßnahme: Einrichtungen zum Kauf von Unternehmensanleihen. Der 24. März 2020 war die Reaktion des Marktes: die COVID-Stimulus-Rallye, einer der größten täglichen Kursgewinne an der US-Aktienbörse in der Geschichte und – erst im Rückblick erkennbar – der zweite Tag eines neuen Bullenmarktes. Der Tiefpunkt wurde bereits am Nachmittag vor der Bekanntgabe erreicht.
Der Crash vor der Trendwende
Der Crash selbst hat eine eigene Seite; hier ist die Grundlage für diesen Bericht — jede Sitzung vom Allzeithoch bis zum Tiefpunkt, zusammen mit der Rendite der 10-jährigen Staatsanleihen in Basispunkten:
Das exakte SQL hinter jeder Zahl
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_dateVom Schlusskurs des Allzeithochs bei $338.31 am 2020-02-19 fiel der SPY bis zum 2020-03-23 auf $222.51 — ein Rückgang von -34.2%, wobei jede Sitzung des Verkaufs in den 24 Zeilen des Diagramms dargestellt ist.
Die Spalte für die Rendite ist entscheidend. Bis 2020-03-09 sank die Rendite der 10-jährigen Anleihe von 156 Basispunkten auf einen damaligen Rekordwert von 54 — die klassische Flucht in sichere Häfen, bei der Kapital von Aktien in Anleihen umschichtet wird. Dann änderte sich das Muster: Bis 2020-03-18 hatte sich die Rendite auf 118 Basispunkte mehr als verdoppelt, während sich der Rückgang des SPY von -18.9% auf -28.8% vertiefte. Dass Aktien und Staatsanleihen gleichzeitig fallen, ist ein Anzeichen für Zwangsverkäufe — Anleger beschaffen Liquidität, indem sie alles verkaufen, für das es noch Gebote gibt. Mitte März lag die Krise im Kreditwesen selbst, nicht im Aktienkurs.
Was die Fed tatsächlich angekündigt hat — und was nicht funktioniert hat
Zinssenkungen waren bereits versucht worden. Die zeitliche Abfolge, wie sie im Panel oben ersichtlich ist:
- 2020-03-03 — eine Notfall-Zinssenkung um einen halben Prozentpunkt, die erste Senkung zwischen zwei Sitzungen seit 2008. Der SPY schloss bei $300.34, -11.2% unter dem Hoch, und der Abwärtstrend setzte sich fort.
- 15. März, ein Sonntag — die Zinsen wurden auf Null gesenkt, ergänzt durch ein Programm zum Kauf von Vermögenswerten in Höhe von 700 Milliarden Dollar. Die nächste Sitzung, 2020-03-16, schloss -29.2% unter dem Februar-Hoch — eine der schlechtesten Einzelsitzungen des gesamten Crashs.
- 23. März, 8:00 Uhr ET — die Fed hob die Obergrenze auf: Käufe von Treasuries und hypothekenbesicherten Wertpapieren sollten „in den erforderlichen Mengen“ fortgesetzt werden, ohne zeitliche Begrenzung. Beigefügt waren der PMCCF und der SMCCF — die ersten Einrichtungen der Fed zum Kauf von Unternehmensanleihen — sowie ein wiederbelebtes TALF zur Unterstützung der Verbraucherkredite. Der SPY schloss an diesem Nachmittag weiterhin auf dem Tiefstand der Bärenseite.
- 24. März — die folgende Sitzung. Über Nacht einigte sich der Kongress auf das CARES-Gesetz in Höhe von etwa zwei Billionen Dollar; es wurde am 27. März unterzeichnet, innerhalb des dreitägigen Aufschwungs, der weiter unten dokumentiert ist.
Zwei gestalterische Unterschiede unterschieden das Paket vom 23. März von den vorherigen Versuchen. Ein Programm mit fester Größe hat ein Enddatum, das ein gestresster Markt voraussehen kann; „in den erforderlichen Mengen“ nicht. Zudem platzierten die Einrichtungen für Unternehmensanleihen einen öffentlichen Käufer direkt in den Kreditmärkten, in denen die Abläufe zum Erliegen gekommen waren. Ob diese Unterschiede entscheidend waren, bleibt eine Einschätzungsfrage; die Kursdaten dokumentieren die Abfolge — zwei Eskalationen, ein anhaltender Rückgang, ein dritter Entwurf und dann die Trendwende.
Der Tag in einer Zeile
Das exakte SQL hinter jeder Zahl
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')Vom Schlusskurs am 23. März bei $222.51 — dem letzten Schlusskurs des Bärenmarktes — eröffnete der SPY mit einem Gap von +5.4% bei $234.42. Er erreichte sein Tagestief von $233.8 in den ersten Minuten (09:31 ET) und erholte sich danach stetig: Der Schlusskurs bei $243.59 entsprach einem Plus von 9.5% für den Tag. Diese Rallye, die ihr Tief in der ersten Minute erreichte, ist das exakte Gegenstück zu einem Crash, der bei seinem Tiefpunkt schließt. Ein einziger Kursverlauf glättet jedoch den Weg – die halbstündliche Aufzeichnung darunter zeigt den Kursrückgang, den die Sitzung ausgleichen musste.
Der Verlauf der Sitzung
Das exakte SQL hinter jeder Zahl
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_timeDie Marktdaten sind eindeutig: Der Kursverlauf war unregelmäßig. Das Tief von $233.8 wurde bereits in der ersten Minute gebildet und nicht wieder erreicht – dieser einseitige Trend war real. Nachdem der Kurs bis zum Mittag auf $242.24 gestiegen war, gab der Markt für zwei Stunden nach. Die 13:30-Uhr-Session schloss bei $237.25, und die 14:00-Uhr-Session markierte mit $235.05 das Tief des Nachmittags. In diesem Zeitraum hätte der Tag als ein weiterer gescheiterter Erholungsversuch enden können. Stattdessen blieb die Korrektur deutlich über dem Eröffnungstief. Die letzte halbe Stunde lieferte mit einem Schlusskurs von $243.59 bei einem Volumen von 34.7 Millionen Aktien das Tageshoch. Dies war das höchste Volumen der gesamten Sitzung mit 232.4 Millionen Aktien, sogar höher als das Eröffnungsvolumen von 27.3 Millionen. Ein mittäglicher Rücksetzer, der Käufer anlockte, gefolgt von einem Schlusskurs auf Höchstniveau bei maximalem Volumen.
Broad rally, or narrow?
An index can be dragged higher by a handful of mega-caps. That is not what this was. Twelve funds — the three major index trackers plus nine S&P sector funds — on the same two closes:
Das exakte SQL hinter jeder Zahl
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 DESCAll 12 closed higher. Energy (XLE) led at +16.4%, with industrials (XLI, +12.8%) and financials (XLF, +12.7%) right behind — the most economically-sensitive corners of the market, the ones a shutdown threatens first. The Dow tracker DIA gained 11.3% — the move behind that week's "best day since 1933" headlines, a superlative that belongs to the Dow's longer price history. The smallest gains sat in the classic defensives, consumer staples (XLP, +5.1%) and healthcare (XLV, +7.4%), and the Nasdaq-100's QQQ (+7.7%) trailed SPY's +9.5%. A cyclicals-led, everything-green tape is the opposite shape of a narrow mega-cap squeeze — breadth was the day's signature.
Wie historisch war es wirklich?
„Größter Tag seit 1933“ ist eine Dow-Statistik aus den Zeitungen jener Woche. Hier ist das, was unsere eigenen Daten bestätigen können, begrenzt auf den tatsächlich abgedeckten Bereich:
Das exakte SQL hinter jeder Zahl
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_sharesSeit 2003-09-10 — der ersten Sitzung unserer Minutendaten — verzeichnete SPY 5613 tägliche Renditen im Close-to-Close-Vergleich. Der Wert vom 24. März 2020 von +9.5% belegt Platz #3: genau 2 Sitzungen waren besser (2008-10-13, 2008-10-28), beide innerhalb der Panik vom Oktober 2008. Die Dreitages-Sequenz ist noch seltener: Der Anstieg um +17.5% vom Schlusskurs am 23. März bis zum Schlusskurs am 26. März weist 0 größere Gewinne über drei Sitzungen auf als jeder andere Wert in der Stichprobe. Innerhalb des gesamten Prüfbereichs entspricht kein anderes Ereignis diesem Ausbruch.
Das Handelsvolumen erzählt eine zurückhaltendere Geschichte: 232 Millionen SPY-Aktien entsprachen dem 2.86-fachen des Durchschnitts des vorangegangenen Jahres — und nur dem 1.12-fachen des Durchschnitts der vorangegangenen 30 Sitzungen. Im Vergleich zu normalen historischen Zeiträumen war die Aktivität außergewöhnlich; im Vergleich zu den Crash-Wochen unmittelbar davor war es nur ein weiterer Tag innerhalb des Sturms. Historische Wendepunkte kündigen sich nicht durch historisches Volumen an.
Der dreitägige Aufschwung
Das exakte SQL hinter jeder Zahl
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_dateDie Trendwende setzte sich sofort fort: +9.5% am 24., +1.3% am 25., +5.9% am 26. — eine Serie von drei Sitzungen, die den mehrwöchigen Verfall rückgängig machte; kein größerer Anstieg ist im gesamten Datensatz zu finden. Das Muster vom März 2020 ähnelt März 2009: In beiden Fällen erfolgte die entscheidende politische Reaktion nahe dem Tiefpunkt, die erste Rallye-Phase war heftig, und der Tag mit den größten Chancen wirkte an jenem Morgen nicht anders als ein gewöhnlicher Bounce in einem Bärenmarkt.
Hat sich die Rallye gehalten?
In Echtzeit war die allgemeine Meinung eine „Bear-Market-Bounce“. Skeptiker hatten eigene Belege: Elf Tage zuvor hatte der Markt bereits eine fast ebenso große Rallye erlebt — von $248.1 am 2020-03-12 auf $270.93 am 2020-03-13 — und die darauffolgende Sitzung schloss bei $239.41, dem schlechtesten Tag des gesamten Crashs. Ein einziger positiver Tag war kein Beweis. Was den 24. März auszeichnet, ist das, was danach geschah:
Das exakte SQL hinter jeder Zahl
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_dateEin erneuter Test des Tiefs blieb aus. Nach dem 23. März lag der niedrigste Schlusskurs des SPY bei $243.59 — am 2020-03-24, dem Tag der Stimulus-Rallye. Der Markt schloss nie wieder innerhalb von 9.5% des Tiefpunkts. Das Vor-COVID-Hoch von $338.31 wurde am 2020-08-18 wieder erreicht — 103 Handelssitzungen nach dem Tiefpunkt. Dies entspricht einer 181-tägigen Bewegung vom Allzeithoch zurück zum Allzeithoch. Der Vergleich mit 2008, auf die gleiche Weise berechnet: Der 2007-10-09-Höchststand des SPY erreichte erst 2013-03-14, also 1983 Tage später, ein neues Schlusshoch. Zwei Krisen, zwei Geschwindigkeiten, ein Markt, der seinen Stoffwechsel dazwischen verändert hatte.
Was dieser Tag lehrt
Drei Erkenntnisse sind wichtig. Erstens war die Kurslücke entscheidend: Ein Großteil der Tagesgewinne entstand bereits vor der Eröffnung – alle, die auf einen Einstieg während der regulären Handelszeiten warteten, zahlten den ganzen Tag über drauf – die Mechanik des overnight gap wirkte mit maximaler Amplitude. Zweitens ging der Tiefpunkt dem Bestätigungssignal voraus: Der Schlusskurs vom 23. März war das Tief, was jedoch erst sichtbar wurde, nachdem Sitzungen wie diese das erneute Testen dieses Niveaus verweigerten. Drittens wirkt sich die Geschwindigkeit in beide Richtungen aus: Dieselbe Marktstruktur, die einen -34.2% Drawdown in die 24 Reihen darüber komprimierte, komprimierte die erste Erholung auf drei Sitzungen. Geschwindigkeit ist eine Eigenschaft der aktuellen Marktmechanik, nicht das Ergebnis von guten oder schlechten Nachrichten.
Die Skeptiker dieser Woche waren keine Dilettanten: Die Breite, der Ausbruch und der ausbleibende Retest – jedes Indiz, das den 24. März von den gescheiterten Rallyes unterscheidet, ist nur im Rückblick messbar. Der Unterschied zwischen einer Bärenmarkt-Rallye und einem neuen Bullenmarkt ist am ersten Tag unsichtbar und innerhalb weniger Monate eindeutig erkennbar.
COVID-Rally FAQ
Was am 24. März 2020?
Die erste vollständige Handelssitzung nach der Ankündigung der Fed zur unbegrenzten QE: Der SPY eröffnete mit einem Gap von +5.4% und schloss mit +9.5% — der #3 größte Tagesgewinn in den 5613 Sitzungen, die unser Minutenticker abdeckt, nur übertroffen von zwei Tagen im Oktober 2008.
Was hat die Fed am 23. März 2020 angekündigt?
Offene Käufe von Staatsanleihen und hypothekenbesicherten Wertpapieren – „in der erforderlichen Höhe“ – sowie der PMCCF und der SMCCF, ihre ersten Einrichtungen für den Kauf von Unternehmensanleihen, und ein wiederbelebtes TALF für Verbraucherkredite. Die Mitteilung erfolgte um 8:00 Uhr ET vor der Eröffnung; der SPY schloss an diesem Tag dennoch auf seinem Bärenmarkt-Tief.
War der 23. März 2020 der Tiefpunkt des COVID-Crashs?
Ja, basierend auf dem Schlusskurs: Der niedrigste Schlusskurs des SPY von $222.51 wurde am 23. März, Stunden nach der Ankündigung der Fed, verzeichnet. Dieser Wert wurde nie wieder erreicht – der niedrigste Schlusskurs danach fiel am 2020-03-24, 9.5% über dem Tiefpunkt.
Wann erreichte der Aktienmarkt sein Vorkrisen-Hoch wieder?
Der SPY schloss erstmals am 2020-08-18 über seinem Allzeithoch vom 19. Februar 2020, was 103 Handelssitzungen nach dem Tiefpunkt entspricht – eine 181-tägige Erholung im Vergleich zu 1983 Tagen beim entsprechenden Verlauf des Crashs von 2008.
Hätte man nach den Nachrichten kaufen können und trotzdem profitieren können?
Die Eröffnung erfolgte mit einem Gap von +5.4% vor Beginn des regulären Handels, und der Kurs stieg den Tag über weiter an – jeder spätere Einstieg war teurer als der vorangegangene Schlusskurs, lag aber immer noch weit unter dem Niveau der Erholung im August 2020.
Datenhinweise
- Schlusskurse sind die letzten Buchungen der regulären Sitzung (9:30 bis 16:00 Uhr ET) aus dem Minutenticker; sie können von den offiziellen Auktionsschlüssen um einige Cent abweichen.
- Erholungsdaten beziehen sich nur auf den Preis; eine Total-Return-Messung (mit reinvestierten Dividenden) erfolgt konstruktionsbedingt früher.
- Die 10-jährige Rendite wird der täglichen Serie der Staatsanleihen an Handelstagen hinzugefügt; Basispunkte sind Hundertstel eines Prozentpunkts.
- Die Stichprobe der Rangliste beginnt bei 2003-09-10 – „seit 2003“ auf dieser Seite bezieht sich auf diesen Zeitraum, nicht auf die gesamte aufgezeichnete Markthistorie.
Jedes obige Panel ist eine gespeicherte, versionierte Abfrage über den historischen Ticker – erweitern Sie das SQL, um jede Messung zu sehen. Möchten Sie diesen Tag erleben, anstatt ihn nur zu lesen? Er ist eines der spielbaren Szenarien im Strasmore Labs Trading-Simulator.