Strasmore Research
Investigasi Matt ConnorOleh Matt Connor · Diperbarui 2026-07-25

Kondisi Pasar Saham 24 Maret 2020

Analisis pergerakan pasar 24 Maret 2020 melalui minute tape: crash dan dash for cash, paket stimulus Fed, sector breadth, serta retest yang tidak pernah terjadi.

Pada 23 Maret 2020, Federal Reserve mengumumkan pembelian aset terbuka — QE tanpa batas yang ditentukan — ditambah sesuatu yang belum pernah dilakukan sebelumnya: fasilitas untuk membeli obligasi korporasi. 24 Maret 2020 adalah jawaban pasar: reli stimulus COVID, salah satu kenaikan ekuitas AS harian terbesar yang pernah tercatat, dan — yang baru terlihat setelah kejadian — hari kedua dari bull market baru. Titik terendah itu sendiri telah ditutup pada sore hari sebelum pengumuman tersebut keluar.

Kejatuhan sebelum pembalikan

Kejatuhan itu sendiri memiliki halamannya sendiri; berikut adalah data pendukungnya — setiap sesi dari titik tertinggi sepanjang masa hingga titik terendah, dengan yield Treasury 10-tahun dalam basis points:

QueryClose harian SPY, drawdown, dan yield 10-year — 19 Feb s.d. 23 Mar 2020
SQL tepat di balik setiap angka
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

Dari penutupan tertinggi sepanjang masa sebesar $338.31 pada 2020-02-19, SPY turun menjadi $222.51 pada 2020-03-23 — drawdown sebesar -34.2%, dengan setiap sesi penurunan tercatat di dalam 24 baris panel.

Kolom yield adalah kuncinya. Hingga 2020-03-09, yield 10-tahun anjlok dari 156 basis points ke rekor saat itu sebesar 54 — fenomena flight to safety klasik, di mana dana berpindah dari saham ke obligasi. Kemudian pola tersebut patah: pada 2020-03-18, yield meningkat lebih dari dua kali lipat menjadi 118 basis points sementara drawdown SPY semakin dalam dari -18.9% menjadi -28.8%. Saham dan Treasuries yang jatuh bersamaan adalah ciri khas dari forced selling — pemegang aset mengumpulkan kas dengan menjual apa pun yang masih memiliki bid. Pada pertengahan Maret, krisis tersebut berkaitan dengan mekanisme kredit itu sendiri, bukan harga saham.

Apa yang sebenarnya diumumkan Fed — dan apa yang tidak berhasil

Pemotongan rate telah dicoba sebelumnya. Urutan kronologisnya, yang setiap entrinya dapat dibaca pada panel di atas:

  • 2020-03-03 — pemotongan rate darurat sebesar setengah poin, pemotongan pertama di antara pertemuan sejak dua ribu delapan. SPY ditutup pada $300.34, -11.2% dari level tertinggi, dan penurunan terus berlanjut.
  • 15 Maret, hari Minggu — rate dipotong menjadi nol ditambah program pembelian aset sebesar tujuh ratus miliar dolar. Sesi berikutnya, 2020-03-16, ditutup -29.2% di bawah level tertinggi Februari — salah satu sesi tunggal terburuk dari seluruh periode crash.
  • 23 Maret, pukul 08.00 ET — Fed menghapus batas atas: pembelian Treasury dan mortgage-backed securities akan berlanjut "dalam jumlah yang dibutuhkan," tanpa batas waktu. Terlampir adalah PMCCF dan SMCCF — fasilitas pembelian obligasi korporasi pertama Fed — dan TALF yang dihidupkan kembali untuk mendukung kredit konsumen. SPY tetap ditutup pada level terendah bear market sore itu.
  • 24 Maret — sesi di bawah ini. Semalam, Kongres menyepakati CARES Act yang bernilai sekitar dua triliun dolar; undang-undang tersebut ditandatangani pada 27 Maret, di dalam periode tiga hari yang tercatat lebih lanjut di bawah.

