Strasmore Research
การเรียนรู้ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-07-24 · data as of July 24, 2026 · refreshed weekly

หุ้นที่มีปริมาณการซื้อขายผิดปกติในสัปดาห์นี้

จัดอันดับหุ้นที่มีปริมาณการซื้อขายผิดปกติในสัปดาห์ที่ผ่านมา โดยเปรียบเทียบ Turnover ย้อนหลังกับค่าเฉลี่ย 40 sessions พร้อมระบุผลตอบแทนรายสัปดาห์และความต่อเนื่อง

ปริมาณการซื้อขายที่ผิดปกติ หมายถึงหุ้นที่มีการซื้อขายสูงกว่าค่าเฉลี่ยปกติของ หุ้นตัวนั้นเอง ไม่ใช่ค่าเฉลี่ยของตลาด สำหรับหุ้นขนาดใหญ่ที่มีปริมาณการซื้อขาย 40 ล้านหุ้นอาจเป็นเรื่องปกติ แต่สำหรับหุ้นขนาดเล็กถือเป็นเหตุการณ์สำคัญ หน้าเว็บนี้จัดอันดับหุ้นที่มีปริมาณการซื้อขายผิดปกติในสัปดาห์ที่ผ่านมา โดยคำนวณจากค่าเฉลี่ยปริมาณการซื้อขายย้อนหลังห้าวันทำการ หารด้วยค่าเฉลี่ยย้อนหลังสี่สิบวันทำการของหุ้นตัวนั้น และมีการกำหนดเกณฑ์ขั้นต่ำด้วยมูลค่าดอลลาร์ เพื่อให้มั่นใจว่าหุ้นทุกตัวในรายการเป็นหุ้นที่สามารถซื้อขายได้จริง ข้อมูลจะได้รับการปรับปรุงทุกสัปดาห์ โดยมีเครื่องหมาย "ข้อมูล ณ วันที่" เป็นตัวระบุช่วงเวลา สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการวัดค่าปริมาณการซื้อขายสัมพัทธ์ (relative volume) สามารถอ่านได้ที่ คู่มือฉบับเต็ม

ผู้นำที่มีปริมาณการซื้อขายผิดปกติในสัปดาห์นี้

ข้อมูลประกอบด้วยสามคอลัมน์หลัก multiple แสดงระดับการซื้อขายที่สูงกว่าค่าปกติของหุ้นตัวนั้นๆ baseline แสดงค่าปกติที่ใช้เปรียบเทียบ ซึ่งค่า multiple ที่สูงมากจาก baseline ที่ต่ำ ย่อมมีความสำคัญน้อยกว่าค่า multiple ที่สูงเพียงเล็กน้อยจาก baseline ที่สูง ส่วนคอลัมน์ dollars แสดงถึงมูลค่าการซื้อขายที่มีนัยสำคัญทางเศรษฐกิจ คอลัมน์สุดท้ายคือการเปลี่ยนแปลงราคาจากราคาเปิดถึงราคาปิดในรอบสัปดาห์ ซึ่งเป็นข้อมูลที่ตัวกรองปริมาณการซื้อขายส่วนใหญ่มักไม่ได้ระบุไว้

คำสั่งดึงข้อมูลหุ้นที่มี Relative Volume สูงสุดในสัปดาห์นี้: ย้อนหลัง 5 วัน เทียบกับ 40 วันก่อนหน้า สำหรับหุ้นที่มีมูลค่าซื้อขาย >$500M ในสัปดาห์นี้
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH sess AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol,
           sum(toFloat64(close) * toFloat64(volume)) AS dollars,
           argMin(toFloat64(open), toTimeZone(window_start, 'America/New_York')) AS day_open,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS day_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 70 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, d
),
cal AS (
    SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
    FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
    SELECT s.ticker AS ticker,
           avgIf(s.vol, c.rn <= 5) AS adv_recent,
           avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
           sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
           argMaxIf(s.day_open, c.rn, c.rn <= 5) AS week_open,
           argMinIf(s.day_close, c.rn, c.rn <= 5) AS week_close,
           countIf(c.rn <= 5) AS recent_sessions,
           countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
    FROM sess s INNER JOIN cal c ON s.d = c.d
    GROUP BY s.ticker
    HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
)
SELECT ticker,
       round(adv_recent / adv_base, 1) AS rvol_week,
       round(adv_recent / 1e6, 2) AS recent_adv_m,
       round(adv_base / 1e6, 2) AS baseline_adv_m,
       round(dollar_recent / 1e9, 2) AS week_dollar_bn,
       round(100.0 * (week_close / week_open - 1), 1) AS week_pct
FROM per_name
ORDER BY rvol_week DESC, ticker ASC
LIMIT 8

