หุ้น P/E ต่ำใกล้จุดต่ำสุดรอบ 52 สัปดาห์ คัดกรองอย่างไร
เจาะลึกการคัดกรองหุ้นที่มีค่า P/E ต่ำและราคาใกล้ระดับต่ำสุดในรอบ 52 สัปดาห์ พร้อมวิธีคำนวณระยะห่างจากจุดต่ำสุด และข้อมูลความเสี่ยงในการลงทุนหุ้นกลุ่มนี้อย่างตรงไปตรงมา
หุ้นที่มีค่า P/E ต่ำและราคาอยู่ใกล้ระดับต่ำสุดในรอบ 52 สัปดาห์ คือจุดตัดของตัวกรองสองประเภทที่แตกต่างกันอย่างสิ้นเชิง ได้แก่ การมีค่าตัวคูณกำไรย้อนหลังที่ต่ำ และราคาที่เคลื่อนไหวอยู่ใกล้จุดต่ำสุดของกรอบราคาในรอบหนึ่งปี ตัวกรองด้านล่างนี้ระบุเงื่อนไขทั้งสองประการเป็นตัวเลขที่คุณสามารถคัดลอกไปใช้ได้ โดยจัดอันดับหุ้นที่ผ่านเกณฑ์ตามระยะห่างจากจุดต่ำสุด และแสดง Query ที่ใช้ในแต่ละตาราง ข้อควรระวังประการหนึ่งคือ รายชื่อที่สร้างขึ้นด้วยวิธีนี้มักจะรวมถึงหุ้นที่กำลังดิ่งลง (falling knives) พอๆ กับหุ้นที่ราคาถูกจริง และส่วนถัดไปจะอธิบายถึงหลักการคำนวณที่อยู่เบื้องหลัง
นิยามของคำว่าใกล้ระดับต่ำสุดในรอบ 52 สัปดาห์
ระดับต่ำสุดในรอบ 52 สัปดาห์ คือราคาที่ต่ำที่สุดที่หุ้นเคยทำไว้ในช่วงหนึ่งปีที่ผ่านมา ระยะห่างจากจุดต่ำสุดจะถูกแปลงเป็นเปอร์เซ็นต์โดยใช้สูตร: ราคาปิดล่าสุดหารด้วยราคาต่ำสุดในรอบ 52 สัปดาห์ แล้วลบด้วยหนึ่ง หากหุ้นปิดที่ 55 ในขณะที่ราคาต่ำสุดในรอบ 52 สัปดาห์อยู่ที่ 50 หุ้นตัวนั้นจะอยู่สูงกว่าจุดต่ำสุด 10% การคำนวณนี้คือเกณฑ์การจัดอันดับทั้งหมด และคู่มือ จุดสูงสุดและต่ำสุดในรอบ 52 สัปดาห์ ของเราได้ครอบคลุมรายละเอียดของกรอบราคานี้ไว้แล้ว
ค่า P/E ratio ซึ่งคำนวณจากราคาหารด้วยกำไรต่อหุ้น (EPS) ย้อนหลังสิบสองเดือน มาจากตารางอัตราส่วนรายวัน stocks_ratios ซึ่งเป็นแหล่งข้อมูลเดียวกับที่ใช้ในตัวกรอง หุ้นที่มีอัตราเงินปันผลตอบแทนสูงสุด ของเรา ส่วนกรอบราคามาจาก stocks_daily_aggs ซึ่งแสดงข้อมูลหนึ่งแถวต่อหนึ่งหุ้นต่อหนึ่งรอบการซื้อขาย
ตัวแปรสี่ตัวที่กำหนดตัวกรองนี้ ซึ่งแต่ละตัวเป็นค่าสมมติจนกว่าจะมีการกำหนดไว้ชัดเจน:
- ระยะห่างจากจุดต่ำสุดในรอบ 52 สัปดาห์ อยู่ที่หรือต่ำกว่า 10%
- ค่า P/E ย้อนหลังสูงกว่าศูนย์และอยู่ที่หรือต่ำกว่า 15
- มูลค่าหลักทรัพย์ตามราคาตลาด (Market Cap) อยู่ที่หรือสูงกว่า 1 หมื่นล้านดอลลาร์
- ปริมาณการซื้อขายเฉลี่ยต่อวันอยู่ที่หรือสูงกว่า 1,000,000 หุ้น
ตัวแปรสองตัวหลังช่วยคัดกรองให้เหลือเพียงชื่อหุ้นที่มีสภาพคล่องจริงในตลาด บริษัทที่มีมูลค่า 40 ล้านดอลลาร์และมีปริมาณการซื้อขายเพียง 20,000 หุ้นต่อวัน สามารถแสดงค่าตัวคูณใดก็ได้ตามต้องการ
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH ratios AS
(
SELECT
ticker,
argMax(price_to_earnings, date) AS pe,
argMax(market_cap, date) AS mcap,
argMax(average_volume, date) AS adv
FROM global_markets.stocks_ratios
WHERE date >= today() - 14
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
band AS
(
SELECT
ticker,
min(low) AS low_52w,
argMax(close, date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 372
AND ticker NOT IN ('SPCX')
GROUP BY ticker
)
SELECT
b.ticker AS ticker,
round(toFloat64(b.last_close) / toFloat64(b.low_52w) * 100 - 100, 1) AS pct_above_low,
round(r.pe, 1) AS pe_ratio
FROM band AS b
INNER JOIN ratios AS r ON r.ticker = b.ticker
WHERE r.mcap >= 10000000000
AND r.adv >= 1000000
AND r.pe > 0
AND r.pe <= 15
AND b.low_52w > 0
AND toFloat64(b.last_close) / toFloat64(b.low_52w) <= 1.10
ORDER BY pct_above_low ASC, b.ticker ASC
LIMIT 15ตารางนี้แสดงรายชื่อ 6 หุ้นที่อยู่ใกล้จุดต่ำสุดมากที่สุดภายใต้ตัวแปรเหล่านั้น โดยจำกัดไว้ที่สิบห้าแถว VICI อยู่ใกล้จุดต่ำสุดของตัวเองมากที่สุดที่ 2.3% เหนือราคาต่ำสุดที่เคยทำไว้ในปีที่ผ่านมา ด้วยค่าตัวคูณย้อนหลังที่ 10.5 ในส่วนปลายอีกด้านของตาราง BRK.B อยู่ที่ 9.7% เหนือจุดต่ำสุดของตัวเอง
วิธีการจัดอันดับรายชื่อ
การเรียงลำดับเป็นขั้นตอนที่ตัวกรองส่วนใหญ่มักข้ามไป การจัดอันดับด้วย P/E จะนำหุ้นที่ดูถูกที่สุดขึ้นมาไว้ด้านบนแต่ปิดบังตำแหน่งของราคา ส่วนการจัดอันดับด้วยระยะห่างจากจุดต่ำสุดจะนำหุ้นที่ใกล้จุดต่ำสุดใหม่ขึ้นมาไว้ด้านบนแต่ปิดบังต้นทุนของหุ้น ตารางนี้เรียงลำดับจากน้อยไปมากตามระยะห่างและแสดงค่าตัวคูณไว้ในคอลัมน์ถัดไป ซึ่งช่วยให้เห็นข้อมูลทั้งสองอย่างในแถวเดียว กรณีที่ค่าเท่ากันจะเรียงตามตัวอักษร ซึ่งเป็นรายละเอียดที่สำคัญเมื่อหุ้นหลายตัวมีค่าทศนิยมใกล้เคียงกัน
การทำซ้ำกระบวนการนี้ต้องใช้ข้อมูลนำเข้าสี่ชุด: ข้อมูลราคาปิดรายวันย้อนหลังเต็มหนึ่งปี, ตัวเลข EPS ย้อนหลัง, จำนวนหุ้นสำหรับคำนวณ Market Cap และปริมาณการซื้อขายเฉลี่ย หลังจากนั้นเป็นเพียงการลบและการหาร
จำนวนหุ้นที่ผ่านเกณฑ์ขึ้นอยู่กับการตั้งค่าตัวแปร
เมื่อปรับเปลี่ยนตัวแปรหนึ่งตัว ขนาดของรายชื่อก็จะเปลี่ยนไป ตารางด้านล่างนี้กำหนดค่า Market Cap และสภาพคล่องไว้คงที่ โดยปรับช่วงระยะห่างจาก 5% ถึง 30% และนับจำนวนหุ้นที่ผ่านเกณฑ์ที่เพดาน P/E สองระดับ
SQL เบื้องหลังตัวเลขแต่ละตัว
WITH ratios AS
(
SELECT
ticker,
argMax(price_to_earnings, date) AS pe,
argMax(market_cap, date) AS mcap,
argMax(average_volume, date) AS adv
FROM global_markets.stocks_ratios
WHERE date >= today() - 14
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
band AS
(
SELECT
ticker,
min(low) AS low_52w,
argMax(close, date) AS last_close
FROM global_markets.stocks_daily_aggs
WHERE date >= today() - 372
AND ticker NOT IN ('SPCX')
GROUP BY ticker
),
universe AS
(
SELECT
b.ticker AS ticker,
toFloat64(b.last_close) / toFloat64(b.low_52w) * 100 - 100 AS pct_above_low,
r.pe AS pe
FROM band AS b
INNER JOIN ratios AS r ON r.ticker = b.ticker
WHERE r.mcap >= 10000000000
AND r.adv >= 1000000
AND r.pe > 0
AND b.low_52w > 0
)
SELECT
concat('within ', toString(cutoff), '%') AS distance_band,
countIf(pct_above_low <= cutoff AND pe <= 15) AS names_pe_under_15,
countIf(pct_above_low <= cutoff AND pe <= 25) AS names_pe_under_25
FROM
(
SELECT
pct_above_low,
pe,
arrayJoin([5, 10, 15, 20, 25, 30]) AS cutoff
FROM universe
)
GROUP BY cutoff
ORDER BY cutoffที่การตั้งค่าของตารางแรก คือช่วง 10% และเพดานที่ 15 มีหุ้นขนาดใหญ่ 7 ตัวที่ผ่านเกณฑ์ทั้งหมด หากปรับช่วงให้แคบลงเหลือ 5% จะเหลือหุ้น 1 ตัว หากขยายเป็น 30% จำนวนจะเพิ่มขึ้นเป็น 43 ในขณะที่การปรับเพดานขึ้นเป็น 25 ที่ช่วงความกว้างเดิมจะทำให้ได้หุ้น 137 ตัว ไม่มีการตั้งค่าใดที่ถูกต้องอย่างสมบูรณ์ สิ่งเหล่านี้เป็นเพียงตัวแปร และวิธีที่โปร่งใสที่สุดในการเผยแพร่ตัวกรองคือการระบุว่ามีการตั้งค่าไว้อย่างไร
จุดต่ำสุดในรอบ 52 สัปดาห์คือพื้นราคาที่เคลื่อนไหวได้
ตัวจุดต่ำสุดเองมีการเคลื่อนไหว มันเป็นการวัดแบบต่อเนื่อง ดังนั้นจุดต่ำสุดเก่าจะหลุดออกจากกรอบเวลาเมื่อปฏิทินเดินหน้าไป และพื้นราคาจะขยับสูงขึ้นในวันที่ไม่มีเหตุการณ์ใดเกิดขึ้นกับหุ้นเลย การติดตามหุ้นตัวหนึ่งแบบเดือนต่อเดือนจะทำให้เห็นภาพนี้ชัดเจน ตารางด้านล่างติดตาม KO ซึ่งเป็นหุ้นขนาดใหญ่ที่เป็นที่รู้จักกันดี เทียบกับราคาต่ำสุดในช่วงสิบสองเดือนที่ผ่านมา
SQL เบื้องหลังตัวเลขแต่ละตัว
SELECT
formatDateTime(m, '%Y-%m') AS month,
round(toFloat64(month_close), 2) AS close_price,
round(toFloat64(trailing_low), 2) AS trailing_12m_low,
round(toFloat64(month_close) / toFloat64(trailing_low) * 100 - 100, 1) AS pct_above_low
FROM
(
SELECT
m,
month_close,
min(month_low) OVER (ORDER BY m ASC ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS trailing_low
FROM
(
SELECT
toStartOfMonth(date) AS m,
argMax(close, date) AS month_close,
min(low) AS month_low
FROM global_markets.stocks_daily_aggs
WHERE ticker = 'KO'
AND date >= today() - 1100
GROUP BY m
)
)
WHERE m >= toStartOfMonth(today() - 400)
ORDER BY mณ วันที่ 2026-08 หุ้น KO ปิดที่ $87.71 เทียบกับจุดต่ำสุดในรอบสิบสองเดือนที่ $65.35 ซึ่งเป็นระยะห่าง 34.2% ช่องว่างระหว่างเส้นราคาคือปริมาณที่ตัวกรองนี้วัดผล ในกรณีที่เส้นจุดต่ำสุดขยับขึ้นในขณะที่เส้นราคาปิดคงที่ ระยะห่างที่วัดได้จะลดลงโดยที่หุ้นไม่มีการเคลื่อนไหวใดๆ
เหตุใดตัวกรองนี้จึงรวมหุ้นที่กำลังดิ่งลง
กลไกนี้เป็นเรื่องของคณิตศาสตร์ ตัว E ใน P/E คือกำไรย้อนหลังและจะอัปเดตสี่ครั้งต่อปีเมื่อบริษัทรายงานผลประกอบการ ส่วนตัว P จะอัปเดตทุกวินาทีที่ตลาดเปิด ราคาที่ไหลลงตลอดทั้งไตรมาสเมื่อเทียบกับตัวเลขกำไรที่คงที่จนกว่าจะมีการรายงานครั้งถัดไป จะทำให้ค่าตัวคูณลดลงเรื่อยๆ ในแต่ละสัปดาห์ ค่าตัวคูณจะดูถูกที่สุดในขณะที่ราคาเคลื่อนห่างจากตัวเลขที่รายงานล่าสุดมากที่สุด เมื่อรายงานครั้งถัดไปทำให้กำไรลดลง ค่าตัวคูณจะขยายตัวขึ้นใหม่ที่ราคาใหม่ที่ต่ำกว่า และไม่มีอะไรที่ถูกจริงตั้งแต่แรก รูปแบบนี้มีชื่อเรียกว่า: กับดักคุณค่า (value trap)
หุ้นวัฏจักร (cyclicals) จะแสดงการวัดผลในทางกลับกัน ผู้ผลิตรถยนต์หรือผู้สร้างบ้านมักแสดงค่า P/E ย้อนหลังต่ำที่สุดที่จุดสูงสุดของวัฏจักรกำไร เมื่อ EPS ย้อนหลังอยู่ที่จุดสูงสุด และแสดงค่าสูงสุดที่จุดต่ำสุดของวัฏจักร
การวัดรูปแบบดังกล่าวหมายถึงการสร้างตัวกรองใหม่ ณ วันที่ในอดีตแล้วติดตามหุ้นทุกตัวที่ผ่านเกณฑ์ ซึ่งต้องใช้ค่าตัวคูณย้อนหลังสำหรับหุ้นแต่ละตัว ณ วันที่ในอดีตนั้น แทนที่จะใช้เพียงค่าล่าสุด แถวข้อมูล stocks_ratios หลังตารางด้านบนถูกอ่าน ณ วันที่ล่าสุดต่อหุ้น และหน้านี้ระบุถึงกลไกโดยไม่ได้แนบตัวเลขผลลัพธ์ที่แสดง Query ให้คุณเห็น กลุ่มตัวอย่างจากวันเริ่มต้นหนึ่งวันจะเป็นเพียงการสังเกตการณ์ครั้งเดียวเท่านั้น หากเริ่มในเดือนที่ต่างออกไป ตัวเลขก็จะเปลี่ยนไป รายชื่อนี้ไม่ได้ให้คำมั่นสัญญาใดๆ เกี่ยวกับสิ่งที่ราคาจะทำต่อไป
สิ่งที่ค่า P/E ต่ำมองข้ามไป
- กำไรประเภทใด: EPS ย้อนหลังรวมรายการพิเศษ การขายสินทรัพย์ และการระงับข้อพิพาททางกฎหมาย ไตรมาสเดียวที่มีกำไรสูงผิดปกติจะกดค่าตัวคูณให้ต่ำลงไปตลอดทั้งปีหลังจากที่เงินสดนั้นหมดไปแล้ว
- บริบทของกลุ่มอุตสาหกรรม: ธนาคาร บริษัทประกัน ผู้ผลิตรถยนต์ และโรงกลั่น มีค่าตัวคูณที่ต่ำกว่าบริษัทซอฟต์แวร์โดยโครงสร้าง และการใช้เพดานเดียวกับทุกกลุ่มจะทำให้รายชื่อเต็มไปด้วยอุตสาหกรรมเดิมๆ เพียงไม่กี่กลุ่ม
- งบดุล: P/E ไม่สนใจหนี้สิน บริษัทสองแห่งที่มีค่าตัวคูณเท่ากันแต่มีภาระหนี้ต่างกันมาก ไม่ได้อยู่ที่ราคาเดียวกัน
- ผลขาดทุน: บริษัทที่มีผลขาดทุนไม่มีค่า P/E ที่มีความหมายและจะไม่ปรากฏที่นี่ การไม่อยู่ในรายชื่อไม่ใช่คำตัดสิน
รายชื่อสองรายการที่อยู่ใกล้เคียงกันนี้อ่านควบคู่กับรายการนี้ได้ดี หุ้นที่มีการเคลื่อนไหวมากที่สุดในเดือนนี้ แสดงให้เห็นว่าหุ้นตัวใดเคลื่อนที่ไกลที่สุดในช่วงเดือนที่ผ่านมา และ หุ้นที่มีความผันผวนต่ำที่สุด แสดงให้เห็นถึงอารมณ์ของตลาดในทางตรงกันข้าม
หมายเหตุข้อมูลและคำจำกัดความ
- ราคามาจาก
stocks_daily_aggs, หนึ่งแถวต่อหนึ่งหุ้นต่อหนึ่งรอบการซื้อขาย จุดต่ำสุดในรอบ 52 สัปดาห์คือค่าต่ำสุดของคอลัมน์ราคาต่ำสุดรายวันในช่วง 372 วันปฏิทินย้อนหลัง - ค่าตัวคูณ, Market Cap และปริมาณการซื้อขายเฉลี่ยมาจาก
stocks_ratios, อ่านเป็นแถวล่าสุดต่อหุ้น - การแตกหุ้นหรือการจ่ายเงินปันผลพิเศษจำนวนมากภายในกรอบเวลาจะทำให้กรอบราคาดิบเปลี่ยนไป ซึ่งควรตรวจสอบในหุ้นตัวใดก็ตามที่มีเหตุการณ์ดังกล่าวในช่วงปีที่ผ่านมา
- ตัวกรองนี้ต้องการค่าตัวคูณย้อนหลังที่เป็นบวก ดังนั้นบริษัทที่ขาดทุนจะไม่ปรากฏในรายชื่อนี้
คำถามที่พบบ่อย
การที่หุ้นอยู่ใกล้จุดต่ำสุดในรอบ 52 สัปดาห์หมายความว่าอย่างไร?
หมายความว่าราคาปัจจุบันอยู่ใกล้กับราคาต่ำสุดที่หุ้นเคยซื้อขายในช่วงปีที่ผ่านมา ระยะห่างจากจุดต่ำสุดคือราคาปิดล่าสุดหารด้วยราคาต่ำสุดในรอบ 52 สัปดาห์ แล้วลบด้วยหนึ่ง แสดงเป็นเปอร์เซ็นต์
ค่า P/E เท่าใดจึงถือว่าต่ำ?
ไม่มีเกณฑ์ที่ตายตัว ตัวกรองมักจะจำกัดค่าตัวคูณย้อนหลังไว้ที่ 15 หรือ 10 สำหรับการคัดกรองที่เข้มงวดขึ้น และค่าตัวคูณมีความแตกต่างกันมากตามอุตสาหกรรม ดังนั้นการใช้เพดานเดียวกับทั้งตลาดจะทำให้รายชื่อเต็มไปด้วยอุตสาหกรรมเดิมๆ เพียงไม่กี่กลุ่ม
หุ้นที่มี P/E ต่ำและอยู่ใกล้จุดต่ำสุดในรอบ 52 สัปดาห์เป็นหุ้นที่น่าซื้อหรือไม่?
ไม่มีตัวกรองใดตอบคำถามนั้นได้ และหน้านี้ก็เช่นกัน เงื่อนไขทั้งสองประการอธิบายถึงอดีต: สิ่งที่ตลาดจ่ายต่อหนึ่งดอลลาร์ของกำไรที่รายงานไปแล้ว และตำแหน่งของราคาภายในกรอบหนึ่งปีของตัวมันเอง ไม่มีเงื่อนไขใดที่อธิบายถึงสิ่งที่จะเกิดขึ้นต่อไป
กับดักคุณค่า (value trap) คืออะไร?
กับดักคุณค่าคือหุ้นที่ดูเหมือนถูกเมื่อพิจารณาจากค่าตัวคูณย้อนหลังแต่ราคากลับลดลงอย่างต่อเนื่อง กำไรต่อหุ้นจะอัปเดตเป็นรายไตรมาสในขณะที่ราคาอัปเดตอย่างต่อเนื่อง ดังนั้นราคาที่ลดลงเมื่อเทียบกับค่า E ย้อนหลังที่คงที่ จะทำให้ค่าตัวคูณลดลงเรื่อยๆ และรายงานครั้งถัดไปอาจรีเซ็ตค่าตัวคูณนั้นให้สูงขึ้นที่ราคาที่ต่ำกว่าเดิม
ทุกตารางที่นี่มาพร้อมกับ Query ที่สร้างมันขึ้นมา เปิดตารางหนึ่ง ปรับเพดาน P/E หรือช่วงระยะห่าง แล้วรายชื่อจะถูกสร้างใหม่ตามตัวแปรของคุณบนเทอร์มินัล Strasmore