Strasmore Research
심층 분석 Matt Connor작성자 Matt Connor · 업데이트됨 2026-07-24

2020년 3월 24일 시장 반등 분석

2020년 3월 24일 시장의 폭락과 반등을 분석합니다. Fed의 대응과 섹터별 흐름을 통해 당시의 역사적 변곡점을 확인하십시오.

2020년 3월 23일, Federal Reserve(연방준비제도)는 한도 제한이 없는 양적 완화(QE)인 무기한 자산 매입을 발표했습니다. 또한 이전에는 시행한 적 없는 기업 채권 매입 시설도 함께 도입했습니다. 2020년 3월 24일은 이에 대한 시장의 반응이 나타난 날입니다. COVID-19 부양책으로 인한 랠리가 발생하며 미국 주식 시장은 역대 최대 규모의 일일 상승폭 중 하나를 기록했습니다. 사후적으로 확인된 사실이지만, 이는 새로운 강세장의 두 번째 날이었습니다. 시장의 저점은 발표가 있기 전날 오후에 이미 형성되었습니다.

반등 전의 폭락

폭락 그 자체는 별도의 페이지에서 다룹니다. 여기에는 역대 최고치부터 저점까지의 모든 세션 데이터가 포함되어 있으며, 10-year Treasury(10년 만기 국채) 수익률을 basis points(bp, 0.01%p) 단위로 함께 표기했습니다.

조회SPY 일별 종가, drawdown(낙폭), 및 10년물 금리 — 2020년 2월 19일 ~ 3월 23일
모든 수치 뒤에 숨겨진 정확한 SQL
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

2020-02-19에 기록한 역대 최고 종가 $338.31 이후, SPY는 2020-03-23까지 $222.51로 하락했습니다. 이는 -34.2%의 drawdown(낙폭)을 기록한 것이며, 하락 과정의 모든 세션 데이터는 패널의 24 행에 포함되어 있습니다.

수익률 열이 핵심 지표입니다. 2020-03-09 동안 10-year 수익률은 156 bp에서 당시 사상 최고치인 54 bp로 급락했습니다. 이는 주식에서 채권으로 자금이 이동하는 전형적인 flight to safety(안전 자산 선호) 현상입니다. 이후 패턴이 깨졌습니다. 2020-03-18에 이르러 수익률은 118 bp로 두 배 이상 급등했고, 동시에 SPY의 drawdown은 -18.9%에서 -28.8%로 심화되었습니다. 주식과 국채가 동시에 하락하는 것은 강제 매도의 특징입니다. 즉, 보유자들이 매수세가 남아 있는 자산을 모두 팔아 현금을 확보하려는 움직임입니다. 3월 중순에 이르러 위기의 본질은 주가가 아닌 신용 시장의 유동성 문제로 전이되었습니다.

연준의 실제 발표 내용 — 그리고 효과가 없었던 조치들

금리 인하 시도는 이미 이루어졌습니다. 상단 패널에서 확인할 수 있는 시계열 순서는 다음과 같습니다:

  • 2020-03-03 — 0.5%포인트의 긴급 금리 인하가 단행되었습니다. 이는 2008년 이후 첫 회의 간 금리 인하였습니다. SPY는 $300.34로 마감했으며, 고점 대비 -11.2% 하락하며 하락세가 지속되었습니다.
  • 3월 15일, 일요일 — 금리가 0%로 인하되었으며, 7,000억 달러 규모의 자산 매입 프로그램이 도입되었습니다. 다음 거래일인 2020-03-16은 2월 고점보다 -29.2% 낮은 수준에서 마감하며, 전체 폭락장 중 최악의 단일 거래일 중 하나를 기록했습니다.
  • 3월 23일, 오전 8시(ET) — 연준은 매입 한도를 철폐했습니다. 국채 및 주택저당증권(MBS) 매입을 "필요한 규모만큼" 무기한으로 지속하기로 했습니다. 이와 함께 연준 역사상 최초의 회사채 매입 시설인 PMCCF와 SMCCF, 그리고 소비자 신용을 지원하기 위해 재가동된 TALF가 도입되었습니다. 하지만 그날 오후 SPY는 여전히 하락장의 저점에서 마감했습니다.
  • 3월 24일 — 아래의 거래 세션입니다. 밤사이 미 의회는 약 2조 달러 규모의 CARES Act(미국 긴급 자금 지원법)에 합의했습니다. 해당 법안은 3월 27일에 서명되었으며, 상세 내용은 아래 관련 내용에서 확인할 수 있습니다.