รายละเอียดในแต่ละแถวตามลำดับ:

  • JLHL — มีปริมาณการซื้อขายเป็น 99.2 เท่าของค่าปกติ โดยเป็นหุ้นอันดับหนึ่งในรายการ: มีการซื้อขาย 16.95M หุ้นต่อวัน เทียบกับ baseline ที่ 0.17M, มูลค่าการซื้อขาย $0.68B และราคาเปลี่ยนแปลงจากเปิดถึงปิดที่ 160.6%
  • AGEN — มีปริมาณการซื้อขายเป็น 41.1 เท่า บน baseline ที่ 0.62M หุ้น โดยมีมูลค่าการซื้อขาย $0.88B และราคาเปลี่ยนแปลงในสัปดาห์ที่ 54.3%
  • IONS — มีปริมาณการซื้อขายเป็น 4.7 เท่า แต่บน baseline ที่ต่ำเพียง 1.43M หุ้น และมีมูลค่าการซื้อขายเพียง $2.1B โดยราคาเปลี่ยนแปลงในสัปดาห์ที่ -19.6%
  • ALNY — มีปริมาณการซื้อขายเป็น 2.3 เท่า โดยมีการซื้อขาย 1.91M หุ้นต่อวัน เทียบกับค่าปกติที่ 0.83M หุ้น; ราคาเปลี่ยนแปลงจากเปิดถึงปิดที่ -26.2%
  • BBIO — มีปริมาณการซื้อขายเป็น 2.1 เท่า, มูลค่าการซื้อขาย $2.25B, เปลี่ยนแปลงในสัปดาห์ที่ -0.2%
  • MULL — มีปริมาณการซื้อขายเป็น 2.1 เท่า บน baseline ที่ 1.96M หุ้น, มูลค่าการซื้อขาย $0.52B, ราคาเปลี่ยนแปลงจากเปิดถึงปิดที่ -22.8%
  • HLI — มีปริมาณการซื้อขายเป็น 1.9 เท่า, มีการซื้อขาย 0.9M หุ้น, มูลค่า $0.61B; ราคาเปลี่ยนแปลงในสัปดาห์ที่ 5.6%
  • QGEN — แถวที่แปดซึ่งเป็นแถวสุดท้าย มีปริมาณการซื้อขายเป็น 1.8 เท่า โดยมีมูลค่าการซื้อขาย $0.76B และราคาเปลี่ยนแปลงที่ 8.7%

ทิศทางของราคาไม่ได้ถูกนำมาใช้ในการจัดลำดับ ซึ่งคอลัมน์สองคอลัมน์ทางด้านขวาได้แสดงให้เห็นอย่างชัดเจนว่า หุ้นอันดับหนึ่งในรายการปิดสัปดาห์ที่ระดับ 160.6% จากราคาเปิด ในขณะที่หุ้นอันดับแปดปิดที่ระดับ 8.7% จากราคาเปิดของตนเอง แม้จะใช้ตัวกรองเดียวกันแต่ผลลัพธ์กลับตรงกันข้าม ปริมาณการซื้อขายที่หนาแน่นบ่งชี้ถึงช่วงเวลาที่ สภาพคล่อง ของหุ้นกำลังถูกทดสอบอย่างแท้จริง แต่ไม่ได้บอกว่าผลการทดสอบนั้นเป็นไปในทิศทางใด

วิธีการคำนวณค่า multiple

สมมติว่ามีหุ้นตัวหนึ่งที่มีปริมาณการซื้อขายเฉลี่ย 200,000 หุ้นต่อวันในช่วงสี่สิบ session ก่อนหน้า ในช่วงสัปดาห์ที่ผ่านมา หุ้นนี้มีการซื้อขายอยู่ที่ 1,000,000 หุ้น, 1,400,000 หุ้น, 900,000 หุ้น, 1,100,000 หุ้น และ 600,000 หุ้น ซึ่งคิดเป็นค่าเฉลี่ยห้า session เท่ากับ 1,000,000 หุ้น เมื่อนำมาหารกัน: 1,000,000 ÷ 200,000 = 5.0x หากใช้ค่าฐานของหุ้นตัวเดิมเป็นสองล้านหุ้น สัปดาห์เดียวกันนี้จะมีค่าเท่ากับ 0.5x โดยตัวตั้งคือปริมาณการซื้อขายของสัปดาห์นี้ และตัวหารคือปริมาณการซื้อขายปกติของหุ้น (ซึ่งตัวหารนี้คือ ปริมาณการซื้อขายเฉลี่ยต่อวัน ที่วัดผลจากสี่สิบ session แทนที่จะเป็นยี่สิบ session ตามปกติ)

