PE Ratio
PE Ratio คืออะไร Price-to-Earnings อัตราส่วนราคาต่อกำไร EPS Trailing Forward Shiller PEG Value Growth อุตสาหกรรม
| ประเภท PE | สูตร | ข้อมูล | เหมาะกับ |
|---|---|---|---|
| Trailing PE (TTM) | Price / EPS (12 เดือนย้อนหลัง) | ข้อมูลจริง | ดูปัจจุบัน |
| Forward PE | Price / EPS (คาดการณ์ 12 เดือน) | Analyst Estimate | ดูอนาคต |
| Shiller PE (CAPE) | Price / EPS เฉลี่ย 10 ปี (adj inflation) | ข้อมูลจริง 10 ปี | ดูตลาดรวม |
| PEG Ratio | PE / Growth Rate | PE + Earnings Growth | เทียบ PE กับ Growth |
PE Calculation
# === PE Ratio Calculator ===
from dataclasses import dataclass
@dataclass
class StockPE:
symbol: str
price: float
eps_ttm: float
eps_forward: float
growth_rate: float
sector_avg_pe: float
def calculate_pe(stock):
trailing_pe = stock.price / stock.eps_ttm if stock.eps_ttm > 0 else None
forward_pe = stock.price / stock.eps_forward if stock.eps_forward > 0 else None
peg = trailing_pe / stock.growth_rate if trailing_pe and stock.growth_rate > 0 else None
vs_sector = ((trailing_pe - stock.sector_avg_pe) / stock.sector_avg_pe * 100) if trailing_pe else None
return trailing_pe, forward_pe, peg, vs_sector
stocks = [
StockPE("ADVANC", 220, 11.0, 12.5, 8, 18),
StockPE("CPALL", 62, 2.5, 2.8, 12, 25),
StockPE("SCB", 110, 12.0, 13.0, 5, 10),
StockPE("DELTA", 800, 20.0, 25.0, 30, 35),
StockPE("PTT", 35, 3.5, 3.2, 3, 12),
StockPE("AOT", 70, 2.0, 2.5, 25, 30),
]
print("=== PE Ratio Analysis ===")
for s in stocks:
t_pe, f_pe, peg, vs = calculate_pe(s)
print(f"\n [{s.symbol}] Price: {s.price}")
print(f" Trailing PE: {t_pe:.1f}x | Forward PE: {f_pe:.1f}x")
if peg:
peg_status = "CHEAP" if peg < 1 else "FAIR" if peg < 2 else "EXPENSIVE"
print(f" PEG: {peg:.2f} [{peg_status}]")
if vs is not None:
status = "BELOW avg" if vs < 0 else "ABOVE avg"
print(f" vs Sector Avg ({s.sector_avg_pe}x): {vs:+.1f}% [{status}]")
Industry Comparison
# === PE by Industry ===
@dataclass
class SectorPE:
sector: str
pe_range: str
avg_pe: float
growth: str
reason: str
sectors = [
SectorPE("ธนาคาร/การเงิน",
"8-12x", 10,
"ต่ำ (3-5%)",
"Mature Industry กำไรสม่ำเสมอ Dividend สูง Cyclical"),
SectorPE("เทคโนโลยี",
"25-40x", 30,
"สูง (15-30%)",
"High Growth คาดหวังกำไรเติบโตเร็ว R&D สูง"),
SectorPE("สาธารณูปโภค",
"12-18x", 15,
"ต่ำ-ปานกลาง (5-8%)",
"Stable Income กำไรสม่ำเสมอ Regulated Industry"),
SectorPE("อสังหาริมทรัพย์",
"8-15x", 12,
"ปานกลาง (5-10%)",
"Cyclical ขึ้นกับเศรษฐกิจ ดอกเบี้ย"),
SectorPE("Healthcare",
"20-35x", 25,
"สูง (10-20%)",
"Defensive Aging Population Growth Trend"),
SectorPE("ค้าปลีก/อาหาร",
"20-30x", 25,
"ปานกลาง (8-15%)",
"Consumer Staple แบรนด์แข็ง กำไรสม่ำเสมอ"),
SectorPE("พลังงาน/ปิโตรเคมี",
"8-15x", 12,
"ผันผวน",
"Cyclical ขึ้นกับราคาน้ำมัน Commodity"),
SectorPE("ท่องเที่ยว/โรงแรม",
"25-40x", 30,
"สูง (Recovery)",
"Post-COVID Recovery กำไรกลับมา PE สูงชั่วคราว"),
]
print("=== PE by Sector ===")
for s in sectors:
print(f"\n [{s.sector}] PE Range: {s.pe_range} (Avg: {s.avg_pe}x)")
print(f" Growth: {s.growth}")
print(f" Reason: {s.reason}")
Valuation Framework
# === Stock Valuation Framework ===
@dataclass
class ValuationMetric:
metric: str
formula: str
good_value: str
use_when: str
limitation: str
metrics = [
ValuationMetric("PE Ratio",
"Price / EPS",
"< Sector Avg + PEG < 1",
"บริษัทมีกำไร เปรียบเทียบอุตสาหกรรม",
"ใช้ไม่ได้ถ้าขาดทุน ไม่บอก Growth"),
ValuationMetric("PEG Ratio",
"PE / Earnings Growth Rate",
"< 1 ถูก, 1-2 เหมาะสม, > 2 แพง",
"เปรียบเทียบ PE กับ Growth Rate",
"Growth Rate เป็นการคาด อาจผิด"),
ValuationMetric("PBV (Price/Book)",
"Price / Book Value per Share",
"< 1 ถูกกว่า Book Value",
"ธนาคาร อสังหา บริษัทขาดทุน",
"ไม่เหมาะกับ Tech (Book Value ต่ำ)"),
ValuationMetric("Dividend Yield",
"Dividend / Price x 100",
"> 3% ดี > 5% ดีมาก",
"ลงทุนระยะยาว รับปันผล",
"Yield สูงอาจเพราะราคาตก ไม่ยั่งยืน"),
ValuationMetric("ROE",
"Net Income / Equity x 100",
"> 15% ดี > 20% ดีมาก",
"วัดความสามารถทำกำไรจาก Equity",
"Debt สูง → ROE สูงเทียม"),
ValuationMetric("Debt/Equity",
"Total Debt / Total Equity",
"< 1 ดี < 0.5 ดีมาก",
"วัดระดับหนี้สิน",
"บางอุตสาหกรรม D/E สูงเป็นปกติ (ธนาคาร)"),
]
print("=== Valuation Metrics ===")
for m in metrics:
print(f"\n [{m.metric}] {m.formula}")
print(f" Good: {m.good_value}")
print(f" Use: {m.use_when}")
print(f" Limit: {m.limitation}")
เคล็ดลับ
- Sector: เปรียบเทียบ PE ในอุตสาหกรรมเดียวกันเท่านั้น
- PEG: ใช้ PEG ร่วมกับ PE ดู Growth ประกอบ
- Forward: ใช้ Forward PE ดูอนาคต ไม่ใช่แค่อดีต
- Multi: ใช้หลาย Ratio ร่วมกัน PE PBV ROE D/E Yield
- Trap: ระวัง Value Trap หุ้น PE ต่ำแต่กำไรลดต่อเนื่อง
การนำความรู้ไปประยุกต์ใช้งานจริง
แหล่งเรียนรู้ที่แนะนำ ได้แก่ Official Documentation ที่อัพเดทล่าสุดเสมอ Online Course จาก Coursera Udemy edX ช่อง YouTube คุณภาพทั้งไทยและอังกฤษ และ Community อย่าง Discord Reddit Stack Overflow ที่ช่วยแลกเปลี่ยนประสบการณ์กับนักพัฒนาทั่วโลก
เปรียบเทียบข้อดีและข้อเสีย
จากตารางเปรียบเทียบจะเห็นว่าข้อดีมีมากกว่าข้อเสียอย่างชัดเจน โดยเฉพาะในแง่ของประสิทธิภาพและความสามารถในการ Scale สำหรับข้อเสียส่วนใหญ่สามารถแก้ไขได้ด้วยการเรียนรู้อย่างเป็นระบบและวางแผนทรัพยากรให้เหมาะสม
สรุปประเด็นสำคัญ
สิ่งที่ควรทำต่อหลังอ่านบทความนี้จบ คือ ลองตั้ง Lab Environment ทดสอบด้วยตัวเอง อ่าน Official Documentation เพิ่มเติม เข้าร่วม Community เช่น Discord หรือ Facebook Group ที่เกี่ยวข้อง และลองทำ Side Project เล็กๆ เพื่อฝึกฝน หากมีคำถามเพิ่มเติม สามารถติดตามเนื้อหาได้ที่ SiamCafe.net ซึ่งอัพเดทบทความใหม่ทุกสัปดาห์
PE Ratio คืออะไร
Price/EPS อัตราส่วนราคาต่อกำไร PE สูง Growth คาดหวัง PE ต่ำ Value ถูก SET 15-20x S&P 500 20-25x เปรียบเทียบอุตสาหกรรม
ประเภท PE มีอะไร
Trailing TTM 12 เดือนย้อนหลัง Forward คาดการณ์ Shiller CAPE 10 ปี PEG PE/Growth < 1 ถูก > 2 แพง Sector PE เปรียบเทียบ
ตีความอย่างไร
สูง > 25 Growth Tech ปานกลาง 15-25 เหมาะสม ต่ำ < 15 Value ถูก ติดลบ ขาดทุน Value Trap ระวัง PE ต่ำกำไรลด
ใช้งานจริงอย่างไร
เปรียบเทียบอุตสาหกรรมเดียวกัน Forward PE ดูอนาคต PEG < 1 Shiller PE ตลาดรวม ร่วมกับ PBV ROE Yield D/E ไม่ใช้อย่างเดียว
สรุป
PE Ratio Price-to-Earnings Trailing Forward Shiller PEG อุตสาหกรรม Value Growth SET S&P 500 PBV ROE Dividend Yield ลงทุน