3월 23일의 패키지는 이전의 시도들과 두 가지 설계 측면에서 차이가 있었습니다. 고정된 규모의 프로그램은 시장이 예측할 수 있는 종료 시점이 존재하지만, "필요한 규모만큼"이라는 조건은 그렇지 않습니다. 또한, 기업 지원 시설은 금융 시스템의 기능이 마비된 신용 시장에 공적 매수자를 직접 투입했습니다. 이러한 차이점이 결정적인 역할을 했는지 여부는 판단의 영역입니다. 기록된 사실은 다음과 같습니다. 두 차례의 조치 강화와 지속적인 하락, 세 번째 설계의 도입, 그리고 반등이 일어났다는 점입니다.

하루의 흐름

조회2020년 3월 24일 SPY — 반전의 기록
모든 수치 뒤에 숨겨진 정확한 SQL
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')

하락장(bear market)의 마지막 종가인 $222.51(3월 23일 기준) 이후, SPY는 $234.42에서 +5.4% 갭 상승하며 개장했습니다. 개장 직후인 09:31 (ET)에 세션 저점인 $233.8를 기록했으나, 이후 해당 가격대까지 회복하지 못했습니다. 종가는 $243.59로 당일 +9.5%를 기록했습니다. 이는 첫 1분 동안 저점을 기록한 후 반등하는 양상으로, 저점에서 마감하는 폭락장과는 정반대의 흐름을 보인 랠리입니다. 하지만 단일 행의 데이터는 흐름을 단순화합니다. 아래의 30분 단위 데이터는 해당 세션이 극복해야 했던 하락세를 보여줍니다.

세션의 흐름

조회30분 단위 SPY — 2020년 3월 24일 정규장
모든 수치 뒤에 숨겨진 정확한 SQL
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

시장의 흐름은 명확했습니다. 가격은 굴곡을 그리며 움직였습니다. 개장 직후 $233.8 저점이 형성된 이후 해당 가격대는 다시 도달하지 않았습니다. 이는 단방향적인 움직임이 상당 부분 실재했음을 의미합니다. 그러나 정오 무렵 $242.24에 도달한 이후, 가격은 두 시간 동안 하락했습니다. 13:30 구간은 $237.25로 마감되었고, 14:00 구간에서 오후 최저점인 $235.05를 기록했습니다. 이 구간은 하루의 흐름이 다시 한번 반등에 실패할 수도 있었던 시점이었습니다. 하지만 가격 하락세는 개장 시 저점보다 훨씬 높은 수준에서 방어되었습니다. 마지막 30분 동안 거래량은 34.7 million(백만) 주를 기록하며 세션 최고가인 $243.59로 마감되었습니다. 이는 개장 시의 27.3 million(백만) 주보다도 많은 수치로, 232.4-million(백만) 주의 총 거래량을 기록한 이날 중 가장 높은 거래량을 보인 구간입니다. 정오의 하락세에서 매수세가 유입되었으며, 최대 거래량과 함께 고가로 마감되었습니다.

광범위한 상승인가, 국한된 상승인가?

지수는 소수의 대형주에 의해 끌려 올라갈 수 있습니다. 이번 장세는 그렇지 않았습니다. 세 개의 주요 지수 추종 펀드와 9개의 S&P 섹터 펀드를 포함한 12개의 펀드가 동일한 두 거래일 동안 다음과 같이 마감했습니다.

조회2020년 3월 24일 지수 및 sector ETF 시장 폭(breadth) — 전 종목 상승, 경기 민감주(cyclicals) 우선
모든 수치 뒤에 숨겨진 정확한 SQL
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

모든 12가 상승 마감했습니다. 에너지(XLE) 섹터가 +16.4%로 상승을 주도했으며, 산업재(XLI, +12.8%)와 금융(XLF, +12.7%)이 그 뒤를 이었습니다. 이들은 정부 셧다운 시 가장 먼저 타격을 받는 시장의 경제 민감도가 높은 분야입니다. Dow 지수 추종 ETF인 DIA는 11.3% 상승했습니다. 이는 해당 주간에 보도된 "1933년 이후 최고의 날"이라는 헤드라인의 배경이 된 움직임이며, 이는 Dow 지수의 긴 가격 역사에 기록될 만한 성과입니다. 가장 낮은 상승률을 보인 섹터는 전통적인 방어주인 필수 소비재(XLP, +5.1%)와 헬스케어(XLV, +7.4%)였습니다. Nasdaq-100 지수 추종 ETF인 QQQ(+7.7%)는 SPY의 +9.5% 상승에 뒤처졌습니다. 경기 민감주가 주도하며 모든 종목이 상승한 장세는 대형주에 의한 국한된 상승(squeeze)과는 정반대의 형태입니다. 이번 장세의 특징은 시장의 폭(breadth)이었습니다.