เหตุใดจึงต้องใช้สี่สิบ session? ระยะเวลานี้ครอบคลุมประมาณสองเดือนปฏิทิน ซึ่งนานพอที่จะไม่ทำให้การพุ่งขึ้นของปริมาณการซื้อขายเพียงครั้งเดียวส่งผลกระทบต่อตัวหารมากเกินไป แต่ก็สั้นพอที่จะยังสะท้อนภาพการซื้อขายของหุ้นในปัจจุบัน และเหตุใดตัวตั้งจึงใช้ห้า session? เพื่อให้ครอบคลุมหนึ่งสัปดาห์เต็ม ป้องกันไม่ให้การหยุดพักการซื้อขายเพียง session เดียวหรือการซื้อขายแบบ block trade เพียงครั้งเดียวส่งผลต่อค่าที่ได้

หลักการคำนวณนี้มีข้อควรระวังที่สำคัญคือ: ยิ่งค่าฐานต่ำ ค่า multiple จะยิ่งดูถูกลง หุ้นที่เป็นผู้นำในสัปดาห์นี้มีค่าฐานเพียง 0.17M หุ้นต่อวัน ซึ่งด้วยขนาดระดับนี้ หากมี session ใดที่มีการซื้อขายหนาแน่นเพียงครั้งเดียว จะส่งผลให้ค่าเฉลี่ยรายสัปดาห์พุ่งสูงขึ้นทันที นี่คือเหตุผลที่คณะกรรมการกำหนดให้ต้องมีค่าฐานหลักแสนและมีปริมาณการซื้อขายรายสัปดาห์ที่ 500 ล้านดอลลาร์ ก่อนที่หุ้นตัวใดจะได้รับการพิจารณาให้ปรากฏในรายชื่อได้

สัปดาห์แบบนี้เกิดขึ้นได้ยากเพียงใด?

ค่า Multiple จะมีความหมายก็ต่อเมื่อเปรียบเทียบกับชุดข้อมูลที่นำมาคำนวณเท่านั้น นี่คือข้อมูลจากจักรวาลเดียวกัน ในช่วงเวลาเดียวกัน โดยจัดกลุ่มทุกชื่อที่มีคุณสมบัติครบถ้วนตามค่า Multiple:

คำสั่งดึงข้อมูลภาพรวมการซื้อขายของหุ้นทั้งหมดในกลุ่มที่กำหนดในสัปดาห์นี้ แบ่งตาม Relative Volume
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH sess AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol,
           sum(toFloat64(close) * toFloat64(volume)) AS dollars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 70 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, d
),
cal AS (
    SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
    FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
    SELECT s.ticker AS ticker,
           avgIf(s.vol, c.rn <= 5) AS adv_recent,
           avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
           sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
           countIf(c.rn <= 5) AS recent_sessions,
           countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
    FROM sess s INNER JOIN cal c ON s.d = c.d
    GROUP BY s.ticker
    HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
),
scored AS (
    SELECT ticker,
           multiIf(adv_recent / adv_base >= 10, 1,
                   adv_recent / adv_base >= 5, 2,
                   adv_recent / adv_base >= 3, 3,
                   adv_recent / adv_base >= 2, 4,
                   adv_recent / adv_base >= 1.5, 5,
                   adv_recent / adv_base >= 1, 6, 7) AS bucket_key
    FROM per_name
),
buckets AS (
    SELECT arrayJoin([(1, '10x or more'), (2, '5x to 10x'), (3, '3x to 5x'), (4, '2x to 3x'),
                      (5, '1.5x to 2x'), (6, '1x to 1.5x'), (7, 'below 1x')]) AS bk
)
SELECT bk.2 AS rvol_bucket,
       countIf(scored.bucket_key = bk.1) AS names,
       round(100.0 * countIf(scored.bucket_key = bk.1) / count(), 1) AS pct_of_universe,
       count() AS universe_names
FROM scored CROSS JOIN buckets
GROUP BY bk
ORDER BY bk.1 ASC

