ประเด็นสำคัญ
- แบ็กเทสต์ตอบได้เพียงว่ากฎจะทำอะไรภายใต้สมมติฐานที่คุณเลือก
- โอเวอร์ฟิตติ้งเพิ่มขึ้นตามทุกค่าตั้งที่ปรับได้ ควรเลือกกฎที่เรียบง่ายและที่ราบสูงที่เสถียร
- ข้อผิดพลาดแบบผู้รอดชีวิตและมองล่วงหน้าทำให้ผลลัพธ์พองโตโดยไม่มีคำเตือนที่มองเห็น
- ใส่ต้นทุนที่สมจริง ใช้ข้อมูลเอาต์ออฟแซมเปิล และฟอร์เวิร์ดเทสต์ก่อนลงเงินทุนจริง
แบ็กเทสต์คือการนำกฎการเทรดไปเล่นซ้ำบนข้อมูลในอดีตเพื่อดูว่าจะให้ผลอย่างไร เป็นตัวกรองที่มีประโยชน์ แต่ก็หลอกตัวเองได้ง่ายอย่างน่าทึ่งเช่นกัน เส้นอิควิตี้ที่น่าประทับใจจำนวนมากมาจากการตั้งค่าการทดสอบ ไม่ใช่จากตัวความคิดเอง การรู้จักกับดักทั่วไปช่วยให้คุณแยกผลลัพธ์ที่น่าจะไปได้ดีออกจากผลลัพธ์ที่เพียงดูดี
แบ็กเทสต์บอกอะไรได้และบอกอะไรไม่ได้
แบ็กเทสต์ตอบคำถามที่แคบมาก คือ ภายใต้กฎเหล่านี้ ข้อมูลนี้ และสมมติฐานเรื่องต้นทุนและการจับคู่คำสั่งเหล่านี้ จะเกิดอะไรขึ้น มันบอกไม่ได้ว่าอะไรจะเกิดขึ้น อย่างดีที่สุดคือช่วยคัดแนวคิดที่อ่อนแอทิ้งได้ในราคาถูก และให้ภาพคร่าว ๆ ว่าวิธีนั้นขาดทุนบ่อยเพียงใด ดรอว์ดาวน์ (drawdown) ลึกเท่าไร และอ่อนไหวต่อการตั้งค่ามากแค่ไหน
เนื่องจากคุณเป็นผู้เลือกข้อมูล กฎ และสมมติฐานเอง ทุกการเลือกจึงเป็นโอกาสให้อคติแทรกเข้ามา กับดักห้าข้อด้านล่างอธิบายช่องว่างส่วนใหญ่ระหว่างผลแบ็กเทสต์กับผลการเทรดจริง
| กับดัก | สิ่งที่ผิดพลาด | การตรวจสอบอย่างรวดเร็ว |
|---|---|---|
| โอเวอร์ฟิตติ้ง (Overfitting) | ปรับกฎจนเข้ากับสัญญาณรบกวนในอดีต | การเปลี่ยนค่าตั้งเล็กน้อยทำให้ผลลัพธ์พังหรือไม่ |
| อคติผู้รอดชีวิต (Survivorship bias) | ข้อมูลมีเฉพาะสินทรัพย์ที่ยังคงอยู่ | ชุดข้อมูลรวมตราสารที่ถูกเพิกถอนหรือควบรวมไปแล้วหรือไม่ |
| อคติมองล่วงหน้า (Look-ahead bias) | การทดสอบใช้ข้อมูลที่ยังไม่มีในขณะนั้น | ค่านี้เป็นที่ทราบแล้วหรือยังในขณะที่เปิดเทรด |
| ต้นทุนที่ถูกมองข้าม | ไม่คิดสเปรด (spread) ค่าคอมมิชชัน สลิปเพจ (slippage) และสวอป (swap) | ผลยังเป็นบวกหรือไม่เมื่อต้นทุนจริงเพิ่มเป็นสองเท่า |
| การขุดข้อมูล (Data snooping) | ทดสอบหลายแนวคิดแล้วเก็บไว้เฉพาะที่ดีที่สุด | ลองมากี่รูปแบบก่อนจะได้อันนี้ |
โอเวอร์ฟิตติ้ง: ปรับตามสัญญาณรบกวน
โอเวอร์ฟิตติ้ง หรือที่เรียกว่าการปรับเส้นโค้งให้พอดี (curve fitting) หมายถึงการปั้นกลยุทธ์ให้เข้ากับข้อมูลในอดีตมากเกินไป จนจับได้แต่ความแปลกประหลาดแบบสุ่ม แทนที่จะเป็นพฤติกรรมที่เกิดซ้ำได้ ยิ่งกฎมีค่าที่ปรับได้มากเท่าไร ก็ยิ่งทำได้ง่ายขึ้นเท่านั้น
ลองดูตัวอย่างเชิงขนาด สมมติว่าคุณทดสอบความยาวค่าเฉลี่ยเคลื่อนที่ตั้งแต่ 5 ถึง 100 ทีละ 5 (20 ค่า) ขนาดสต็อป 20 ระดับ และเป้าหมายกำไร 10 แบบ จะได้ 20 × 20 × 10 = 4,000 ชุดค่า ต่อให้ทุกชุดเป็นเพียงการโยนเหรียญที่ไม่มีความได้เปรียบจริง ก็ยังมีจำนวนหนึ่งที่ดูยอดเยี่ยมเพราะโชคเพียงอย่างเดียว การเลือกผู้ชนะจากการสุ่ม 4,000 ครั้งบอกแค่ว่าชุดไหนโชคดีที่สุด ไม่ใช่ว่าชุดไหนดีที่สุด
อคติผู้รอดชีวิต: ผู้แพ้ที่หายไป
อคติผู้รอดชีวิตเกิดขึ้นเมื่อชุดข้อมูลมีเฉพาะสินทรัพย์ที่อยู่รอดมาจนถึงปัจจุบัน บริษัทที่ล้มละลาย ถูกเพิกถอนจากตลาด หรือถูกซื้อกิจการในราคาขาดทุนหายไปอย่างเงียบ ๆ และการขาดทุนของพวกมันก็หายไปด้วย การทดสอบกฎเลือกหุ้นบนรายชื่อสมาชิกดัชนีในปัจจุบันเป็นตัวอย่างคลาสสิก
ตัวเลขประกอบการอธิบายแสดงให้เห็นผลกระทบ สมมติว่ามีหุ้น 100 ตัวในตอนต้นของช่วงสิบปี แปดสิบตัวอยู่รอดและให้ผลตอบแทนเฉลี่ย 10% ต่อปี ยี่สิบตัวถูกเพิกถอนและขาดทุนเฉลี่ย 15% ต่อปี ทั้งกลุ่มเฉลี่ย (80 × 10 + 20 × −15) ÷ 100 = 5% ต่อปี การทดสอบที่ใช้เฉพาะผู้รอดชีวิตรายงานว่า 10% ซึ่งเป็นสองเท่าของความจริง ปัญหาเดียวกันอาจเกิดกับกองทุน ระบบเทรดที่เผยแพร่ผลงาน และแม้แต่คู่สกุลเงินที่ถูกถอดออกจากแพลตฟอร์ม
อคติมองล่วงหน้า: รู้อนาคตโดยบังเอิญ
อคติมองล่วงหน้าหมายความว่าการทดสอบใช้ข้อมูลที่ยังไม่มีในจุดตัดสินใจ มักละเอียดอ่อน ตัวอย่างเช่น ซื้อที่ราคาปิดของแท่งหลังจากที่สัญญาณถูกคำนวณจากราคาปิดเดียวกันนั้น การใช้ราคาสูงสุดหรือต่ำสุดของวันเพื่อวางคำสั่งก่อนหน้าในวันเดียวกัน หรือการใช้ตัวเลขเศรษฐกิจในรูปแบบที่ปรับปรุงภายหลังแทนที่จะเป็นเวอร์ชันที่เผยแพร่ในเวลานั้น
- เทรดที่ราคาเปิดของแท่งถัดไป ไม่ใช่แท่งที่ก่อให้เกิดสัญญาณ เว้นแต่คุณลงมือที่ราคาปิดได้จริง
- ตรวจสอบว่าอินดิเคเตอร์ทุกตัวใช้เฉพาะค่าในอดีต โดยเฉพาะอินดิเคเตอร์ที่เขียนเองหรือแบบรีเพนต์ (repainting) ซึ่งเปลี่ยนเส้นในอดีตภายหลัง
- ใช้ข้อมูล ณ เวลานั้น (point-in-time) สำหรับปัจจัยพื้นฐานและสมาชิกดัชนี
- สงสัยผลลัพธ์ใดก็ตามที่ดูเรียบเกินไป การเทรดจริงแทบไม่เคยให้เส้นที่เรียบสม่ำเสมอสมบูรณ์
ต้นทุน การจับคู่คำสั่ง และขนาดตัวอย่าง
กฎที่ทำกำไรได้เล็กน้อยต่อเทรดอาจหายไปเมื่อบวกต้นทุน วิธีเทรดภายในวันที่มีจำนวนเทรดมากได้รับผลกระทบมากที่สุด เพราะแต่ละเทรดต้องจ่ายสเปรดซ้ำ ควรจำลองต้นทุนแบบระมัดระวัง ใช้สเปรดที่สมจริงตามช่วงเวลาของวัน และเพิ่มสลิปเพจสำหรับคำสั่งสต็อป ซึ่งมักถูกจับคู่ที่ราคาแย่กว่าระดับของมันในช่วงที่ตลาดเคลื่อนไหวเร็ว
ขนาดตัวอย่างสำคัญไม่แพ้กัน แบ็กเทสต์ที่มี 25 เทรดเป็นเพียงเรื่องเล่า ผู้ปฏิบัติจำนวนมากมองหาอย่างน้อยไม่กี่ร้อยเทรดที่กระจายอยู่ในสภาวะตลาดต่าง ๆ ก่อนจะเชื่อถือสถิติได้ สภาวะก็สำคัญเช่นกัน การทดสอบที่รันเฉพาะในช่วงขาขึ้นยาวต่อเนื่องบอกอะไรได้น้อยมากเกี่ยวกับตลาดที่แกว่งตัวในกรอบหรือกำลังลดลง
ขั้นตอนการตรวจสอบที่ซื่อตรงมากขึ้น
- เขียนกฎก่อนทดสอบ. เขียนสมมติฐานและกฎลงกระดาษ รวมถึงจำนวนค่าตั้งที่คุณจะปรับเปลี่ยน ซึ่งจำกัดปริมาณการปรับแต่งหลังเห็นผล
- แบ่งข้อมูล. ปรับกฎกับช่วงเวลาก่อนหน้า เรียกว่าอินแซมเปิล (in-sample) และเก็บช่วงเวลาหลังจากนั้น เรียกว่าเอาต์ออฟแซมเปิล (out-of-sample) ไว้โดยไม่แตะต้อง การแบ่งทั่วไปคือประมาณ 70% สำหรับสร้างและ 30% สำหรับตรวจสอบเคล็ดลับ: ดูข้อมูลที่กันไว้เพียงครั้งเดียว การแอบดูซ้ำ ๆ จะเปลี่ยนมันเป็นข้อมูลอินแซมเปิล
- ทดสอบความทนทานของค่าตั้ง. ขยับแต่ละพารามิเตอร์ขึ้นและลง หากผลเปลี่ยนไปอย่างมาก แสดงว่ากฎเปราะบาง
- ใส่ต้นทุนที่สมจริง. รวมสเปรด ค่าคอมมิชชัน สวอป และสลิปเพจ แล้วเพิ่มต้นทุนเป็นสองเท่าเพื่อดูว่ายังเหลืออะไรอยู่หรือไม่
- วอล์กฟอร์เวิร์ด (Walk forward). ปรับกฎใหม่บนหน้าต่างเลื่อน แล้วทดสอบกับช่วงถัดไปที่ยังไม่เคยเห็น ทำซ้ำไปตลอดข้อมูล วิธีนี้เลียนแบบการที่คุณต้องปรับกฎจริง ๆ
- ฟอร์เวิร์ดเทสต์ด้วยขนาดเล็ก. ใช้กฎบนบัญชีทดลอง (demo) หรือขนาดต่ำสุดสำหรับจำนวนเทรดที่มีนัยสำคัญ และเปรียบเทียบพฤติกรรมจริงกับแบ็กเทสต์
คำถามที่พบบ่อย
แบ็กเทสต์ควรมีกี่เทรด
ไม่มีเกณฑ์ตายตัว แต่หลักสิบนั้นน้อยเกินไปมาก จำนวนเทรดที่มากขึ้นช่วยลดสัญญาณรบกวนในสถิติ และการครอบคลุมสภาวะตลาดที่หลากหลายสำคัญไม่แพ้จำนวนดิบ
การทดสอบเอาต์ออฟแซมเปิลเพียงพอที่จะพิสูจน์ว่ากลยุทธ์ใช้ได้หรือไม่
ไม่ ช่วยลดความเสี่ยงของโอเวอร์ฟิตติ้งแต่ไม่ได้ขจัดมัน โดยเฉพาะหากคุณลองหลายแนวคิดแล้วเก็บอันที่ผ่าน และมันไม่อาจรองรับการเปลี่ยนแปลงของตลาดในอนาคตได้
แบ็กเทสต์กับฟอร์เวิร์ดเทสต์ต่างกันอย่างไร
แบ็กเทสต์ใช้ข้อมูลในอดีต ส่วนฟอร์เวิร์ดเทสต์รันกฎบนข้อมูลใหม่เมื่อเข้ามา ไม่ว่าจะบนบัญชีทดลองหรือด้วยขนาดจริงขนาดเล็ก ฟอร์เวิร์ดเทสต์เผยปัญหาด้านการส่งคำสั่งและต้นทุนที่ประวัติศาสตร์ซ่อนไว้
เชื่อแบ็กเทสต์ที่ผู้ขายเผยแพร่ได้หรือไม่
ให้ถือว่าเป็นการตลาดจนกว่าจะทราบแหล่งข้อมูล ต้นทุน จำนวนรูปแบบที่ลอง และว่าผลเป็นผลจริงหรือผลจำลอง ผลงานจริงที่ได้รับการตรวจสอบโดยอิสระมีน้ำหนักมากกว่าการจำลองใด ๆ