실제로 얼마나 역사적인 사건이었는가?

"1933년 이후 최대 규모의 날"이라는 표현은 해당 주간 신문에 보도된 Dow(다우 존스 산업평균지수) 통계입니다. 당사의 데이터가 검증할 수 있는 범위 내에서의 실제 수치는 다음과 같습니다.

조회2020년 3월 24일 분 단위 SPY 세션별 순위 비교 (2003년 이후)
모든 수치 뒤에 숨겨진 정확한 SQL
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

당사의 분 단위 데이터 첫 세션인 2003-09-10 이후, SPY(S&P 500 ETF)의 일일 종가 기준 수익률은 5613회 기록되었습니다. 2020년 3월 24일의 +9.5% 수익률은 #3위를 차지합니다. 즉, 정확히 2번의 세션이 이 기록을 경신했으며(2008-10-13, 2008-10-28), 이는 모두 2008년 10월의 금융 위기 기간 내에 발생했습니다. 3일 연속 상승 흐름는 더욱 드뭅니다. 3월 23일 종가부터 3월 26일 종가까지 이어진 +17.5%의 상승세보다 더 큰 3거래일 수익률은 전체 표본 중 0번뿐입니다. 당사의 데이터베이스 내에서 이 폭발적인 변동성에 상응하는 사례는 존재하지 않습니다.

거래량은 다른 양상을 보여줍니다. SPY 거래량은 2.86배인 232백만 주를 기록했습니다. 이는 직전 30거래일 평균의 1.12배에 불과합니다. 일반적인 역사적 기간과 비교하면 이 거래량은 매우 이례적입니다. 하지만 폭락이 이어지던 전치 주간과 비교하면, 이는 폭풍 속의 평범한 하루 중 하나였습니다. 역사적인 변동성이 반드시 역사적인 거래량을 동반하며 나타나는 것은 아닙니다.

3일간의 급등

조회SPY 종가, 2020년 3월 23일-26일 — 3일간의 급등
모든 수치 뒤에 숨겨진 정확한 SQL
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

반등세가 즉각적으로 강화되었습니다. 24일 +9.5%, 25일 +1.3%, 26일 +5.9%를 기록했습니다. 이는 수 주간 이어진 하락세를 단 3거래일 만에 만회한 결과이며, 해당 표본 내에서 이보다 큰 상승폭은 존재하지 않았습니다. 2020년 3월의 패턴은 2009년 3월과 유사한 양상을 보입니다. 두 사례 모두 결정적인 정책 대응이 저점 근처에서 이루어졌으며, 첫 번째 반등 구간이 매우 강력했습니다. 또한, 당일 오전의 최대 매수 기회는 다른 약세장 반등과 구별할 수 없는 모습이었습니다.

반등이 유지되었는가?

실시간 상황에서 시장의 합의된 견해는 "약세장 반등(bear-market bounce)"이었으며, 회의론자들은 근거를 제시했습니다. 11일 전에도 이와 거의 유사한 규모의 상승이 이미 발생했습니다. 2020-03-12에 $248.1였던 지수는 2020-03-13에 $270.93까지 상승했습니다. 그리고 그 다음 거래일은 전체 폭락장 중 최악의 날인 $239.41로 마감되었습니다. 단 하루의 상승은 아무것도 증명하지 못했습니다. 3월 24일이 갖는 차별점은 그 이후의 흐름입니다:

조회지지 여부: 발생하지 않은 재시험과 두 개의 회복 시계
모든 수치 뒤에 숨겨진 정확한 SQL
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)은 일어나지 않았습니다. 3월 23일 이후, SPY가 기록한 역대 최저 종가는 부양책 반등이 일어난 날인 2020-03-24의 $243.59였습니다. 시장은 다시는 저점의 9.5% 범위 내에서 종가를 형성하지 않았습니다. COVID-19 이전 고점인 $338.312020-08-18에 회복되었습니다. 이는 저점으로부터 103 거래일이 지난 시점이며, 전고점에서 다시 전고점까지 181일 만에 회복된 것입니다. 동일한 방식으로 계산한 2008년과의 비교 결과는 다음과 같습니다. SPY의 2007-10-09 정점은 2013-03-14에 이르러서야 새로운 종가 고점을 기록했으며, 이는 1983일이 경과한 후였습니다. 두 번의 위기, 두 개의 속도, 그리고 그 사이 대사율이 변한 하나의 시장입니다.

오늘이 주는 교훈