สัปดาห์นี้มีหุ้นและ ETF จำนวน 647 ตัวที่มีราคาพุ่งสูงขึ้น จากจำนวนดังกล่าว มี 2 ตัวที่มีราคาซื้อขายสูงกว่าค่าเฉลี่ยปกติของตนเองตั้งแต่สิบเท่าขึ้นไป หรือคิดเป็น 0.3% ของกลุ่มตัวอย่างทั้งหมด อีก 0 ตัวอยู่ในกลุ่ม 5 เท่าถึง 10 เท่า และ 1 ตัวอยู่ในกลุ่ม 3 เท่าถึง 5 เท่า รายชื่อที่ติดอันดับสูงสุดด้านบนถูกคัดมาจากกลุ่มที่มีค่าสูงสุดเหล่านี้ ส่วนกลุ่มที่อยู่ถัดลงมาคือ 3 ชื่อที่มีราคาซื้อขายอยู่ที่ 2 เท่าถึง 3 เท่าของค่าเฉลี่ยปกติ (คิดเป็น 0.5% ของกลุ่มตัวอย่าง) และ 5 ตัวอยู่ในช่วง 1.5 เท่าถึง 2 เท่า (คิดเป็น 0.8%) นอกจากนี้ยังมีอีก 19 ตัวที่มีค่าสูงขึ้นเพียงเล็กน้อยที่ระดับ 1 เท่าถึง 1.5 เท่า หรือคิดเป็น 2.9% ของกลุ่มที่มีคุณสมบัติครบถ้วน

ส่วนอีกด้านหนึ่งของตารางคือส่วนที่ไม่มีใครบันทึกภาพหน้าจอไว้ นั่นคือมี 617 ชื่อ หรือคิดเป็น 95.4% ของกลุ่มตัวอย่าง ที่ซื้อขายในระดับที่ ต่ำกว่า ค่าเฉลี่ยย้อนหลังสี่สิบเซสชันของตนเองในสัปดาห์นี้ นี่คือสภาวะปกติของตลาด และเป็นสิ่งที่ทำให้กลุ่มที่อยู่ด้านบนสุดของตารางเป็นค่าที่ผิดปกติอย่างแท้จริง ไม่ใช่เพียงแค่ความคลาดเคลื่อนจากการปัดเศษตัวเลข

ปริมาณการซื้อขายที่ผิดปกติจะคงอยู่ต่อเนื่องหรือไม่?

มีความเชื่อว่าปริมาณการซื้อขายที่ผิดปกติจะคงอยู่ต่อเนื่องเป็นเวลาหลายวัน ดังนั้นหุ้นที่มีชื่ออยู่ลำดับต้นๆ ของตารางลักษณะนี้ มักจะมีการเคลื่อนไหวที่เกิดขึ้นไปแล้ว ซึ่งเรื่องนี้สามารถพิสูจน์ได้ โดยการตรวจสอบหุ้นผู้นำทั้งแปดตัวว่า: ในจำนวนห้าเซสชัน มีกี่เซสชันที่มีปริมาณการซื้อขายสูงกว่าสองเท่าของค่าฐานหรือมากกว่า, เซสชันที่มีปริมาณการซื้อขายสูงสุดเพียงครั้งเดียวมีขนาดเท่าใด และมีจำนวนเซสชันห่างกันเท่าใดระหว่างเซสชันที่สูงสุดนั้นกับเซสชันสุดท้ายของสัปดาห์

คำสั่งดึงข้อมูลการตรวจสอบความต่อเนื่อง: Daily Relative Volume ของหุ้นผู้นำทั้ง 8 ตัว ตลอด 5 วัน
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH sess AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol,
           sum(toFloat64(close) * toFloat64(volume)) AS dollars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 70 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, d
),
cal AS (
    SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
    FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
    SELECT s.ticker AS ticker,
           avgIf(s.vol, c.rn <= 5) AS adv_recent,
           avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
           sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
           countIf(c.rn <= 5) AS recent_sessions,
           countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
    FROM sess s INNER JOIN cal c ON s.d = c.d
    GROUP BY s.ticker
    HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
),
leaders AS (
    SELECT ticker, adv_recent / adv_base AS rvol_week, adv_base
    FROM per_name
    ORDER BY rvol_week DESC, ticker ASC
    LIMIT 8
),
daily AS (
    SELECT l.ticker AS ticker,
           l.rvol_week AS rvol_week,
           c.rn AS rn,
           s.vol / l.adv_base AS rvol_day
    FROM sess s
    INNER JOIN cal c ON s.d = c.d
    INNER JOIN leaders l ON s.ticker = l.ticker
    WHERE c.rn <= 5
)
SELECT ticker,
       round(max(rvol_week), 1) AS week_rvol,
       countIf(rvol_day >= 2) AS days_above_2x,
       round(max(rvol_day), 1) AS peak_day_rvol,
       argMax(rn, (rvol_day, -rn)) - 1 AS sessions_since_peak
FROM daily
GROUP BY ticker
ORDER BY days_above_2x ASC, peak_day_rvol ASC, ticker ASC

