ตอบสั้น ๆ ก่อนเลย: Sharpe ratio ต่อปีสวย ๆ ของกลยุทธ์สายถือสั้น โดยเฉพาะกลยุทธ์ overnight effect (ซื้อ close ขาย open) ส่วนใหญ่เป็นภาพลวงจากการ annualize ด้วย sqrt(252) ในเทสของเรา แค่ใส่ต้นทุนจริง 2bps ต่อรอบ ระบบที่เลขต่อปีเคยดูหรูก็ตายสนิททั้งระบบ
บทความนี้เป็นบันทึกชันสูตรว่าเลขมันหลอกเราตรงไหน และจะจับโกหกมันยังไงก่อนเอาเงินจริงไปเสี่ยง
overnight effect สัญญาอะไรกับเรา
คำกล่าวอ้างที่วนอยู่ในวงการคือ ผลตอบแทนของหุ้นส่วนใหญ่เกิด “ข้ามคืน” ดังนั้นแค่ซื้อตอนตลาดปิด ขายตอนตลาดเปิดวันถัดไป ก็เก็บส่วนที่ดีที่สุดของตลาดได้โดยไม่ต้องทนถือระหว่างวัน
พอเอาไป backtest แบบมือใหม่ เลขที่ออกมามักตอกย้ำความเชื่อนี้ เพราะ Sharpe ratio ต่อปีที่คำนวณแบบมาตรฐานดูดีจนอยากเทเงินใส่ทันที และนั่นแหละคือจุดที่ศพเริ่มมีกลิ่น
เราเทสเรื่องนี้ยังไง
เราเทสตามสูตรของหมวด method คือรันกลยุทธ์บนข้อมูลจริง แล้วเทียบเลขสองชุด ชุดแรกคือเลขต่อปีแบบที่คนทั่วไปคำนวณ (annualize ด้วย sqrt(252) ตรง ๆ) ชุดที่สองคือเลขหลังแก้สองจุดคือ annualize จาก holding period จริง กับใส่ต้นทุนการเทรดต่อรอบ
กลยุทธ์ที่ขึ้นเขียงมีสองตัว ตัวแรกคือ overnight (ซื้อ close ขาย open ทุกวัน) ตัวที่สองคือ sector rotation ซึ่งเราเอามาเทียบกับ SPY buy & hold ตรง ๆ ส่วนเรื่องว่าข้อมูลกี่ตัวอย่างถึงจะพอเชื่อได้ เราแยกไปเล่าละเอียดในบทความ effective sample size
ผลที่เจอ: เลขสวยบนกระดาษ ศพจริงหลังหักต้นทุน
| สิ่งที่เทส | เลขที่เห็นตอนแรก | ความจริงหลังชันสูตร |
|---|---|---|
| overnight (ซื้อ close ขาย open) | ตัวเลขต่อปีดูดีมาก | ภาพลวงจาก sqrt(252) บนกลยุทธ์ที่ถือสั้นกว่า 1 วัน |
| overnight + ต้นทุน 2bps/รอบ | — | ระบบตายทั้งระบบ |
| sector rotation | ดูมีลุ้น | แพ้ SPY buy & hold |
จุดที่เจ็บที่สุดคือต้นทุน กลยุทธ์นี้เข้า-ออกทุกวัน แค่ 2bps ต่อรอบ ซึ่งถือว่าถูกมากแล้วในโลกจริง คูณเข้ากับความถี่เทรดระดับวันเทรดละรอบตลอด 252 วัน ต่อปี ต้นทุนสะสมก็กัด edge บาง ๆ ของ overnight จนไม่เหลืออะไรให้เก็บ
ส่วน sector rotation ไม่ต้องมีดราม่าอะไรเลย มันแค่แพ้การซื้อ SPY แล้วนั่งเฉย ๆ ซึ่งเป็นวิธีตายที่เงียบที่สุดในบรรดาศพที่เราเคยผ่า
ทำไม sqrt(252) ถึงหลอกเราได้
สูตร annualize มาตรฐานคือเอา Sharpe รายวันคูณ sqrt(252) หรือประมาณ 15.9 เท่า สมมติฐานเบื้องหลังคือแต่ละแถวในข้อมูลของเราคือผลตอบแทน “เต็มวัน” ที่เสี่ยงเต็มวัน
แต่กลยุทธ์ overnight ถือของสั้นกว่า 1 วัน ความผันผวนต่อรอบจึงต่ำกว่าการถือเต็มวันโดยธรรมชาติ พอเอา Sharpe ต่อรอบที่คำนวณจากความผันผวนแคบ ๆ นี้ไปคูณ 15.9 เท่าเหมือนกลยุทธ์เต็มวัน เลขต่อปีเลยโป่งเกินความสามารถจริงของระบบ พูดง่าย ๆ คือเราให้เครดิตมันเท่าคนวิ่งมาราธอน ทั้งที่มันวิ่งแค่ครึ่งทาง
ซ้ำร้าย เลขที่โป่งนี้ยังไม่โดนหักต้นทุนสักบาท กลยุทธ์ความถี่สูงที่กำไรต่อรอบบางเฉียบจะแพ้ต้นทุนเสมอถ้าไม่คิดให้ครบ นี่คือญาติสนิทของเคสที่เราเคยชันสูตรในบทความ gold breakout ที่พังเพราะ data feed — เลขสวยที่เกิดจากวิธีวัด ไม่ใช่จาก edge จริง
บทเรียนที่เอาไปใช้ได้
- ตัวเลขต่อปีต้อง annualize จาก holding period จริง ไม่ใช่จับทุกอย่างคูณ sqrt(252) เพราะมันคือ “จำนวนวันเทรด” ไม่ใช่ “จำนวนรอบของกลยุทธ์คุณ”
- ใส่ cost ก่อนตื่นเต้นเสมอ ในเทสนี้แค่ 2bps ต่อรอบ ก็เปลี่ยนระบบจากพระเอกเป็นศพ
- กลยุทธ์เทรดถี่ = ต้นทุนคือตัวละครหลัก ไม่ใช่เชิงอรรถ
- เจอเลขต่อปีสวยผิดปกติเมื่อไหร่ ให้สงสัยวิธีวัดก่อนสงสัยว่าตัวเองเจอขุมทรัพย์
เทสเองได้ยังไง
- รัน backtest กลยุทธ์ของคุณตามปกติ แล้วจดว่า holding period จริงต่อรอบคือเท่าไหร่ ถือข้ามคืนอย่างเดียวไม่นับเป็น “หนึ่งวันเต็ม”
- คำนวณ Sharpe สองแบบเทียบกัน แบบคูณ sqrt(252) ตรง ๆ กับแบบ annualize จาก holding period จริง ถ้าสองเลขห่างกันมาก แปลว่าเลขแรกกำลังหลอกคุณ
- ใส่ต้นทุนต่อรอบที่สมจริง (เริ่มที่ 2bps ต่อรอบ เป็นขั้นต่ำ) แล้วรันใหม่ ดูว่า edge ยังหายใจอยู่ไหม
- เทียบผลสุทธิกับ benchmark ขี้เกียจอย่าง buy & hold ถ้าแพ้ SPY แบบ sector rotation ในเทสของเรา ก็ปิดเคสได้เลย
- ก่อนสรุป ตรวจว่าเลขนั้นรอดทุกสภาพตลาดจริงไหม ตามแนวทางในบทความ regime-weighted evaluation
ระบบที่รอดจากด่านพวกนี้อาจไม่ได้มีเลขหวือหวาเท่าตอนแรก แต่มันคือเลขที่ยังมีชีวิตอยู่จริง ซึ่งดีกว่าเลขสวย ๆ บนใบมรณบัตรทุกกรณี