내재화해야 할 세 가지 교훈이 있다. 첫째, 갭(gap)이 시장을 주도했다. 당일 상승분의 상당 부분은 개장 전에 이미 발생했다. 개장 후 진입을 기다린 투자자들은 하루 종일 높은 가격을 지불해야 했다. 이는 overnight gap 메커니즘이 최대 진폭으로 작용했음을 의미한다. 둘째, 저점은 확인보다 먼저 나타났다. 3월 23일의 종가가 저점이었으나, 이는 오늘과 같은 장세가 해당 가격대를 다시 방문하지 않으면서 사후적으로 확인되었다. 셋째, 속도는 양방향으로 작용한다. -34.2% 하락을 24 구간으로 압축했던 시장 구조가 초기 회복세 또한 세 거래일 만에 압축했다. 속도는 호재나 악재의 문제가 아니라, 현 시대 시장 구조의 특성이다.

지난주 회의론자들이 틀린 것은 아니었다. 시장 폭(breadth), 급등, 그리고 발생하지 않은 재테스트 등 3월 24일과 실패한 반등을 구분 짓는 모든 지표는 사후에만 측정 가능하다. 약세장 속의 반등과 새로운 강세장의 차이는 첫날에는 보이지 않지만, 몇 달 이내에는 명확해진다.

COVID 반등 FAQ

2020년 3월 24일에는 어떤 일이 있었습니까?

Fed(연방준비제도)의 무제한 QE(양적 완화) 발표 이후 첫 전체 거래일입니다. SPY는 개장 시 +5.4% 갭 상승했으며, 9.5% 상승하며 마감했습니다. 이는 본 서비스의 분 단위 데이터가 기록하는 5613 거래일 중 #3 번째로 큰 일일 상승폭이며, 2008년 10월의 두 거래일 다음으로 큰 수치입니다.

2020년 3월 23일에 Fed는 무엇을 발표했습니까?

국채 및 주택저당증권에 대해 "필요한 규모만큼" 무기한 매입을 결정했습니다. 또한 기업 채권을 매입하기 위한 최초의 기구인 PMCCF와 SMCCF, 그리고 소비자 신용을 위한 TALF(부채담보부채권 유동성 지원 프로그램) 재가동을 발표했습니다. 성명서는 개장 전인 동부 표준시 오전 8시에 발표되었습니다. SPY는 해당일에도 약세장 저점에서 마감했습니다.

2020년 3월 23일이 COVID 폭락장의 저점이었습니까?

종가 기준으로 그렇습니다. Fed의 발표 몇 시간 후인 3월 23일에 SPY는 $222.51로 저가 마감했습니다. 이후 이 가격대는 다시 도달하지 않았습니다. 저점 이후 가장 낮은 종가는 2020-03-24에 기록되었으며, 이는 저점보다 9.5% 높았습니다.

주식 시장은 언제 COVID 이전의 고점을 회복했습니까?

SPY는 저점 이후 103 거래일이 지난 2020-08-18에 2020년 2월 19일의 사상 최고치 종가를 처음으로 상회하며 마감했습니다. 이는 181일간의 왕복 과정이었으며, 2008년 폭락장의 동일한 과정인 1983일보다 짧았습니다.

뉴스 발표 이후 매수했어도 수익을 낼 수 있었습니까?

정규 거래 시작 전 개장가가 +5.4% 갭 상승했으며, 장중 가격은 계속 상승했습니다. 이후의 모든 진입 시점은 이전 종가보다 높은 가격이었으나, 2020년 8월 회복기 당시의 시장 가격보다는 훨씬 낮은 수준이었습니다.

데이터 참고 사항
  • 종가는 분 단위 데이터의 정규 거래 세션(동부 표준시 오전 9:30-오후 4:00) 마지막 기록입니다. 공식 경매 종가와는 몇 센트 정도 차이가 날 수 있습니다.
  • 회복 날짜는 가격 기준입니다. 배당금을 재투자하는 총수익(Total Return) 기준으로는 구조적으로 더 빨리 회복됩니다.
  • 10년물 수익률은 거래일에 국채 일일 시리즈에 포함됩니다. Basis point(bp, 0.01%포인트)를 기준으로 합니다.
  • 순위 패널의 샘플은 2003-09-10부터 시작됩니다. 이 페이지의 "2003년 이후"라는 표현은 해당 기간을 의미하며, 기록된 모든 시장 역사를 의미하는 것은 아닙니다.

위의 모든 패널은 과거 기록에 대해 저장 및 버전 관리가 되는 쿼리입니다. SQL을 확장하여 각 측정값을 확인할 수 있습니다. 이 날의 시장 상황을 직접 경험해 보고 싶습니까? [Strasmore Labs 트레이딩 시뮬레이터]에서 플레이 가능한 시나리오 중 하나로 제공됩니다.

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