เมื่อเรียงลำดับตามความต่อเนื่อง หุ้นที่มีความต่อเนื่องน้อยที่สุดในตารางคือ HLI โดยมีปริมาณการซื้อขายสูงกว่าสองเท่าของค่าฐานใน 1 ของห้าเซสชัน และมีจุดสูงสุดที่ 6.2x ส่วนหุ้นที่มีความต่อเนื่องมากที่สุดคือ JLHL โดยทำได้ใน 3 จากห้าเซสชัน และมีจุดสูงสุดที่ 404.6x เหตุการณ์เหล่านี้เป็นเหตุการณ์ที่เกิดขึ้นต่อเนื่องหลายเซสชัน ไม่ใช่การซื้อขายเพียงครั้งเดียว ซึ่งเป็นเหตุผลทางกลไกที่ทำให้ตารางรายสัปดาห์และตารางรายวันมักจะระบุหุ้นตัวเดียวกัน

คอลัมน์สุดท้ายคือคอลัมน์ด้านเวลา ซึ่งแสดงจำนวนเซสชันระหว่างวันที่มีปริมาณการซื้อขายสูงสุดกับเซสชันสุดท้ายของสัปดาห์ โดยมีค่าคือ 4 สำหรับ HLI และ 4 สำหรับ JLHL หากค่าช่องว่างดังกล่าวมากกว่าศูนย์ แสดงว่าปริมาณการซื้อขายที่โดดเด่นที่สุดได้เกิดขึ้นไปแล้วก่อนสิ้นสุดสัปดาห์ ตารางนี้อธิบายถึงสัปดาห์ที่สิ้นสุดลง ไม่ใช่การพยากรณ์สัปดาห์ที่กำลังจะเริ่มต้นขึ้น

รายละเอียดการซื้อขายรายวันของหุ้นผู้นำตลอดสิบห้าเซสชัน

ค่าเฉลี่ยรายสัปดาห์อาจทำให้ไม่เห็นภาพรวมที่ชัดเจน ข้อมูลต่อไปนี้คือปริมาณการซื้อขายสัมพัทธ์ (relative volume) รายวันของหุ้นผู้นำในปัจจุบัน โดยเปรียบเทียบจำนวนหุ้นในแต่ละเซสชันกับค่าฐานเดิมสี่สิบเซสชัน พร้อมกับการเปลี่ยนแปลงของราคาตั้งแต่ราคาเปิดถึงราคาปิดในแต่ละเซสชัน ตลอดสิบห้าเซสชันที่ผ่านมา:

คำสั่งดึงข้อมูลเส้นทางของหุ้นผู้นำในแต่ละวัน: Daily Relative Volume และการเปลี่ยนแปลงราคา Open-to-close (15 วันล่าสุด)
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH sess AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol,
           sum(toFloat64(close) * toFloat64(volume)) AS dollars,
           argMin(toFloat64(open), toTimeZone(window_start, 'America/New_York')) AS day_open,
           argMax(toFloat64(close), toTimeZone(window_start, 'America/New_York')) AS day_close
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 70 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, d
),
cal AS (
    SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
    FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
    SELECT s.ticker AS ticker,
           avgIf(s.vol, c.rn <= 5) AS adv_recent,
           avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
           sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
           countIf(c.rn <= 5) AS recent_sessions,
           countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
    FROM sess s INNER JOIN cal c ON s.d = c.d
    GROUP BY s.ticker
    HAVING adv_base > 100000 AND dollar_recent >= 500000000 AND recent_sessions = 5 AND base_sessions >= 35
),
leader AS (
    SELECT ticker, adv_base
    FROM per_name
    ORDER BY adv_recent / adv_base DESC, ticker ASC
    LIMIT 1
),
path AS (
    SELECT formatDateTime(s.d, '%Y-%m-%d') AS session_date,
           formatDateTime(s.d, '%b %e') AS session_label,
           s.vol / l.adv_base AS rvol_day,
           100.0 * (s.day_close / s.day_open - 1) AS day_pct
    FROM sess s
    INNER JOIN cal c ON s.d = c.d
    INNER JOIN leader l ON s.ticker = l.ticker
    WHERE c.rn <= 15
)
SELECT session_date,
       session_label,
       round(rvol_day, 1) AS rvol_day,
       round(day_pct, 1) AS day_pct,
       round(max(rvol_day) OVER (), 1) AS peak_rvol_day
FROM path
ORDER BY session_date ASC

เมื่อสิบห้าเซสชันก่อน หุ้นตัวนี้มีปริมาณการซื้อขายอยู่ที่ 0.5 เท่าของค่าฐาน ซึ่งถือเป็นหุ้นที่มีความเคลื่อนไหวปกติและเงียบเหงา เซสชันที่มีปริมาณการซื้อขายสูงสุดในช่วงดังกล่าวอยู่ที่ 404.6 เท่า ส่วนในเซสชันล่าสุด Jul 15 ปริมาณการซื้อขายยังคงอยู่ที่ 0.7 เท่า โดยมีการเปลี่ยนแปลงของราคาตั้งแต่ราคาเปิดถึงราคาปิดที่ -3.5%

