24 मार्च 2020 बाजार वळला
24 मार्च 2020 ची मिनिटेबद्ध पुनरावृत्ती: क्रॅश, रोख रकमेची धाव, फेडचे वेगळे पॅकेज, सेक्टर ब्रेडथ आणि न आलेली रीटेस्ट.
-34.2%
23 मार्च 2020 रोजी, फेडरल रिझर्व्हने मर्यादा नसलेली क्वांटिटेटिव्ह ईझिंग (QE) — तसेच कॉर्पोरेट बाँड खरेदीसाठीची सुविधा — जाहीर केली, जे त्यांनी यापूर्वी कधीही केले नव्हते. 24 मार्च 2020 हा बाजाराचा प्रतिसाद होता: कोविड प्रोत्साहन रॅली, अमेरिकन इक्विटीजमध्ये एका दिवसातील सर्वात मोठ्या नफ्यांपैकी एक, आणि — मागे वळून पाहता — नवीन बुल मार्केटचा दुसरा दिवस. तळ स्वतःच जाहीरनामा येण्यापूर्वीच्या दुपारी बंद झाला होता.
टर्नच्या आधीचा क्रॅश
हा क्रॅश स्वतःचे एक वेगळे पान आहे; येथे हा आकडा कोणत्या आधारावर उभा आहे — सर्वोच्च टप्प्यापासून तळापर्यंतचे प्रत्येक सत्र, 10 वर्षांच्या ट्रेझरी उत्पन्नासह बेसिस पॉइंट्समध्ये:
प्रत्येक आकड्यामागील अचूक 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_date2020-02-19 रोजीच्या $338.31 च्या सर्वोच्च बंदपासून, 2020-03-23 पर्यंत SPY $222.51 वर घसरला — ही -34.2% ची घसरण आहे, पॅनेलच्या 24 ओळींमध्ये या घसरणीचे प्रत्येक सत्र समाविष्ट आहे.
उत्पन्न स्तंभ हा सूचक आहे. 2020-03-09 पर्यंत 10 वर्षांचे उत्पन्न 156 बेसिस पॉइंट्सवरून तत्कालीन विक्रमी 54 वर कोसळले — ही सुरक्षिततेकडे जाणारी क्लासिक उड्डाण आहे, पैसा शेअर्समधून बाँड्सकडे सरकत आहे. नंतर हा नमुना तुटला: 2020-03-18 पर्यंत उत्पन्न दुपटीपेक्षा जास्त वाढून 118 बेसिस पॉइंट्सवर पोहोचले होते, तर SPY ची घसरण -18.9% वरून -28.8% पर्यंत खोलवर गेली. शेअर्स आणि ट्रेझरीज एकत्र घसरणे हे सक्तीच्या विक्रीचे लक्षण आहे — ज्यांच्याकडे अजूनही बोली आहे अशी मालमत्ता विकून भागधारक रोख रक्कम उभी करत आहेत. मार्चच्या मध्यापर्यंत संकट शेअर्सच्या किमतीबद्दल नसून क्रेडिटच्या पायाभूत सुविधांबद्दल होते.
फेडने प्रत्यक्षात काय जाहीर केले — आणि काय काम करत नव्हते
व्याजदर कपातीचा प्रयत्न आधीच झाला होता. कालक्रमानुसार, प्रत्येक नोंद वरील पटलावर वाचता येईल:
- 2020-03-03 — आणीबाणीची अर्धा टक्का व्याजदर कपात, 2008 नंतरची बैठकीदरम्यानची पहिली कपात. SPY $300.34 वर बंद झाला, -11.2% ने उच्चांकापासून खाली, आणि घसरण सुरूच राहिली.
- 15 मार्च, रविवार — व्याजदर शून्यावर आणले गेले आणि $700 अब्ज डॉलर्सचा मालमत्ता खरेदी कार्यक्रम जाहीर केला गेला. पुढच्या सत्रात, 2020-03-16, फेब्रुवारीच्या उच्चांकापेक्षा -29.2% ने खाली बंद झाला — संपूर्ण क्रॅशमधील सर्वात वाईट सत्रांपैकी एक.
- 23 मार्च, सकाळी 8:00 ET — फेडने मर्यादा काढून टाकली: ट्रेझरी आणि मॉर्टगेज-बॅक्ड सिक्युरिटीजची खरेदी "आवश्यक तेवढ्या प्रमाणात" सुरू राहील, म्हणजेच मुक्त-समाप्ती. यासोबत PMCCF आणि SMCCF — फेडची पहिली कॉर्पोरेट बाँड खरेदी सुविधा — आणि ग्राहक कर्जाला आधार देणारा पुनरुज्जीवित TALF जोडले गेले. SPY त्या दुपारी अस्वलाच्या नीचांकावरच बंद झाला.
- 24 मार्च — खालील सत्र. रात्रभरात, काँग्रेसने अंदाजे $2 ट्रिलियन डॉलर्सच्या CARES कायद्यावर एकमत केले; तो 27 मार्च रोजी स्वाक्षरी करण्यात आला, पुढे नमूद केलेल्या तीन दिवसांच्या उसळीच्या आत.
23 मार्चच्या पॅकेजमध्ये आधीच्या प्रयत्नांपेक्षा दोन डिझाइन फरक होते. निश्चित आकाराच्या कार्यक्रमाची एक अंतिम तारीख असते जी तणावग्रस्त बाजारपेठ पार करू शकते; "आवश्यक तेवढ्या प्रमाणात" असे नसते. आणि कॉर्पोरेट सुविधांनी एक सार्वजनिक खरेदीदार थेट क्रेडिट मार्केटमध्ये ठेवला जिथे यंत्रणा बंद पडली होती. हे फरक महत्त्वाचे होते की नाही हा निर्णयाचा प्रश्न आहे; टेप क्रम नोंदवते — दोन वाढ, सतत घसरण, तिसरी रचना, नंतर वळण.
दिवस, एका ओळीत
प्रत्येक आकड्यामागील अचूक 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')222.51 डॉलरच्या मार्च 23 च्या बंद भावापासून — मंदीच्या बाजाराचा शेवटचा बंद — SPY ने +5.4% ची तफा दाखवत 234.42 डॉलरवर उघडले, सुरुवातीच्या मिनिटांत (09:31 ET) 233.8 डॉलरचा सत्रातील नीचांक नोंदवला, आणि त्या पातळीवर परत आले नाही: 243.59 डॉलर वरील बंद हा दिवसभरात +9.5% होता. ज्या सत्रात नीचांक पहिल्याच मिनिटात नोंदवला जातो, ती तेजी ही नीचांकावर बंद होणाऱ्या कोसळण्याची उलटी प्रतिमा असते. तथापि, एक ओळ मार्ग सपाट करते — खालील अर्ध्या तासाचा टेप सत्राला शोषून घ्यावा लागलेला मंदावा दाखवतो.
सत्राचा आकार
प्रत्येक आकड्यामागील अचूक 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 डॉलर नोंदवली — हा तो भाग होता जिथे दिवस आणखी एक अयशस्वी उसळी ठरू शकला असता. त्याऐवजी, ही परतफेड उघडण्याच्या नीचांकी पातळीपेक्षा खूप वर राहिली आणि शेवटच्या अर्ध्या तासाने सत्रातील सर्वोच्च बकेट क्लोज 243.59 डॉलर 34.7 दशलक्ष शेअर्सवर दिले — 232.4-दशलक्ष-शेअर्सच्या दिवसातील ही सर्वात जड बकेट होती, उघडण्याच्या 27.3 दशलक्ष शेअर्सपेक्षाही वर. दुपारची घसरण ज्यात खरेदीदार सापडतात, नंतर शिखर व्हॉल्यूमवर उच्चांकी पातळीवर बंद.
व्यापक रॅली, की संकुचित?
एखादा निर्देशांक मोजक्या मेगा-कॅप्समुळे वर जाऊ शकतो. हे तसे नव्हते. बारा फंड — तीन प्रमुख निर्देशांक ट्रॅकर्स आणि नऊ S&P सेक्टर फंड — एकाच दोन बंद पातळ्यांवर:
प्रत्येक आकड्यामागील अचूक 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 ट्रॅकर DIA ने 11.3% वाढ मिळवली — त्या आठवड्यातील "1933 नंतरचा सर्वोत्तम दिवस" या मथळ्यामागील हालचाल, हे श्रेय Dow च्या दीर्घ किंमत इतिहासाला जाते. सर्वात कमी वाढ क्लासिक डिफेन्सिव्हमध्ये दिसली, कंझ्युमर स्टेपल्स (XLP, +5.1%) आणि हेल्थकेअर (XLV, +7.4%), आणि Nasdaq-100 च्या QQQ (+7.7%) ने SPY च्या +9.5% पेक्षा मागे राहिले. सायक्लिकल्सच्या नेतृत्वाखालील, सर्व काही हिरवे असलेले टेप हे संकुचित मेगा-कॅप स्क्वीझच्या उलट स्वरूप आहे — ब्रेडथ हा त्या दिवसाचा ठसा होता.
हे खरोखर किती ऐतिहासिक होते?
"1933 नंतरचा सर्वात मोठा दिवस" हा त्या आठवड्यातील वर्तमानपत्रांमधील डाऊचा आकडा आहे. आमचा स्वतःचा डेटा काय सत्यापित करू शकतो, तो प्रत्यक्षात काय कव्हर करतो ते पाहू:
प्रत्येक आकड्यामागील अचूक 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_shares2003-09-10 पासून — आमच्या मिनिट डेटाचे पहिले सत्र — SPY ने 5613 क्लोज-टू-क्लोज दैनंदिन परतावा मुद्रित केला आहे. 24 मार्च 2020 चा +9.5% हा #3 क्रमांकावर आहे: तंतोतंत 2 सत्रांनी तो मागे टाकला (2008-10-13, 2008-10-28), हे दोन्ही ऑक्टोबर 2008 च्या दहशतीत आहेत. तीन दिवसांचा क्रम आणखी दुर्मिळ आहे: 23 मार्चच्या क्लोजपासून 26 मार्चच्या क्लोजपर्यंतचा +17.5% चा धावपळ नमुन्यात 0 पेक्षा मोठा तीन-सत्रांचा नफा कोठेही नाही. या गोदामात तपासता येणाऱ्या प्रत्येक गोष्टीत, या स्फोटाशी जुळणारे काहीही नाही.
व्हॉल्यूम शांत कथा सांगते: 232 दशलक्ष SPY शेअर्स हे मागील वर्षाच्या सरासरीपेक्षा 2.86× होते — आणि मागील 30 सत्रांच्या सरासरीपेक्षा फक्त 1.12× होते. सामान्य इतिहासाच्या कोणत्याही तुलनेत ही क्रिया विलक्षण होती; त्याआधीच्या क्रॅश आठवड्यांच्या तुलनेत, तो वादळातील फक्त आणखी एक दिवस होता. ऐतिहासिक वळणे ऐतिहासिक व्हॉल्यूमसह स्वतःची घोषणा करीत नाहीत.
तीन दिवसांची झेप
प्रत्येक आकड्यामागील अचूक 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% — तीन सत्रांची मालिका ज्यामुळे आठवड्यांचे कोसळणे संपुष्टात आले, आणि वरील नमुन्यात यापेक्षा मोठी कोणतीही झेप नव्हती. मार्च 2020 चा नमुना जाणूनबुजून मार्च 2009 शी साम्य साधतो: दोन्ही वेळी, निर्णायक धोरणात्मक प्रतिसाद जवळपास तळाशी आला, पहिला रॅलीचा टप्पा हिंसक होता, आणि सर्वोत्तम संधीचा दिवस — त्या सकाळी — असाच दिसत होता, म्हणजे आणखी एक अस्वल बाजाराची उसळी.
रॅली टिकली का?
वास्तविक वेळेत, "बेअर-मार्केट बाउन्स" हे सर्वसामान्य मत होते, आणि संशयवाद्यांकडे स्वतःचे पुरावे होते: अकरा दिवस आधी बाजाराने याच्या जवळपास आकाराची रॅली दाखवली होती — 248.1 डॉलरवरून 2020-03-12 रोजी 270.93 डॉलरपर्यंत 2020-03-13 रोजी — आणि त्यानंतरच्या सत्रात बाजार 239.41 डॉलरवर बंद झाला होता, जो संपूर्ण क्रॅशमधला सर्वात वाईट दिवस होता. एका हिरव्या दिवसाने काहीच सिद्ध होत नाही. 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पुन्हा चाचणी कधीच आली नाही. 23 मार्चनंतर, SPY ने कधीही छापलेला सर्वात कमी बंद दर 243.59 डॉलर होता — 2020-03-24 रोजी, जो स्वतः उत्तेजन-रॅलीचा दिवस होता. बाजार कधीही तळाच्या 9.5% च्या आत पुन्हा बंद झाला नाही. कोविडपूर्व उच्चांक $338.31 2020-08-18 रोजी परत मिळवला गेला — तळापासून 103 ट्रेडिंग सत्रांनंतर, सर्वोच्च उच्चांकापासून पुन्हा सर्वोच्च उच्चांकापर्यंत 181 दिवसांचा फेरफटका. 2008 ची तुलना, त्याच पद्धतीने मोजली: SPY चा 2007-10-09 चा शिखर 2013-03-14 पर्यंत, 1983 दिवसांनंतर नवीन बंद उच्चांक पाहू शकला नाही. दोन संकटे, दोन वेग, एक बाजार ज्याने दरम्यानच्या काळात आपले चयापचय बदलले होते.
हा दिवस काय शिकवतो
तीन पावत्या लक्षात ठेवण्यासारख्या आहेत. पहिली, अंतराने काम केले: दिवसाचा बराचसा फायदा ओपनच्या आधीच अस्तित्वात होता — जो कोणी रेग्युलर तासांमध्ये एंट्रीची वाट पाहत होता त्याने दिवसभर जास्त किंमत दिली — रात्रभराचे अंतर यांत्रिकी कमाल आयामावर होती. दुसरी, तळ पुष्टीकरणाच्या आधी आला: 23 मार्चचा क्लोज हा सर्वात कमी बिंदू होता, जो अशा सत्रांनंतरच दिसला ज्यांनी त्याला पुन्हा भेट देण्यास नकार दिला. तिसरी, वेग दोन्ही बाजूंनी काम करतो: त्याच बाजार रचनेने -34.2% मधील घसरण 24 पंक्तींमध्ये संकुचित केली, त्याच रचनेने सुरुवातीची सुधारणा तीन सत्रांत संकुचित केली. वेग हा युगाच्या बाजार प्लंबिंगचा गुणधर्म आहे, चांगल्या किंवा वाईट बातम्यांचा नाही.
त्या आठवड्यातील संशयक मूर्ख नव्हते: रुंदी, स्फोट, कधीही न आलेली पुनर्चाचणी — 24 मार्चला अयशस्वी रॅलींपासून वेगळे करणारी प्रत्येक पावती फक्त मागे वळून पाहतानाच मोजता येते. बेअर-मार्केट रॅली आणि नवीन बुल मार्केटमधील फरक पहिल्या दिवशी अदृश्य असतो आणि काही महिन्यांत निर्विवाद होतो.
कोविड रॅली वारंवार विचारले जाणारे प्रश्न
24 मार्च 2020 रोजी काय घडले?
फेडच्या अनलिमिटेड-क्यूई घोषणेनंतरचा पहिला पूर्ण सत्र: SPY ओपनच्या वेळी 5.4% ने गॅप अप झाला आणि 9.5% ने वर बंद झाला — आमच्या मिनिट टेपने व्यापलेल्या 5613 सत्रांमध्ये हा #3 वा सर्वोच्च एकदिवसीय नफा होता, जो ऑक्टोबर 2008 मधील फक्त दोन दिवसांच्या मागे होता.
23 मार्च 2020 रोजी फेडने काय घोषित केले?
ट्रेझरी आणि मॉर्टगेज-बॅक्ड सिक्युरिटीजची अनिर्बंध खरेदी — "आवश्यक तेवढ्या प्रमाणात" — तसेच कॉर्पोरेट बाँड खरेदीसाठी फेडची पहिली सुविधा असलेली PMCCF आणि SMCCF, आणि ग्राहक कर्जासाठी पुनरुज्जीवित TALF. हे विधान सकाळी 8:00 वाजता ET, बाजार सुरू होण्यापूर्वी जारी करण्यात आले; तरीही SPY त्या दिवशी बेअर-मार्केटच्या नीचांकी पातळीवर बंद झाला.
23 मार्च 2020 हा कोविड क्रॅशचा तळ होता का?
होय, बंद किंमतीनुसार: SPY ची $222.51 ची नीचांकी बंद किंमत 23 मार्च रोजी, फेडच्या घोषणेनंतर काही तासांतच नोंदवली गेली. ती पुन्हा कधीही गाठली गेली नाही — त्यानंतरची सर्वात कमी बंद किंमत 2020-03-24 रोजी आली, जी तळापासून 9.5% वर होती.
स्टॉक मार्केटने कोविडपूर्व उच्चांक कधी परत मिळवला?
SPY ने प्रथमच 19 फेब्रुवारी 2020 च्या सर्वकालीन उच्चांकी बंद किंमतीच्या वर 2020-08-18 रोजी बंद झाला, तळापासून 103 ट्रेडिंग सत्रांनंतर — 181 दिवसांचा राउंड ट्रिप, तर 2008 च्या क्रॅशच्या समतुल्य प्रवासासाठी 1983 दिवस लागले होते.
बातमीनंतर खरेदी केली असती तरीही चांगले परतावे मिळाले असते का?
नियमित ट्रेडिंग सुरू होण्यापूर्वी ओपन 5.4% ने गॅप अप झाला होता, आणि दिवसभर वाढतच राहिला — प्रत्येक नंतरच्या एंट्रीची किंमत मागील बंद किंमतीपेक्षा जास्त होती, आणि तरीही ऑगस्ट 2020 मधील पुनर्प्राप्तीच्या वेळी बाजार जिथे होता त्याच्या खूप खाली होती.
डेटा नोंदी
- बंद किंमती या नियमित-सत्र (9:30 am-4:00 pm ET) च्या मिनिट टेपमधील शेवटच्या प्रिंट्स आहेत; या अधिकृत ऑक्शन बंद किंमतींपेक्षा काही सेंटने भिन्न असू शकतात.
- पुनर्प्राप्ती तारखा या केवळ किंमतीवर आधारित आहेत; एकूण-परतावा मापन (लाभांश पुनर्गुंतवणूक) स्वाभाविकपणे लवकर पुनर्प्राप्त होते.
- 10-वर्षीय उत्पन्न ट्रेडिंग तारखांवर ट्रेझरीच्या दैनंदिन मालिकेत सामील होते; बेसिस पॉइंट्स म्हणजे टक्केवारीचा शंभरावा भाग.
- रँक पॅनेलचा नमुना 2003-09-10 पासून सुरू होतो — या पृष्ठावर "2003 पासून" म्हणजे ती विंडो, संपूर्ण नोंदवलेला बाजार इतिहास नव्हे.
वरील प्रत्येक पॅनेल ही ऐतिहासिक टेपवर एक संग्रहित, आवृत्तीबद्ध क्वेरी आहे — प्रत्येक मोजमाप पाहण्यासाठी SQL विस्तृत करा. हा दिवस वाचण्याऐवजी अनुभवायचा आहे? हा Strasmore Labs ट्रेडिंग सिम्युलेटर मधील खेळता येण्याजोग्या परिस्थितींपैकी एक आहे.