Dua perbedaan desain memisahkan paket 23 Maret dari upaya sebelumnya. Program dengan ukuran tetap memiliki tanggal berakhir yang dapat diprediksi oleh pasar yang tertekan; "dalam jumlah yang dibutuhkan" tidak memilikinya. Dan fasilitas korporasi menempatkan pembeli publik secara langsung di dalam pasar kredit di mana sistem distribusinya telah macet. Apakah perbedaan tersebut yang menjadi faktor penentu adalah sebuah penilaian; data mencatat urutannya — dua eskalasi, penurunan berkelanjutan, desain ketiga, kemudian terjadi pembalikan arah.

Hari ini, dalam satu baris

QuerySPY pada 24 Maret 2020 — titik balik, terkonfirmasi
SQL tepat di balik setiap angka
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')

Dari penutupan 23 Maret di $222.51 — penutupan terakhir bear market — SPY mengalami gap +5.4% untuk buka di $234.42, mencatat low sesi di $233.8 pada menit-menit awal pembukaan (09:31 ET), dan tidak pernah kembali ke level tersebut: penutupan di $243.59 adalah +9.5% pada hari itu. Reli yang low-nya tercatat pada menit pertama adalah cerminan terbalik dari crash yang ditutup pada level terendahnya. Namun, satu baris meratakan jalurnya — tape setengah jam di bawah menunjukkan fade yang harus diserap sesi tersebut.

Bentuk sesi

QuerySPY per setengah jam — sesi reguler 24 Maret 2020
SQL tepat di balik setiap angka
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

Panel menunjukkan hasil yang jujur: jalur harga sempat berbelok. Level terendah $233.8 tercatat pada menit pembukaan dan tidak pernah dikunjungi kembali — bagian dari narasi satu arah tersebut adalah nyata. Namun setelah mencapai $242.24 pada bucket tengah hari, harga mengalami penurunan selama dua jam — bucket 13:30 ditutup pada $237.25, bucket 14:00 mencatat level terendah sore hari, $235.05 — periode di mana hari tersebut bisa saja menjadi satu lagi pantulan yang gagal. Sebaliknya, penurunan tersebut tertahan jauh di atas level terendah pembukaan, dan setengah jam terakhir memberikan penutupan bucket tertinggi sesi ini, $243.59, dengan 34.7 juta saham — bucket terberat dari total volume hari itu sebesar 232.4 juta saham, bahkan melampaui 27.3 juta pada saat pembukaan. Penurunan tengah hari yang menemukan pembeli, kemudian ditutup pada level tertinggi dengan volume puncak.

Reli luas, atau sempit?

Sebuah indeks dapat terdorong naik oleh segelintir saham mega-cap. Namun, hal tersebut tidak terjadi kali ini. Dua belas dana — tiga pelacak indeks utama ditambah sembilan dana sektor S&P — pada dua penutupan yang sama:

Query24 Maret 2020 lintas ETF indeks dan sektor — semua naik, cyclicals pertama
SQL tepat di balik setiap angka
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

Semua 12 ditutup lebih tinggi. Energy (XLE) memimpin dengan +16.4%, diikuti oleh industrials (XLI, +12.8%) dan financials (XLF, +12.7%) — sektor pasar yang paling sensitif terhadap ekonomi, yang paling terancam oleh shutdown. Pelacak Dow DIA naik 11.3% — pergerakan di balik tajuk utama "hari terbaik sejak seribu sembilan ratus tiga puluh tiga" pada minggu itu, sebuah superlatif yang merujuk pada sejarah harga Dow yang lebih panjang. Kenaikan terkecil terjadi pada sektor defensif klasik, consumer staples (XLP, +5.1%) dan healthcare (XLV, +7.4%), sementara QQQ dari Nasdaq-100 (+7.7%) tertinggal dari SPY yang naik +9.5%. Kenaikan menyeluruh yang dipimpin oleh saham siklikal adalah kebalikan dari squeeze mega-cap yang sempit — breadth menjadi ciri khas hari tersebut.

Seberapa bersejarah peristiwa tersebut sebenarnya?

"Hari terbesar sejak tahun seribu sembilan ratus tiga puluh tiga" adalah statistik Dow dari surat kabar minggu itu. Berikut adalah apa yang dapat diverifikasi oleh data kami, sesuai dengan cakupan datanya:

QueryPeringkat 24 Maret 2020 terhadap setiap sesi SPY pada minute tape
SQL tepat di balik setiap angka
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

Sejak 2003-09-10 — sesi pertama dari data menit kami — SPY telah mencatat 5613 return harian close-to-close. Angka +9.5% pada tanggal dua puluh empat Maret dua ribu dua puluh menempati peringkat #3: tepat 2 sesi melampauinya (2008-10-13, 2008-10-28), keduanya terjadi dalam kepanikan Oktober dua ribu delapan. Urutan tiga hari bahkan lebih langka: kenaikan +17.5% dari penutupan dua puluh tiga Maret hingga penutupan dua puluh enam Maret hanya memiliki 0 keuntungan tiga sesi yang lebih besar di seluruh sampel. Dalam semua data yang dapat diperiksa oleh gudang data ini, tidak ada yang menyamai lonjakan tersebut.

Volume menceritakan kisah yang lebih tenang: 232 juta saham SPY adalah 2.86× rata-rata tahunan sebelumnya — dan hanya 1.12× rata-rata dari tiga puluh sesi sebelumnya. Dibandingkan dengan periode sejarah normal, aktivitas tersebut luar biasa; namun dibandingkan dengan minggu-minggu crash sebelumnya, itu hanyalah hari biasa di tengah badai. Perubahan bersejarah tidak selalu mengumumkan dirinya dengan volume yang bersejarah.

Lonjakan tiga hari

QueryClose SPY, 23-26 Maret 2020 — lonjakan tiga hari
SQL tepat di balik setiap angka
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

Pembalikan harga terjadi secara akumulatif: +9.5% pada tanggal 24, +1.3% pada tanggal 25, +5.9% pada tanggal 26 — rangkaian tiga sesi yang menghapus penurunan selama beberapa minggu, tanpa ada lonjakan yang lebih besar dalam sampel di atas. Pola Maret dua ribu dua puluh memiliki kemiripan dengan Maret dua ribu sembilan: pada keduanya, respons kebijakan yang menentukan tiba dekat titik terendah, tahap rally pertama terjadi secara agresif, dan hari dengan peluang maksimum terlihat — pada pagi itu — tidak berbeda dari pantulan bear-market lainnya.

Apakah rally bertahan?

Secara real-time, "bear-market bounce" adalah pandangan konsensus, dan pihak skeptis memiliki buktinya sendiri: sebelas hari sebelumnya pergerakan harga telah menghasilkan rally dengan ukuran yang hampir sama — dari $248.1 pada 2020-03-12 menjadi $270.93 pada 2020-03-13 — dan sesi setelah itu ditutup pada $239.41, hari terburuk dari seluruh crash tersebut. Satu hari hijau tidak membuktikan apa pun. Hal yang membedakan tanggal 24 Maret adalah apa yang terjadi setelahnya:

QueryApakah bertahan? Retest yang tidak pernah terjadi, dan dua recovery clocks
SQL tepat di balik setiap angka
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

Retest tidak pernah terjadi. Setelah 23 Maret, penutupan terendah yang pernah dicatat SPY adalah $243.59 — pada 2020-03-24, hari stimulus-rally itu sendiri. Pasar tidak pernah lagi ditutup dalam rentang 9.5% dari titik terendah. Titik tertinggi pra-COVID sebesar $338.31 tercapai kembali pada 2020-08-18103 sesi perdagangan setelah titik terendah, perjalanan pulang-pergi selama 181 hari dari all-time high kembali ke all-time high. Perbandingan tahun 2008, yang dihitung dengan cara yang sama: puncak 2007-10-09 SPY tidak mencatat penutupan tertinggi baru hingga 2013-03-14, 1983 hari kemudian. Dua krisis, dua kecepatan, satu pasar yang telah mengubah metabolismenya di antaranya.

Apa yang dipelajari hari ini