ข้อสังเกตคือสิ่งที่กราฟนี้ไม่ได้แสดง คือการลดลงของปริมาณการซื้อขายอย่างเป็นระเบียบ ปริมาณการซื้อขายที่สูงมักเกิดขึ้นเป็นกลุ่มก้อน และเซสชันหลังจากจุดสูงสุดอาจมีการเร่งตัวขึ้นอีกครั้งแทนที่จะลดลง นี่คือเหตุผลว่าทำไมการกล่าวอ้างว่า "ปริมาณการซื้อขายกำลังลดลง" จึงเป็นสิ่งที่ต้องตรวจสอบจากข้อมูลอนุกรมรายวัน แทนที่จะเป็นการคาดเดา ข้อมูลอนุกรมรายวันชุดเดียวกันนี้คือจุดเริ่มต้นของการวัดอัตราความเร็วระหว่างวัน ซึ่งถูกสร้างขึ้นใหม่ใน คู่มือปริมาณการซื้อขายสัมพัทธ์ และถูกใช้งานโดย VWAP

สิ่งที่ตัวกรองในหน้าจอคัดออก

กฎสี่ข้อถูกนำมาใช้เพื่อให้ข้อมูลมีความแม่นยำ ซึ่งแต่ละข้อจะคัดข้อมูลที่ผู้อ่านอาจต้องการเห็นออกไป ดังนี้:

  1. เกณฑ์มูลค่าการซื้อขายขั้นต่ำ 500 ล้านดอลลาร์ต่อสัปดาห์ หากพิจารณาเพียงจำนวนหุ้น ข้อมูลจะเต็มไปด้วยรายชื่อที่มีมูลค่าการซื้อขายเพียงหลักล้านหุ้นซึ่งถือเป็นจำนวนที่น้อยมาก
  2. เกณฑ์พื้นฐานต้องมากกว่า 100,000 หุ้นต่อวัน เพื่อให้ตัวหารเป็นตัวเลขที่มีนัยสำคัญ ไม่ใช่ค่าที่เกิดจากการปัดเศษ
  3. ต้องมีการซื้อขายอย่างน้อย 35 วัน จาก 40 วันทำการล่าสุด เพื่อคัดหุ้นที่เพิ่งเข้าจดทะเบียนใหม่ เนื่องจากหุ้น IPO ที่เพิ่งเข้าตลาดจะไม่มีค่า "ปกติ" ที่ชัดเจนมาใช้เป็นตัวหาร มิฉะนั้นหุ้นเหล่านี้จะครองอันดับในตารางนี้เป็นเวลาหลายสัปดาห์
  4. คัดออกกรณีมีการใช้สัญลักษณ์หุ้นซ้ำ คือกรณีที่ตลาดหลักทรัพย์เพิ่งเปลี่ยนสัญลักษณ์เดิมไปให้หุ้นตัวใหม่ ทำให้ข้อมูลประวัติจากผู้ให้บริการข้อมูลมีการรวมข้อมูลของสองบริษัทเข้าด้วยกัน ซึ่งจะทำให้ค่าพื้นฐานที่คำนวณได้คลาดเคลื่อน

กฎข้อที่ 1 คือข้อที่คัดหุ้นที่มีค่า Multiple สูงผิดปกติออกไป นี่คือหกอันดับแรกที่ถูกคัดออกด้วยกฎนี้:

คำสั่งดึงข้อมูลหุ้นที่มีความผันผวนสูงซึ่งไม่ถูกคัดออกด้วยเกณฑ์มูลค่าซื้อขาย: Highest Relative Volume ในกลุ่มหุ้นที่มีมูลค่าซื้อขาย <$500M ในสัปดาห์นี้
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH sess AS (
    SELECT ticker,
           toDate(toTimeZone(window_start, 'America/New_York')) AS d,
           sum(toFloat64(volume)) AS vol,
           sum(toFloat64(close) * toFloat64(volume)) AS dollars
    FROM global_markets.delayed_stocks_minute_aggs
    WHERE window_start >= now() - INTERVAL 70 DAY
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) >= 570
      AND toHour(toTimeZone(window_start, 'America/New_York')) * 60 + toMinute(toTimeZone(window_start, 'America/New_York')) < 960
      AND ticker NOT IN ('SPCX')
    GROUP BY ticker, d
),
cal AS (
    SELECT d, row_number() OVER (ORDER BY d DESC) AS rn
    FROM (SELECT DISTINCT d FROM sess)
),
per_name AS (
    SELECT s.ticker AS ticker,
           avgIf(s.vol, c.rn <= 5) AS adv_recent,
           avgIf(s.vol, c.rn BETWEEN 6 AND 45) AS adv_base,
           sumIf(s.dollars, c.rn <= 5) AS dollar_recent,
           countIf(c.rn <= 5) AS recent_sessions,
           countIf(c.rn BETWEEN 6 AND 45) AS base_sessions
    FROM sess s INNER JOIN cal c ON s.d = c.d
    GROUP BY s.ticker
    HAVING adv_base > 100000 AND recent_sessions = 5 AND base_sessions >= 35
       AND dollar_recent > 0 AND dollar_recent < 500000000
)
SELECT ticker,
       round(adv_recent / adv_base, 1) AS rvol_week,
       round(dollar_recent / 1e6, 1) AS week_dollar_m,
       round(dollar_recent / (adv_recent * 5), 2) AS avg_share_price,
       round(adv_base / 1e6, 2) AS baseline_adv_m
