วิเคราะห์ตลาดหุ้นวันที่ 24 กุมภาพันธ์ 2022
สรุปเหตุการณ์รัสเซียรุกรานยูเครนเมื่อวันที่ 24 กุมภาพันธ์ 2022 ที่ทำให้ตลาดหุ้นสหรัฐฯ ผันผวนรุนแรง พร้อมวิเคราะห์ราคาน้ำมัน ทองคำ และหุ้นกลุ่มป้องกันประเทศ
ในช่วงเช้ามืดของวันที่ 24 กุมภาพันธ์ 2022 รัสเซียได้เปิดฉากรุกรานยูเครนเต็มรูปแบบ ซึ่งส่งผลให้ตลาดหุ้นสหรัฐฯ เกิดความผันผวนอย่างรุนแรงจนกลายเป็นหนึ่งในเซสชันที่มีการศึกษามากที่สุดในทศวรรษนี้ ดัชนีฟิวเจอร์สปรับตัวลดลงอย่างหนักในช่วงข้ามคืน โดย Nasdaq-100 ETF (QQQ) เปิดตลาดลดลง -3.2% และปิดที่ +3.4% หน้าเว็บนี้รวบรวมเหตุการณ์ทั้งหมดที่เกิดขึ้น ทั้งการกลับตัวของราคาในแต่ละนาที ความเคลื่อนไหวของ S&P 500 และ Dow รวมถึงทิศทางของราคาน้ำมัน ทองคำ หุ้นกลุ่มป้องกันประเทศ พันธบัตรสหรัฐฯ และดัชนีความผันผวน ตลอดจนภาพรวมในช่วงสัปดาห์หลังจากนั้น ข้อมูลตัวเลขทั้งหมดมาจากการดึงข้อมูลโดยตรง คุณสามารถขยายแถบข้อมูลเพื่อดูคำสั่ง SQL ได้
ก่อนตลาดเปิด: สรุปเหตุการณ์ในช่วงคืนที่ผ่านมา
การรุกรานไม่ได้เกิดขึ้นอย่างกะทันหัน ตลอดช่วงปลายปี 2021 ถึงต้นปี 2022 รัสเซียได้เคลื่อนกำลังทหารมาประชิดชายแดนยูเครน โดยการประเมินจากชาติตะวันตกในขณะนั้นระบุว่ามีจำนวนมากกว่า 100,000 นาย ซึ่งตลาดได้ซื้อขายเพื่อรับความเสี่ยงนี้มาหลายสัปดาห์แล้ว เมื่อวันจันทร์ที่ 21 กุมภาพันธ์ รัสเซียได้ให้การรับรองสาธารณรัฐแบ่งแยกดินแดนสองแห่งในยูเครนตะวันออก ขณะที่ตลาดสหรัฐฯ ปิดทำการเนื่องในวัน Washington's Birthday ทำให้การซื้อขายครั้งแรกที่สามารถสะท้อนข่าวนี้ได้คือวันอังคารที่ 22 กุมภาพันธ์ ซึ่งเป็นวันที่ตลาดปิดตัวลงในแดนลบ มาตรการคว่ำบาตรชุดแรกจากชาติตะวันตกถูกประกาศใช้ในวันอังคารเดียวกัน พร้อมกับการระงับการรับรองท่อส่งก๊าซ Nord Stream 2 โดยเยอรมนี
ต่อมา เมื่อเวลาประมาณ 06:00 น. ตามเวลาในมอสโกของวันพฤหัสบดีที่ 24 กุมภาพันธ์ หรือประมาณ 22:00 น. ของคืนวันพุธในนิวยอร์ก ประธานาธิบดีรัสเซียได้ประกาศเริ่มปฏิบัติการ และมีรายงานเหตุระเบิดเกิดขึ้นในเมืองต่างๆ ทั่วยูเครนภายในหนึ่งชั่วโมงหลังจากนั้น ดัชนีฟิวเจอร์สของสหรัฐฯ ซึ่งมีการซื้อขายตลอดทั้งคืน ปรับตัวลดลงทันที เมื่อถึงเวลาพระอาทิตย์ขึ้น คำถามเดียวที่เหลืออยู่คือราคาจากการ ประมูลเปิดตลาด เวลา 09:30 น. จะลดลงจากราคาปิดของวันพุธมากน้อยเพียงใด
สรุปภาพรวมรายวัน
ข้อมูลแถวเดียวที่รวบรวมคำตอบทั้งหมด ทั้งราคาปิดวันก่อนหน้า, ช่องว่างราคา (gap), ราคาต่ำสุด, ราคาสูงสุด, ราคาปิด และปริมาณการซื้อขาย:
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 = 'QQQ'
AND window_start >= toDateTime('2022-02-23 00:00:00') AND window_start < toDateTime('2022-02-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(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) / minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 1) AS trough_to_close_pct,
round((maxIf(toFloat64(high), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) / toFloat64(argMaxIf(close, window_start, (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959)) - 1) * 100, 2) AS close_to_high_pct,
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)) / minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) - 1) * 100, 2) AS open_above_low_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 = 'QQQ'
AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2022-02-24 23:59:00')ข้อมูลสำคัญที่ทุกคนควรทราบ: ราคาต่ำสุดของเซสชันอยู่ที่ $318.26 ซึ่งเกิดขึ้นเมื่อเวลา 09:30 ET — ในนาทีแรกของการเปิดตลาด — โดยต่ำกว่าราคาปิดวันก่อนหน้า -3.4% จากจุดนั้น QQQ ปรับตัวขึ้นต่อเนื่องเป็นเวลาหกชั่วโมงครึ่ง และปิดที่ $340.65: +3.4% สำหรับวันนี้ โดยมีส่วนต่างจากจุดต่ำสุดถึงราคาปิด (swing trough-to-close) อยู่ที่ 7% จากปริมาณการซื้อขาย 128 ล้านหุ้น และราคาปิดไม่ได้มีการเทขายในช่วงท้ายตลาด โดยราคาปิดอยู่ต่ำกว่าราคาสูงสุดของเซสชันที่ $341.04 เพียง 0.11% ซึ่งหมายความว่าวันดังกล่าวปิดตลาดที่ระดับสูงสุดเกือบทั้งหมด ใครก็ตามที่ขายในช่วงนาทีแรกของการซื้อขาย จะเป็นการขายในช่วงที่ใกล้เคียงกับระดับต่ำสุดของเซสชันภายในระยะ 0.18% — ซึ่งจุดต่ำสุดที่แท้จริงเกิดขึ้นหลังจากช่วงเปิดตลาดเพียงไม่กี่ขณะ ไม่ใช่เกิดขึ้นพร้อมกับการเปิดตลาด (ราคาจากการประมูลคือ $318.84; ส่วนราคาต่ำสุดคือ $318.26)
การกลับทิศทางในแต่ละช่วงเวลา
ข้อมูลรายครึ่งชั่วโมงแสดงให้เห็นถึงรูปแบบการปรับตัวขึ้น:
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 = 'QQQ'
AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2022-02-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ทิศทางไม่ได้เป็นเส้นตรงที่สมบูรณ์แบบ โดย bucket ของ 12:00 ET ปิดที่ $328.03 ซึ่งต่ำกว่าราคาปิดของ 11:30 ที่ $330.29 แต่ทิศทางโดยรวมไม่ได้เปลี่ยนไปอย่างมีนัยสำคัญ และ bucket สุดท้ายปิดที่ $340.65 ซึ่งเป็นระดับสูงสุดของตาราง ปริมาณการซื้อขายมีลักษณะเป็นรูปตัว U ตามปกติ โดยมีปริมาณ 18.6 ล้านหุ้นในช่วงครึ่งชั่วโมงแรก และ 15 ล้านหุ้นในช่วงสุดท้าย เมื่อเทียบกับ 4.7 ล้านหุ้นในช่วงพักกลางวัน รูปแบบนี้เป็นภาพสะท้อนที่ตรงกันข้ามกับ ขาลงแบบขั้นบันไดในปี 2011 ตลาดที่มีลักษณะเช่นนี้เป็นเหตุผลว่าทำไมการเล่าเรื่องที่ว่า "ตลาดร่วงลงเนื่องจากการรุกราน" จึงเป็นการให้ข้อมูลที่ผิดพลาด เพราะ futures ปรับตัวลดลงในช่วงข้ามคืน แต่ cash session กลับพุ่งสูงขึ้นตั้งแต่นาทีแรก ผลลัพธ์ที่เกิดขึ้นขึ้นอยู่กับว่าคำสั่งซื้อขายของคุณถูกส่งเข้ามาในช่วงเวลาใด ซึ่งเป็นหัวข้อที่ ช่องว่างราคาข้ามคืน ใช้ในการวัดผลในช่วงสัปดาห์ที่ตลาดผันผวนน้อยกว่า
ไม่ใช่แค่ Nasdaq: ตลาดโดยรวมเกิดการกลับตัว
หากพิจารณาเพียงดัชนีเดียวอาจทำให้เกิดคำถามสำคัญว่า นี่เป็นเพียงความผิดปกติของหุ้นกลุ่มเติบโต (growth stock) หรือเป็นการกลับตัวของตลาดทั้งระบบ ข้อมูลด้านล่างนี้เปรียบเทียบหุ้นสิบเอ็ดตัวด้วยเกณฑ์เดียวกัน ประกอบด้วย ETF ของสามดัชนีหลัก ตามด้วยสินทรัพย์ที่มักเคลื่อนไหวเมื่อเกิดเหตุการณ์กระทบจากภูมิรัฐศาสตร์ ได้แก่ พลังงาน, ทองคำ, พันธบัตรสหรัฐฯ ระยะยาว, ETF ความผันผวน และหุ้นกลุ่มผู้รับเหมาด้านกลาโหมสี่บริษัท
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
ticker,
round(prior_close, 2) AS prior_close,
round((rth_open / prior_close - 1) * 100, 1) AS gap_pct,
round((rth_low / prior_close - 1) * 100, 1) AS low_vs_prior_pct,
round((rth_high / prior_close - 1) * 100, 1) AS high_vs_prior_pct,
round((rth_close / prior_close - 1) * 100, 1) AS day_change_pct
FROM (
SELECT
ticker,
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('2022-02-23')) AS prior_close,
argMinIf(toFloat64(open), 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('2022-02-24')) AS rth_open,
minIf(toFloat64(low), (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('2022-02-24')) AS rth_low,
maxIf(toFloat64(high), (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('2022-02-24')) AS rth_high,
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('2022-02-24')) AS rth_close
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker IN ('QQQ', 'SPY', 'DIA', 'XLE', 'GLD', 'TLT', 'VIXY', 'LMT', 'NOC', 'RTX', 'GD')
AND window_start >= toDateTime('2022-02-23 00:00:00') AND window_start < toDateTime('2022-02-24 23:59:00')
GROUP BY ticker
)
ORDER BY indexOf(['QQQ', 'SPY', 'DIA', 'XLE', 'GLD', 'TLT', 'VIXY', 'LMT', 'NOC', 'RTX', 'GD'], ticker)การกลับตัวเกิดขึ้นทั่วทั้งตลาด แต่ขนาดของการเคลื่อนไหวไม่ได้แปรผันตามระยะห่างของราคาตอนเปิดตลาด (gap) ในช่วงเช้าเพียงอย่างเดียว โดย QQQ เปิดตลาดด้วย gap ที่ -3.2% และปิดที่ +3.4% ขณะที่ SPY และ DIA มี gap ในระดับที่ใกล้เคียงกัน คือ -2.6% และ -2.6% ตามลำดับ อย่างไรก็ตาม SPY ปิดที่ +1.5% ในขณะที่ DIA ปิดที่ +0.3% ซึ่งถือว่าเพิ่มขึ้นเพียงเล็กน้อย ดัชนีที่มีหุ้นกลุ่มเติบโตสูงเกิดการกลับตัวรุนแรงที่สุด ส่วนดัชนี Dow ที่เน้นหุ้นกลุ่มอุตสาหกรรมมีการกลับตัวน้อยที่สุด ซึ่งความแตกต่างระหว่าง SPY และ DIA เกิดจากองค์ประกอบของหุ้นในดัชนี ไม่ใช่ขนาดของ gap
ทิศทางการเคลื่อนย้ายเงินทุน: น้ำมัน, ทองคำ, กลุ่มป้องกันประเทศ และความผันผวน
พิจารณาแถวด้านล่างในตารางเดียวกัน ซึ่งเป็น "การซื้อขายกลุ่มสงคราม" กลุ่มพลังงานเปิดตลาดที่ระดับสูงสุดและปิดในแดนลบ โดย XLE กระโดดขึ้น +2.1% แต่มีการซื้อขายลดลงไปถึง -3.4% จากราคาปิดวันก่อนหน้าในช่วงระหว่างวัน และปิดที่ -0.9% ทองคำมีการเคลื่อนไหวในลักษณะเดียวกันคือ GLD เปิดที่ +2.4% และปิดที่ -0.6% ส่วน VIXY ซึ่งเป็น ETF ที่ถือสัญญา VIX futures ระยะสั้นและเป็นตัวแทนที่ใกล้เคียงที่สุดของดัชนีความผันผวน กระโดดขึ้น +11.1% เมื่อเปิดตลาดและปิดที่ -3% ซึ่งเป็นระดับที่ ต่ำกว่า ราคาปิดของวันก่อนหน้า สินทรัพย์ที่สะท้อนความกลัว (fear assets) พุ่งขึ้นสูงสุดในช่วงที่มีข่าวร้ายที่สุด และปรับตัวลดลงพร้อมกับการฟื้นตัวของตลาดหุ้น ซึ่งเป็นการเคลื่อนไหวในทิศทางตรงกันข้ามกับการกลับตัวของตลาดหุ้น
กลุ่มผู้ผลิตอาวุธเป็นข้อยกเว้นที่ยังคงรักษาแรงซื้อไว้ได้ โดยทั้งสี่บริษัทปิดในแดนบวก ได้แก่ LMT +1.7%, NOC +2.4%, RTX +2.1% และ GD +1.1% โดย Northrop Grumman เป็นบริษัทเดียวในสี่แห่งที่ไม่ปรับตัวลงต่ำกว่าราคาปิดของวันพุธตลอดทั้งวัน (จุดต่ำสุดระหว่างวันอยู่ที่ +1%)
พันธบัตร: แรงซื้อสินทรัพย์ปลอดภัยเกิดขึ้นในภายหลัง
อัตราผลตอบแทนพันธบัตรที่ลดลงหมายถึงราคาพันธบัตรกำลังถูกซื้อเพิ่มขึ้น ซึ่งเป็นรูปแบบการไหลเข้าของเงินทุนสู่สินทรัพย์ปลอดภัยตามทฤษฎี ในวันที่มีการรุกรานนั้น แรงซื้อดังกล่าวปรากฏให้เห็นเพียงเล็กน้อยเมื่อตลาดปิดทำการ:
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
toString(date) AS session,
round(yield_2_year, 2) AS yield_2_year,
round(yield_10_year, 2) AS yield_10_year
FROM global_markets.treasury_yields
WHERE date BETWEEN '2022-02-18' AND '2022-03-08'
ORDER BY dateอัตราผลตอบแทนพันธบัตรอายุ 10 ปี ปิดที่ 1.96% เมื่อวันที่ 24 กุมภาพันธ์ ซึ่งต่ำกว่าระดับ 1.99% ของวันก่อนหน้าเพียงเล็กน้อย การไหลเข้าของเงินทุนอย่างแท้จริงเกิดขึ้นในสัปดาห์ถัดมา โดยเมื่อถึง 2022-03-01 อัตราผลตอบแทนอายุ 10 ปี ปิดที่ 1.72% ซึ่งเป็นระดับปิดที่ต่ำที่สุดในช่วงเวลานี้ และอัตราผลตอบแทนอายุ 2 ปี ลดลงจาก 1.58% เป็น 1.31% ในช่วงเวลาเดียวกัน สำหรับ TLT ซึ่งเป็น ETF พันธบัตรระยะยาวในตารางด้านบน แสดงให้เห็นถึงสถานการณ์เดียวกันในช่วงระหว่างวัน โดยเปิดตลาดด้วยราคาที่กระโดดขึ้น +1.8% ก่อนจะลดลงเหลือ +0.2% เมื่อตลาดปิดทำการ
ช่วงเวลาที่เกี่ยวข้อง
ราคาปิดรายวันตลอดสามสัปดาห์ช่วยให้เห็นภาพรวมของการกลับตัว และเป็นตัวบ่งชี้ว่าแนวโน้มนี้ยังคงอยู่หรือไม่:
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 = 'QQQ'
AND window_start >= toDateTime('2022-02-18 00:00:00') AND window_start < toDateTime('2022-03-15 23:59:00')
GROUP BY et_date
)
)
WHERE et_date >= toDate('2022-02-22') AND et_date <= toDate('2022-03-14')
ORDER BY et_dateราคาปิดในช่วง ก่อน การรุกรานเป็นสีแดง (-1% และ -2.6% เมื่อวันที่ 22–23 กุมภาพันธ์) เนื่องจากข่าวการสะสมกำลังทหารเป็นประเด็นหลัก ส่วนในวันที่เกิดการรุกราน ราคาปิดที่ +3.4% และตามด้วย +1.5% ในวันถัดไป การที่ตลาดร่วงลงเมื่อมี ภัยคุกคาม แต่ดีดตัวขึ้นเมื่อเกิด เหตุการณ์จริง เป็นรูปแบบที่พบได้บ่อยจนมีสุภาษิตของ Wall Street รองรับ และสถานการณ์ครั้งนี้คือตัวอย่างที่ชัดเจนที่สุดในยุคปัจจุบัน อย่างไรก็ตาม เมื่อพิจารณาข้อมูลในตารางจะพบว่า ราคาปิดที่ $318.21 ณ วันที่ 2022-03-14 นั้น อยู่ในระดับที่ต่ำกว่าราคาในช่วงที่เกิดความตื่นตระหนกเมื่อเช้าวันที่มีการรุกราน
การฟื้นตัวยังคงอยู่หรือไม่?
ไม่ — และตอนนี้มีหลักฐานยืนยันแล้ว:
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH
daily AS (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
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 c
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'QQQ'
AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2023-01-01 00:00:00')
GROUP BY d
),
(SELECT c FROM daily WHERE d = toDate('2022-02-24')) AS invasion_close,
(
SELECT round(minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959), 2)
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'QQQ'
AND window_start >= toDateTime('2022-02-24 04:00:00') AND window_start < toDateTime('2022-02-24 23:59:00')
) AS invasion_low
SELECT
invasion_close,
invasion_low,
toString(minIf(d, c < invasion_low AND d > toDate('2022-02-24'))) AS first_close_below_invasion_low,
dateDiff('day', toDate('2022-02-24'), minIf(d, c < invasion_low AND d > toDate('2022-02-24'))) AS calendar_days_to_new_low,
round(minIf(c, d BETWEEN toDate('2022-02-25') AND toDate('2022-03-31')), 2) AS march_low_close,
toString(argMinIf(d, (c, d), d BETWEEN toDate('2022-02-25') AND toDate('2022-03-31'))) AS march_low_date,
round((minIf(c, d BETWEEN toDate('2022-02-25') AND toDate('2022-03-31')) / invasion_close - 1) * 100, 1) AS march_low_vs_invasion_close_pct,
round(minIf(c, d > toDate('2022-02-24')), 2) AS year_low_close,
toString(argMinIf(d, (c, d), d > toDate('2022-02-24'))) AS year_low_date,
round((minIf(c, d > toDate('2022-02-24')) / invasion_close - 1) * 100, 1) AS year_low_vs_invasion_close_pct
FROM dailyหลังจากเกิดการรุกรานผ่านไป 18 วัน เมื่อวันที่ 2022-03-14 ราคาปิดของ QQQ อยู่ต่ำกว่าระดับต่ำสุดที่เกิดจากความตื่นตระหนก ซึ่งอยู่ที่ $318.26 ในนาทีแรกของการเปิดตลาดเช้าวันที่เกิดการรุกราน ราคาปิดต่ำสุดในเดือนมีนาคมที่ $318.21 นั้นอยู่ต่ำกว่าราคาปิดของวันที่เกิดการรุกรานถึง -6.6% และแนวโน้มขาลงยังคงดำเนินต่อไป: เมื่อถึง 2022-12-28 QQQ ปิดที่ $260.02 ซึ่งต่ำกว่าระดับราคาปิดของวันที่เกิดการรุกรานอยู่ -23.7% การกลับตัวของราคาเมื่อวันที่ 24 กุมภาพันธ์ นั้นเกิดขึ้นจริง รุนแรง และเกิดขึ้นเฉพาะจุด วงจรการปรับขึ้นอัตราดอกเบี้ยต่างหาก ไม่ใช่สงคราม ที่เป็นตัวกำหนดทิศทางของปี 2022 ซึ่งเป็นบทเรียนเดียวกับที่ วิกฤตเดือนมีนาคม 2020 เคยสอนไว้ในทิศทางตรงกันข้าม
การกลับตัวที่มีขนาดใหญ่เช่นนี้เกิดขึ้นได้ยากเพียงใด?
จากการตรวจสอบข้อมูลทุกเซสชันของ QQQ ตั้งแต่ปี 2003 จนถึงสิ้นปี 2025 พบว่ามีเพียง 2 เซสชันเท่านั้น ที่ราคาซื้อขายระหว่างวันลดลงต่ำกว่าราคาปิดก่อนหน้าอย่างน้อย 3% แต่ยังสามารถปิดบวกได้มากกว่าราคาปิดเดิมอย่างน้อย 1%:
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
toString(d) AS session,
low_vs_prior_pct,
close_vs_prior_pct,
trough_to_close_pct
FROM (
SELECT
d,
round((lo / prev_c - 1) * 100, 1) AS low_vs_prior_pct,
round((c / prev_c - 1) * 100, 1) AS close_vs_prior_pct,
round((c / lo - 1) * 100, 1) AS trough_to_close_pct
FROM (
SELECT d, c, lo,
lagInFrame(c) OVER (ORDER BY d ASC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS prev_c
FROM (
SELECT
toDate(toTimeZone(window_start, 'America/New_York')) AS d,
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 c,
minIf(toFloat64(low), (toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York'))) BETWEEN 570 AND 959) AS lo
FROM global_markets.delayed_stocks_minute_aggs
WHERE ticker = 'QQQ'
AND window_start >= toDateTime('2003-01-01 00:00:00') AND window_start < toDateTime('2026-01-01 00:00:00')
GROUP BY d
)
)
WHERE prev_c > 0 AND isFinite(prev_c)
)
WHERE low_vs_prior_pct <= -3 AND close_vs_prior_pct >= 1
ORDER BY sessionวันที่ 24 กุมภาพันธ์ 2022 คือหนึ่งในนั้น อีกกรณีหนึ่งคือ 2022-10-13 ซึ่งเป็นเซสชันที่เปิดตลาดหนึ่งชั่วโมงหลังจากรายงานอัตราเงินเฟ้อที่สูงกว่าที่คาดการณ์ไว้ และเป็นอีกหนึ่งวันที่ราคาเปิดต่ำแต่ปิดบวกได้ (gap-down-close-green) การกลับตัวในวันที่เกิดการรุกรานนั้นมีขนาดใหญ่กว่า โดยมีการแกว่งตัวจากจุดต่ำสุดถึงราคาปิดอยู่ที่ 7% เมื่อเทียบกับ 5.7% จากข้อมูลย้อนหลังยี่สิบสามปี ทั้งสองเหตุการณ์เกิดขึ้นในปีเดียวกัน
บทเรียนจากวันนี้
มีกลไกที่ยั่งยืนสามประการที่ปรากฏในข้อมูลชุดนี้ ประการแรก เมื่อเหตุการณ์ที่หลายคนรอคอยเกิดขึ้น การวางสถานะมักจะเกิดขึ้นไปก่อนหน้าแล้ว เช่นเดียวกับตลาดที่ปิดลบสองวันก่อนการรุกรานซึ่งสะท้อนถึงการคาดการณ์ล่วงหน้า ประการที่สอง การประมูลช่วงเปิดตลาดคือจุดที่ความกลัวที่สะสมมาตลอดคืนจะถูกล้างออกด้วยราคาเดียว และราคานั้นอาจเป็นจุดสูงสุดหรือต่ำสุดของวันในทิศทางใดก็ได้ ประการที่สาม การกลับตัวอย่างรุนแรงภายในวันเดียวบอกให้ทราบถึงกระแสเงินทุนของวันนั้น ไม่ใช่ทิศทางของไตรมาสถัดไป ดังจะเห็นได้จากสัปดาห์หลังจากเซสชันนี้ที่ราคาปรับตัวลงสู่จุดต่ำสุดใหม่ วันที่มีเหตุการณ์สำคัญจะให้ผลตอบแทนแก่ผู้ที่เข้าใจกลไกตลาด แต่จะลงโทษผู้ที่สับสนระหว่างรูปแบบของเซสชันกับสภาวะตลาดระยะยาว
รายละเอียดปริมาณการซื้อขายช่วยยืนยันพฤติกรรมของตลาด โดยมีปริมาณการซื้อขายถึง 128.5 ล้านหุ้น ทำให้เป็นเซสชันที่มีปริมาณการซื้อขายสูงสุดในตารางรอบสามสัปดาห์ข้างต้น ปริมาณการซื้อขายที่หนาแน่นในช่วงที่ราคาดีดตัวจากจุดต่ำสุดขึ้นมาปิดตลาด หมายความว่าแรงซื้อที่มีขนาดใหญ่กำลังเข้าปะทะกับแรงขายที่มีขนาดใหญ่จริง ไม่ใช่การลอยตัวขึ้นอย่างไร้แรงสนับสนุน เมื่อเปรียบเทียบกับลักษณะเดียวกันใน การฟื้นตัวเมื่อวันที่ 24 มีนาคม 2020 ซึ่งปริมาณการซื้อขายที่ชัดเจนได้บ่งบอกถึงจุดเปลี่ยนจากสภาวะตื่นตระหนก และเมื่อเปรียบเทียบกับการดีดตัวด้วยปริมาณการซื้อขายที่เบาบางซึ่งมักจะจางหายไปในเซสชันถัดไป
คำถามที่พบบ่อยเกี่ยวกับวันเกิดเหตุการณ์รุกราน
ตลาดหุ้นมีปฏิกิริยาอย่างไรเมื่อรัสเซียบุกยูเครน?
ในวันเกิดเหตุ คือวันที่ 24 กุมภาพันธ์ 2022 Nasdaq-100 ETF QQQ เปิดตลาดลดลง -3.2% โดยทำจุดต่ำสุดในช่วงนาทีแรกของการเปิดตลาด จากนั้นราคาปรับตัวขึ้นตลอดทั้งวันและปิดที่ +3.4% ขณะที่ S&P 500 ETF SPY ปิดที่ +1.5% และ Dow ETF DIA ปิดที่ +0.3%
ทำไมหุ้นถึงปรับตัวขึ้นเมื่อรัสเซียบุกยูเครน?
หน้านี้ไม่ได้ระบุถึงแรงจูงใจ แต่เป็นการบันทึกลำดับเหตุการณ์ที่เกิดขึ้น โดยแรงขายอย่างหนักปรากฏชัดเจนในช่วงเปิดตลาดเวลา 9:30 น. และแรงซื้อกลับมาเป็นฝ่ายควบคุมตลาดในทุกชั่วโมงถัดมา รูปแบบราคาที่ร่วงลงเมื่อมีภัยคุกคามและดีดตัวกลับเมื่อเกิดเหตุการณ์จริงนี้ มีเหตุการณ์ในประวัติศาสตร์ที่คล้ายคลึงกันอยู่หลายครั้ง
ราคาน้ำมันและทองคำเป็นอย่างไรเมื่อรัสเซียบุกยูเครน?
ทั้งสองสินทรัพย์พุ่งสูงขึ้นในช่วงเปิดตลาดก่อนจะปรับตัวลดลง โดย energy ETF XLE กระโดดขึ้น +2.1% และปิดที่ -0.9% ส่วน gold ETF GLD กระโดดขึ้น +2.4% และปิดที่ -0.6% สำหรับหุ้นกลุ่มป้องกันประเทศสามารถรักษาผลกำไรไว้ได้ โดยหุ้นหลักทั้งสี่ตัวในตารางด้านบนปิดตลาดในแดนบวก
การดีดตัวขึ้นหลังการรุกรานนั้นยั่งยืนหรือไม่?
ไม่ QQQ ปิดตลาดต่ำกว่าจุดต่ำสุดในช่วงตื่นตระหนกของวันเกิดเหตุ 18 วันปฏิทิน ต่อมาในวันที่ 2022-03-14 และเมื่อราคาลงไปแตะจุดต่ำสุดของปี 2022 ในวันที่ 2022-12-28 ราคาปิดอยู่ที่ -23.7% ต่ำกว่าราคาปิดของวันเกิดเหตุ
การกลับตัวของราคาแบบวันที่ 24 กุมภาพันธ์ 2022 นั้นเกิดขึ้นยากเพียงใด?
เกิดขึ้นได้ยากมาก ตั้งแต่ปี 2003 จนถึงสิ้นปี 2025 มีเพียง 2 วันที่ QQQ มีการซื้อขายต่ำกว่าราคาปิดวันก่อนหน้าตั้งแต่ 3% ขึ้นไปในช่วงระหว่างวัน แต่ยังสามารถปิดตลาดได้สูงกว่าเดิมอย่างน้อย 1% ซึ่งเหตุการณ์นี้และเหตุการณ์ 2022-10-13 คือตัวอย่างดังกล่าว
ตารางทั้งหมดด้านบนมาจากการดึงข้อมูลย้อนหลังผ่านคำสั่ง SQL ที่มีการจัดเก็บเวอร์ชันไว้ หากต้องการดูรายละเอียดการวัดผลแต่ละตัวสามารถขยายคำสั่ง SQL ได้ หากต้องการทดลองเทรดในสถานการณ์นี้แทนการอ่านข้อมูล สามารถลองเล่นได้ใน โปรแกรมจำลองการเทรดของ Strasmore Labs