Tiga poin penting untuk dipahami. Pertama, gap melakukan tugasnya: sebagian besar keuntungan hari ini sudah ada sebelum pembukaan — siapa pun yang menunggu entri pada jam perdagangan reguler harus membayar lebih sepanjang hari — mekanika overnight gap berada pada amplitudo maksimum. Kedua, titik terendah mendahului konfirmasi: penutupan tanggal dua puluh tiga Maret adalah titik terendah, yang hanya terlihat setelah sesi seperti hari ini menolak untuk kembali ke level tersebut. Ketiga, kecepatan bekerja dua arah: struktur pasar yang sama yang memampatkan drawdown -34.2% menjadi baris 24 di atas, juga memampatkan pemulihan awal menjadi tiga sesi. Kecepatan adalah properti dari infrastruktur pasar era ini, bukan karena berita baik atau buruk.

Para skeptis pada minggu itu bukanlah orang bodoh: breadth, lonjakan, dan retest yang tidak pernah terjadi — setiap bukti yang membedakan tanggal dua puluh empat Maret dari reli yang gagal hanya dapat diukur setelah kejadian berlalu. Perbedaan antara bear-market rally dan bull market baru tidak terlihat pada hari pertama dan tidak terbantahkan dalam beberapa bulan.

FAQ rally COVID

Apa yang terjadi pada 24 Maret 2020?

Sesi penuh pertama setelah pengumuman unlimited-QE oleh Fed: SPY gap +5.4% saat pembukaan dan ditutup +9.5% — kenaikan satu hari peringkat #3 dalam 5613 sesi yang tercakup dalam minute tape kami, hanya kalah dari dua hari pada Oktober dua ribu delapan.

Apa yang diumumkan Fed pada 23 Maret 2020?

Pembelian Treasury dan mortgage-backed securities tanpa batas — "dalam jumlah yang dibutuhkan" — ditambah PMCCF dan SMCCF, fasilitas pertama mereka untuk membeli obligasi korporasi, serta TALF yang diaktifkan kembali untuk kredit konsumen. Pernyataan tersebut keluar pukul 8:00 pagi ET, sebelum pembukaan; SPY tetap ditutup pada hari itu di titik terendah bear-market.

Apakah 23 Maret 2020 merupakan titik terendah dari crash COVID?

Ya, berdasarkan harga penutupan: penutupan terendah SPY sebesar $222.51 tercatat pada 23 Maret, beberapa jam setelah pengumuman Fed. Titik ini tidak pernah terulang — penutupan terendah setelahnya terjadi pada 2020-03-24, 9.5% di atas titik terendah.

Kapan pasar saham pulih ke level tertinggi pra-COVID?

SPY pertama kali ditutup di atas harga penutupan all-time-high 19 Februari 2020 pada 2020-08-18, 103 sesi perdagangan setelah titik terendah — perjalanan pulang selama 181 hari, dibandingkan 1983 hari untuk perjalanan serupa pada crash dua ribu delapan.

Mungkinkah Anda membeli setelah berita tersebut dan tetap mendapatkan hasil yang baik?

Harga pembukaan gap +5.4% sebelum perdagangan reguler dimulai, dan harga terus naik sepanjang hari — setiap entri setelahnya lebih mahal daripada penutupan sebelumnya, namun tetap jauh di bawah posisi pasar saat pemulihan Agustus 2020.

Catatan Data
  • Harga penutupan adalah cetakan terakhir dari minute tape sesi reguler (9:30 pagi-4:00 sore ET); harga ini bisa berbeda beberapa sen dari penutupan lelang resmi.
  • Tanggal pemulihan hanya berdasarkan harga; ukuran total-return (dividen diinvestasikan kembali) pulih lebih cepat secara konstruksi.
  • Yield 10-tahun bergabung dengan seri harian Treasury pada tanggal perdagangan; basis point adalah seperseratus dari satu poin persentase.
  • Sampel panel peringkat dimulai 2003-09-10 — "sejak dua ribu tiga" di halaman ini berarti jendela waktu tersebut, bukan seluruh sejarah pasar yang tercatat.

Setiap panel di atas adalah query tersimpan dan terversi dari historical tape — perluas SQL untuk melihat setiap pengukuran. Ingin merasakan hari ini daripada sekadar membacanya? Ini adalah salah satu skenario yang dapat dimainkan dalam simulator trading Strasmore Labs.

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