FROM per_name
ORDER BY rvol_week DESC, ticker ASC
LIMIT 6

SOBR มีการซื้อขายสูงถึง 109.8 เท่าของค่าปกติ แต่มีมูลค่าการซื้อขายรวมทั้งสัปดาห์เพียง 262.4 ล้านดอลลาร์ ที่ราคาเฉลี่ยหุ้นละ 1.04 ดอลลาร์ ตามมาด้วย: ZBAO ที่ 109.3 เท่า จากมูลค่า 72 ล้านดอลลาร์ (ราคาเฉลี่ย 0.44 ดอลลาร์), WRAP ที่ 51.8 เท่า จากมูลค่า 162.5 ล้านดอลลาร์, CPHI ที่ 38.1 เท่า จากมูลค่า 31.8 ล้านดอลลาร์, KAPA ที่ 36.7 เท่า จากมูลค่า 9.5 ล้านดอลลาร์, และ LGPS ที่ 20.2 เท่า จากมูลค่า 57.5 ล้านดอลลาร์ ซึ่งเป็นการซื้อขายที่มีกิจกรรมจริงและผิดปกติสำหรับหุ้นเหล่านี้ แต่เป็นกลุ่มที่ค่า Multiple ดูสูงเกินจริงเนื่องจากใช้ฐานเงินจำนวนน้อยมาก

แหล่งที่มาของปริมาณการซื้อขายที่ผิดปกติ

ปัจจัยที่ทำให้ปริมาณการซื้อขายเกิดขึ้นซ้ำๆ ซึ่งช่วยให้การอ่านกระดานทำได้เร็วขึ้น ได้แก่: สัปดาห์การประกาศผลประกอบการ ซึ่งเป็นแหล่งที่มาหลักตามกำหนดการ; เหตุการณ์ของบริษัท เช่น การควบรวมกิจการ, การเสนอขายหุ้น, การนำหุ้นเข้าหรือออกจากดัชนี ซึ่งจะมาพร้อมกับปริมาณการซื้อขายเชิงกลไกที่ไม่ได้ขึ้นอยู่กับความเห็นของผู้ลงทุน; พลวัตของการบีบตัวของสถานะขาย (squeeze dynamics) ซึ่งปริมาณการซื้อขายจะเพิ่มขึ้นตามความเร็วของราคา ตามรูปแบบที่ คำอธิบายเรื่อง short squeeze ระบุไว้; และ การจดทะเบียนหุ้นใหม่ ซึ่งจะมีปริมาณการซื้อขายหนาแน่นในช่วงแรกจนกว่าจำนวนหุ้นหมุนเวียนในตลาดจะเข้าสู่สภาวะปกติ โดยปกติแล้วข้อมูลในแต่ละสัปดาห์จะเป็นการผสมผสานของปัจจัยเหล่านี้ ร่วมกับปริมาณการซื้อขายที่หาสาเหตุไม่ได้อีกหนึ่งหรือสองรายการ ซึ่งรายการที่หาสาเหตุไม่ได้นั้นคือข้อมูลที่ควรค่าแก่การใช้เวลาตรวจสอบเพิ่มเติม

คำถามที่พบบ่อยเกี่ยวกับปริมาณการซื้อขายที่ผิดปกติ

ปริมาณการซื้อขายที่ผิดปกติสำหรับหุ้นตัวหนึ่งวัดจากอะไร?

