← สารบัญหนังสือ
6.1 — Stationarity & Autocorrelation
ข้อมูลนิ่งพอวิเคราะห์ไหม
ภาค 6 · Time Series & Modeling · อ่าน ~11 นาที · คำถามแรกที่ quant ต้องถามก่อนเปิดโมเดลใดๆ
ก่อนจะวิเคราะห์ข้อมูลอะไรก็ตาม quant ถามคำถามข้อแรกเสมอ — "ข้อมูลชุดนี้นิ่งพอที่จะวิเคราะห์ไหม?"
ฟังดูเหมือนเรื่องเทคนิค แต่ถ้าข้ามคำถามนี้ไป โมเดลทุกตัวที่สร้างขึ้นมา อาจเป็นแค่หลุมพรางที่สวยงาม
1. Stationarity คืออะไร — อธิบายให้เห็นภาพ
ลองนึกถึงคนขายส้มตำหน้าออฟฟิศ · สมมติว่าหลิวไปซื้อทุกวันแล้วจดราคา — บางวัน 50 บาท บางวัน 55 บาท บางวัน 48 บาท · แต่ถ้าหลิวดูข้อมูลย้อนหลัง 3 ปี จะเห็นว่าราคาวนอยู่แถวๆ 50 บาท ขึ้นลงพอๆ กัน ค่าเฉลี่ยไม่ได้เลื่อนไปไหน
นั่นคือ stationary — ข้อมูลที่มีค่าสถิติสำคัญ (ค่าเฉลี่ย ความแปรปรวน) ไม่เลื่อนตามเวลา · มองซ้ายมองขวา หน้าตาพอๆ กัน · กฎที่ได้จากข้อมูลปีที่แล้ว ยังใช้ได้กับข้อมูลปีนี้
ตรงข้ามกัน — ถ้าราคาส้มตำค่อยๆ เลื่อนขึ้นปีละ 10 บาทตลอด อันนั้น non-stationary · ค่าเฉลี่ยเปลี่ยน · กฎที่ได้จากข้อมูลปีก่อนอาจใช้กับปีนี้ไม่ได้แล้ว
คิดง่ายๆ แบบนี้:
• Stationary = ข้อมูลที่มีบ้าน — มันออกไปเที่ยวได้ แต่กลับบ้านเสมอ · ค่าเฉลี่ยไม่หนี
• Non-stationary = ข้อมูลที่ไม่มีบ้าน — มันเดินไปเรื่อยๆ ไม่รู้จะจบที่ไหน · ค่าเฉลี่ยเลื่อน
ราคาหุ้น = Non-stationary — วันนี้ 100 พรุ่งนี้อาจ 101 หรือ 99 แต่ 10 ปีหน้าอาจ 500 ก็ได้ ไม่มีจุดคงที่ที่ "ต้องกลับมา"
ผลตอบแทนรายวัน = ใกล้ Stationary — +1% หรือ -1% วนอยู่แถวๆ 0% ค่าเฉลี่ยไม่เลื่อนหนีไปไหน
2. ทำไม Stationarity ถึงสำคัญมาก
สมมติหลิวสอนเด็กด้วยข้อสอบที่ออกโดยใช้หลักสูตรปีเก่า แต่หลักสูตรเปลี่ยนไปแล้วทุกปี — เด็กจะสอบผ่านได้ยังไง? · สถิติก็เหมือนกัน
โมเดลสถิติทุกตัว — ตั้งแต่ regression ธรรมดา ไปถึง machine learning — ล้วนสมมติว่า "กฎที่เรียนรู้จากอดีต ยังใช้ได้กับอนาคต" · ถ้าข้อมูลเป็น non-stationary กฎเปลี่ยนตลอดเวลา โมเดลที่ train มาจากอดีตก็กลายเป็นขยะ
⚠️ กับดักคลาสสิกที่ quant มือใหม่โดนทุกคน: เอาราคาหุ้นสองตัวมาหา correlation แล้วเจอว่า "สัมพันธ์กัน 95%!" — แต่ถ้าทั้งคู่เป็น non-stationary ที่ต่างก็ค่อยๆ ขึ้นตลอด ค่า 95% นั้นอาจไม่ได้บอกอะไรเลย เป็นแค่ "ของสองอย่างที่ต่างก็ขึ้นพร้อมกัน" — นักเศรษฐศาสตร์เรียกว่า spurious regression (ความสัมพันธ์ลวง) · เจ็บจริง ขาดทุนจริง
3. ราคา vs ผลตอบแทน — ทำไม quant แปลงก่อนเสมอ
นี่คือขั้นตอนแรกที่ quant ทำกับข้อมูลราคาทุกครั้งก่อนจะวิเคราะห์อะไรทั้งนั้น:
| ราคา (Price) | ผลตอบแทน (Return) |
| ตัวอย่าง | วันจ. 100, อ. 102, พ. 101, พฤ. 105 | +2%, -0.98%, +3.96% |
| Stationarity | Non-stationary — เลื่อนไปเรื่อยๆ ไม่มีจุดคงที่ | ใกล้ Stationary — วนรอบ 0% ไม่หนี |
| ค่าเฉลี่ย | เปลี่ยนตลอดตามระดับราคา | เสถียร — บวกลบวนอยู่แถวเดิม |
| วิเคราะห์ได้ไหม | ระวัง — ผล correlation อาจลวง | ได้ — สถิติที่คำนวณมีความหมาย |
| สูตรแปลง | — | r_t = (P_t - P_{t-1}) / P_{t-1} หรือ log return |
💡 กฎข้อแรกของ quant เวลาเปิดข้อมูลราคา: แปลงเป็น return ก่อน ก่อนจะทำอะไรทั้งนั้น · ราคาดิบมีไว้วาดกราฟ · return มีไว้วิเคราะห์ · ถ้าเห็น quant คนไหนใช้ราคาดิบหา correlation หรือสร้างโมเดล — ถามก่อนว่าตรวจ stationarity แล้วหรือยัง
Log Return คืออะไร ทำไมถึงนิยมกว่า
มีสองแบบที่ใช้กัน:
Simple return: r = (P_t - P_{t-1}) / P_{t-1} ← คิดง่าย เข้าใจง่าย
Log return: r = ln(P_t / P_{t-1}) ← นิยมในงาน quant จริง
ทำไม log return ดีกว่า:
• บวกกันได้ตลอดเวลา: 3 วัน = log(P_3/P_0) = r_1 + r_2 + r_3
• สมมาตรกว่า (ขึ้น 50% แล้วลง 50% ≠ คืนเดิม แต่ log จัดการได้สวยกว่า)
• กระจายตัวเหมือน Normal มากกว่า → ใช้กับโมเดลสถิติได้ง่ายกว่า
สำหรับการเทรดรายวัน: ต่างกันน้อยมาก ใช้อันไหนก็ได้ · สำคัญคือต้องแปลงก่อน
4. Autocorrelation — ค่าตอนนี้สัมพันธ์กับอดีตไหม
ลองนึกถึงอากาศ — วันนี้อากาศร้อน พรุ่งนี้มักจะร้อนต่อ ไม่ใช่ว่าสุ่มเย็นขึ้นมาเฉยๆ · หรือถ้าหุ้นขึ้นมาสามวันติด วันที่สี่มีแนวโน้มจะขึ้นต่อหรือกลับตัว? — นั่นคือคำถาม autocorrelation
Autocorrelation คือ ความสัมพันธ์ของข้อมูลกับตัวเองในอดีต · เขียนย่อว่า ACF (Autocorrelation Function) · ค่าบวกแปลว่า "ตามกัน" — ขึ้นแล้วมักขึ้นต่อ · ค่าลบแปลว่า "สลับกัน" — ขึ้นแล้วมักลง · ใกล้ศูนย์แปลว่า "ไม่เกี่ยวกัน"
ตัวอย่างง่ายๆ:
• อุณหภูมิรายวัน — ACF สูงมาก วันนี้ร้อน พรุ่งนี้มักร้อน · คนที่รู้ autocorrelation ทำนายพรุ่งนี้ได้ดีกว่าเดา
• ราคาหุ้น (return) — ACF ใกล้ศูนย์ · ขึ้นวันนี้ไม่ได้บอกว่าพรุ่งนี้ขึ้นหรือลง · ตลาดที่มีประสิทธิภาพ autocorrelation ของ return ควรใกล้ศูนย์มาก
• Volatility (ความเหวี่ยง) — ACF สูงมาก! · วันนี้เหวี่ยงแรง พรุ่งนี้มักเหวี่ยงแรงด้วย — และนี่คือหัวใจของบทถัดไป (GARCH)
วัด Autocorrelation ยังไง
quant วัดด้วย correlogram — กราฟที่แสดง ACF ที่ lag ต่างๆ (lag = ดูย้อนหลังกี่งวด)
ตีความ:
lag 1 = ความสัมพันธ์ระหว่างวันนี้กับเมื่อวาน
lag 5 = ความสัมพันธ์ระหว่างวันนี้กับ 5 วันก่อน
lag 20 = ความสัมพันธ์กับ 20 วันก่อน (≈ 1 เดือน)
return ของตลาดหุ้นส่วนใหญ่:
lag 1-20 ส่วนใหญ่ใกล้ 0 ← ยากมากที่จะทำนายจากอดีต
ความเหวี่ยงรายวัน (|return| หรือ return²):
lag 1-20 สูงมาก ← ทำนายได้จริง นี่คือ volatility clustering
5. PACF — พี่น้องของ ACF ที่ quant ต้องรู้
มีอีกตัวที่ใช้คู่กันเสมอ — PACF (Partial Autocorrelation Function) · ต่างกันตรงที่ PACF ตัด "ผลทางอ้อม" ออก
อุปมา: สมมติวันนี้อากาศสัมพันธ์กับเมื่อสัปดาห์ที่แล้ว — แต่จริงๆ อาจเพราะเมื่อวาน→วันก่อนหน้า→ทอดไปเรื่อยๆ จนถึงสัปดาห์ที่แล้ว ไม่ใช่สัปดาห์ที่แล้วส่งผลมาโดยตรง · PACF ตัดทอดนี้ออก เหลือแค่ผลตรงๆ
💡 ACF + PACF ใช้เป็นเครื่องมือวินิจฉัย ไม่ใช่เครื่องมือเทรด · ดูแล้วบอกได้ว่า "ข้อมูลชุดนี้มีโครงสร้างอะไรซ่อนอยู่" → เลือกโมเดลให้เหมาะ · ไม่ดู ACF/PACF ก่อน = เปิดโมเดลโดยไม่รู้ว่ากำลังวิเคราะห์อะไร
6. ตรวจ Stationarity ยังไงในทางปฏิบัติ
quant มีเครื่องมือทดสอบ stationarity ที่ใช้กันจริงอยู่ไม่กี่ตัว ที่พบบ่อยที่สุดคือ:
| ทดสอบ | ชื่อเต็ม | วิธีอ่านผล | ใช้เมื่อ |
| ADF Test | Augmented Dickey-Fuller | p-value < 0.05 = stationary · p-value > 0.05 = ไม่ stationary | ใช้บ่อยที่สุด เป็นมาตรฐาน |
| KPSS Test | Kwiatkowski–Phillips–Schmidt–Shin | ตรงข้าม ADF: p-value < 0.05 = ไม่ stationary | ใช้คู่กับ ADF เพื่อครอสเช็ค |
| ดูกราฟ | Visual inspection | ค่าเฉลี่ยเลื่อนไหม? ความแปรปรวนเปลี่ยนไหม? | ดูก่อนเสมอก่อนรันสถิติ |
วิธีทำจริงในทางปฏิบัติ:
1. ดูกราฟราคา (price) — เกือบแน่นอนว่า non-stationary
2. แปลงเป็น return: r = ln(P_t / P_{t-1})
3. รัน ADF Test บน return — มักผ่าน (p < 0.05)
4. ดู ACF/PACF ของ return — ถ้าใกล้ศูนย์หมด ดีมาก (ทำนายทิศยาก)
5. ดู ACF/PACF ของ |return| หรือ return² — ถ้าสูง = มี volatility clustering = ควรใช้ GARCH
7. ทำไมถึงสำคัญกับเทรดเดอร์อย่างหลิว
หลิวอาจคิดว่า "เรื่องนี้เทคนิคเกินไป ใช้ทำอะไรในชีวิตจริง?" — นี่คือคำตอบตรงๆ:
1. ก่อนจะสร้างระบบเทรดใดๆ — ถ้าจะ backtest หรือหา pattern ในราคา ต้องทำงานกับ return ไม่ใช่ราคาดิบ · ถ้าหา "correlation" ระหว่างตลาดสองตัว ต้องเช็คก่อนว่าไม่ใช่แค่ spurious
2. ก่อนจะใช้ระบบ mean reversion — ระบบที่เล่นสวนทาง (ขึ้นมากแล้วขาย) ทำงานได้ก็ต่อเมื่อข้อมูล stationary เพราะต้องมีจุดที่ "กลับมา" · ถ้า non-stationary ราคาอาจไม่มีวันกลับ
3. Pairs Trading — ระบบจับคู่หุ้นสองตัวมาเทรดสวนกัน ต้องการให้ spread ระหว่างสองตัว stationary · ถ้าไม่ตรวจก่อน อาจจับคู่ผิดแล้วขาดทุนไม่รู้ว่าผิดตรงไหน (บทถัดไปจะลงลึกเรื่องนี้)
8. Return ก็ไม่ได้ perfect stationary — ต้องรู้ขีดจำกัด
จริงๆ แล้ว return ของตลาดก็ไม่ได้ stationary ร้อยเปอร์เซ็นต์ มีปัญหาที่ต้องรู้:
ปัญหาที่พบบ่อย:
1. Volatility Clustering — ความแปรปรวน (variance) เปลี่ยนตามเวลา
วันปกติ: return กระจายแคบ
วันวิกฤต: return กระจายกว้างมาก
→ variance ไม่คงที่ = ละเมิด strict stationarity
2. Fat Tails — เหตุการณ์สุดขีดเกิดบ่อยกว่าที่ Normal Distribution ทำนาย
โมเดลที่สมมติ Normal อาจ underestimate ความเสี่ยงจริง
3. Regime Change — ตลาดเปลี่ยนโหมด (bull→bear) คุณสมบัติเปลี่ยนไปด้วย
แต่ถึงอย่างนั้น return ก็ยัง "นิ่งกว่า" ราคาดิบมาก
→ แปลงเป็น return ยังถูกต้องเสมอ
⚠️ Volatility Clustering คือข้อยกเว้นสำคัญ: แม้ว่า return (ทิศทาง) จะแทบทำนายไม่ได้ แต่ความเหวี่ยง (ขนาด) ทำนายได้ · วันนี้เหวี่ยง 2% มีแนวโน้มจะเหวี่ยง 2-3% พรุ่งนี้ด้วย — ไม่ใช่เพราะวิเศษ แต่เพราะมันเป็นปรากฏการณ์ทางสถิติที่วัดได้ · GARCH ในบทถัดไปคือโมเดลที่จับสิ่งนี้ได้
9. สรุปภาพรวม — จำแค่ 3 อย่างนี้
📌 สามสิ่งที่ต้องติดสมอง:
1. ราคา = Non-stationary — ค่าเฉลี่ยเลื่อน · ห้ามเอาไปหา correlation หรือสร้างโมเดลตรงๆ
2. Return = ใกล้ Stationary — แปลงก่อนเสมอด้วย r = ln(P_t/P_{t-1}) แล้วค่อยวิเคราะห์
3. Autocorrelation ของ return ≈ 0 แต่ของ volatility สูง — หมายความว่า:
• ทำนาย "ทิศ" ราคาจากอดีต = ยากมาก (return ACF ≈ 0)
• ทำนาย "ความเหวี่ยง" จากอดีต = ทำได้จริง (volatility ACF สูง)
→ ใช้ประโยชน์ตรงนี้ในการบริหาร risk/size ไม่ใช่ทายทิศ