ไม่มีเกณฑ์มาตรฐานอย่างเป็นทางการ ดังนั้นจึงใช้การกระจายตัวดังนี้: จากรายชื่อ 647 ทั้งหมดที่ผ่านเกณฑ์ขั้นต่ำของหน้านี้ในสัปดาห์นี้ มีเพียง 2 ที่มีการซื้อขายสูงกว่าค่าปกติของตนเองตั้งแต่ 10 เท่าขึ้นไป และมี 95.4% ที่มีการซื้อขายต่ำกว่าค่าเฉลี่ยของตนเอง ทั้งนี้ ปริมาณการซื้อขายที่สูงกว่าประมาณ 2 เท่า ถือว่าอยู่ในกลุ่มเปอร์เซ็นต์ที่สูงที่สุดของตลาดในสัปดาห์นั้นๆ แล้ว

ปริมาณการซื้อขายที่ผิดปกติเป็นสัญญาณขาขึ้นหรือขาลง?

ไม่ใช่ทั้งสองอย่าง — มันคือการได้รับความสนใจ ซึ่งความสนใจนี้เกิดขึ้นได้ทั้งในช่วงที่ราคาพุ่งสูงขึ้นหรือช่วงที่ราคาดิ่งลง ในสัปดาห์นี้ หุ้นผู้นำในกระดานปิดตลาดที่ระดับ 160.6% จากราคาเปิด และหุ้นอันดับที่แปดปิดที่ระดับ 8.7% โดยทั้งคู่ผ่านเกณฑ์ด้วยเกณฑ์การวัดเดียวกัน

ปริมาณการซื้อขายที่ผิดปกติจะคงอยู่ยาวนานแค่ไหน?

โดยปกติจะนานกว่าหนึ่งวัน แผงแสดงความต่อเนื่อง (persistence panel) จะนับจำนวนเซสชันของหุ้นแต่ละตัวที่มีปริมาณการซื้อขายสูงกว่าสองเท่าของค่าพื้นฐาน: ในสัปดาห์นี้มีตั้งแต่ 1 จากห้าเซสชัน (HLI) ไปจนถึง 3 จากห้าเซสชัน (JLHL) และเซสชันที่มีปริมาณการซื้อขายสูงสุดมักจะเกิดขึ้นก่อนสิ้นสุดสัปดาห์ มากกว่าที่จะเกิดขึ้นในวันสุดท้ายของสัปดาห์

ทำไมรายการนี้จึงใช้เกณฑ์มูลค่าการซื้อขายเป็นดอลลาร์?

การคัดกรองด้วยจำนวนหุ้นเพียงอย่างเดียวโดยไม่มีเกณฑ์มูลค่าจะทำให้รายชื่อเต็มไปด้วยหุ้นราคาถูกที่มีตัวคูณสูงแต่มีเม็ดเงินไม่มาก: ในสัปดาห์นี้ หุ้นที่ถูกคัดออกที่มีมูลค่าสูงสุดมีการซื้อขายที่ 109.8 เท่าของค่าปกติ ด้วยมูลค่ารวม $262.4M ที่ราคาเฉลี่ย $1.04 ต่อหุ้น เกณฑ์ขั้นต่ำรายสัปดาห์ที่ $500M ช่วยให้ทุกแถวในกระดานมีความสำคัญทางเศรษฐกิจอย่างแท้จริง

ปริมาณการซื้อขายหุ้นที่ผิดปกติจะปรากฏในตลาดออปชันด้วยหรือไม่?

บ่อยครั้งที่ใช่ — ปริมาณการซื้อขายหุ้นที่หนาแน่นและปริมาณการซื้อขายออปชันที่หนาแน่นมักเกิดขึ้นพร้อมกันในหุ้นตัวเดียวกัน ซึ่งเป็นเหตุผลที่เทรดเดอร์ต้องเฝ้าติดตามทั้งสองส่วน อย่างไรก็ตาม การวัดกิจกรรมในออปชันนั้นแตกต่างออกไป: จำนวนสัญญาที่มีการซื้อขายคือตัวเลขกระแสเงินหมุนเวียน (flow number) ในขณะที่ open interest คือการนับสถานะที่ยังคงค้างอยู่ ซึ่งทั้งสองอย่างนี้ตอบคำถามที่ต่างกัน — โปรดอ่าน ปริมาณการซื้อขายออปชันเทียบกับ open interest ก่อนที่จะตีความการแจ้งเตือน "กิจกรรมออปชันที่ผิดปกติ"


ตัวเลขทั้งหมดข้างต้นมาจากคำสั่งดึงข้อมูล (query) ที่มีการจัดเก็บและระบุเวอร์ชัน — คุณสามารถขยายคำสั่ง SQL ภายใต้แผงข้อมูลใดก็ได้เพื่อดูค่าการวัดที่แม่นยำ หรือรันการคัดกรองแบบเดียวกันนี้ในช่วงเวลาใดก็ได้ที่คุณต้องการบนเทอร์มินัล Strasmore