การวิเคราะห์บทเรียนระดับกลาง

กับดักของการแบ็กเทสต์: โอเวอร์ฟิตติ้ง อคติผู้รอดชีวิต และการมองล่วงหน้า

ทำไมแบ็กเทสต์จึงดูดีกว่าการเทรดจริง: โอเวอร์ฟิตติ้ง อคติผู้รอดชีวิต ข้อผิดพลาดแบบมองล่วงหน้า และต้นทุนที่ถูกมองข้าม พร้อมเช็กลิสต์ทดสอบผลอย่างตรงไปตรงมา

อ่าน 9 นาทีตรวจสอบข้อเท็จจริงแล้วเผยแพร่เมื่อ 1 มี.ค. 2567

ประเด็นสำคัญ

  • แบ็กเทสต์ตอบได้เพียงว่ากฎจะทำอะไรภายใต้สมมติฐานที่คุณเลือก
  • โอเวอร์ฟิตติ้งเพิ่มขึ้นตามทุกค่าตั้งที่ปรับได้ ควรเลือกกฎที่เรียบง่ายและที่ราบสูงที่เสถียร
  • ข้อผิดพลาดแบบผู้รอดชีวิตและมองล่วงหน้าทำให้ผลลัพธ์พองโตโดยไม่มีคำเตือนที่มองเห็น
  • ใส่ต้นทุนที่สมจริง ใช้ข้อมูลเอาต์ออฟแซมเปิล และฟอร์เวิร์ดเทสต์ก่อนลงเงินทุนจริง

แบ็กเทสต์คือการนำกฎการเทรดไปเล่นซ้ำบนข้อมูลในอดีตเพื่อดูว่าจะให้ผลอย่างไร เป็นตัวกรองที่มีประโยชน์ แต่ก็หลอกตัวเองได้ง่ายอย่างน่าทึ่งเช่นกัน เส้นอิควิตี้ที่น่าประทับใจจำนวนมากมาจากการตั้งค่าการทดสอบ ไม่ใช่จากตัวความคิดเอง การรู้จักกับดักทั่วไปช่วยให้คุณแยกผลลัพธ์ที่น่าจะไปได้ดีออกจากผลลัพธ์ที่เพียงดูดี

แบ็กเทสต์บอกอะไรได้และบอกอะไรไม่ได้

แบ็กเทสต์ตอบคำถามที่แคบมาก คือ ภายใต้กฎเหล่านี้ ข้อมูลนี้ และสมมติฐานเรื่องต้นทุนและการจับคู่คำสั่งเหล่านี้ จะเกิดอะไรขึ้น มันบอกไม่ได้ว่าอะไรจะเกิดขึ้น อย่างดีที่สุดคือช่วยคัดแนวคิดที่อ่อนแอทิ้งได้ในราคาถูก และให้ภาพคร่าว ๆ ว่าวิธีนั้นขาดทุนบ่อยเพียงใด ดรอว์ดาวน์ (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 ครั้งบอกแค่ว่าชุดไหนโชคดีที่สุด ไม่ใช่ว่าชุดไหนดีที่สุด

มองหาที่ราบสูง ไม่ใช่ยอดแหลมแนวคิดที่แข็งแกร่งมักใช้ได้ผลใกล้เคียงกันทั่วบริเวณของค่าตั้งใกล้เคียง หากการตั้งค่า 20 คาบดีมากแต่ 18 และ 22 แย่ คุณอาจพบเพียงยอดแหลมของสัญญาณรบกวน ควรเลือกค่าตั้งที่อยู่กลางพื้นที่กว้างและเสถียร

อคติผู้รอดชีวิต: ผู้แพ้ที่หายไป

อคติผู้รอดชีวิตเกิดขึ้นเมื่อชุดข้อมูลมีเฉพาะสินทรัพย์ที่อยู่รอดมาจนถึงปัจจุบัน บริษัทที่ล้มละลาย ถูกเพิกถอนจากตลาด หรือถูกซื้อกิจการในราคาขาดทุนหายไปอย่างเงียบ ๆ และการขาดทุนของพวกมันก็หายไปด้วย การทดสอบกฎเลือกหุ้นบนรายชื่อสมาชิกดัชนีในปัจจุบันเป็นตัวอย่างคลาสสิก

ตัวเลขประกอบการอธิบายแสดงให้เห็นผลกระทบ สมมติว่ามีหุ้น 100 ตัวในตอนต้นของช่วงสิบปี แปดสิบตัวอยู่รอดและให้ผลตอบแทนเฉลี่ย 10% ต่อปี ยี่สิบตัวถูกเพิกถอนและขาดทุนเฉลี่ย 15% ต่อปี ทั้งกลุ่มเฉลี่ย (80 × 10 + 20 × −15) ÷ 100 = 5% ต่อปี การทดสอบที่ใช้เฉพาะผู้รอดชีวิตรายงานว่า 10% ซึ่งเป็นสองเท่าของความจริง ปัญหาเดียวกันอาจเกิดกับกองทุน ระบบเทรดที่เผยแพร่ผลงาน และแม้แต่คู่สกุลเงินที่ถูกถอดออกจากแพลตฟอร์ม

อคติมองล่วงหน้า: รู้อนาคตโดยบังเอิญ

อคติมองล่วงหน้าหมายความว่าการทดสอบใช้ข้อมูลที่ยังไม่มีในจุดตัดสินใจ มักละเอียดอ่อน ตัวอย่างเช่น ซื้อที่ราคาปิดของแท่งหลังจากที่สัญญาณถูกคำนวณจากราคาปิดเดียวกันนั้น การใช้ราคาสูงสุดหรือต่ำสุดของวันเพื่อวางคำสั่งก่อนหน้าในวันเดียวกัน หรือการใช้ตัวเลขเศรษฐกิจในรูปแบบที่ปรับปรุงภายหลังแทนที่จะเป็นเวอร์ชันที่เผยแพร่ในเวลานั้น

  • เทรดที่ราคาเปิดของแท่งถัดไป ไม่ใช่แท่งที่ก่อให้เกิดสัญญาณ เว้นแต่คุณลงมือที่ราคาปิดได้จริง
  • ตรวจสอบว่าอินดิเคเตอร์ทุกตัวใช้เฉพาะค่าในอดีต โดยเฉพาะอินดิเคเตอร์ที่เขียนเองหรือแบบรีเพนต์ (repainting) ซึ่งเปลี่ยนเส้นในอดีตภายหลัง
  • ใช้ข้อมูล ณ เวลานั้น (point-in-time) สำหรับปัจจัยพื้นฐานและสมาชิกดัชนี
  • สงสัยผลลัพธ์ใดก็ตามที่ดูเรียบเกินไป การเทรดจริงแทบไม่เคยให้เส้นที่เรียบสม่ำเสมอสมบูรณ์

ต้นทุน การจับคู่คำสั่ง และขนาดตัวอย่าง

กฎที่ทำกำไรได้เล็กน้อยต่อเทรดอาจหายไปเมื่อบวกต้นทุน วิธีเทรดภายในวันที่มีจำนวนเทรดมากได้รับผลกระทบมากที่สุด เพราะแต่ละเทรดต้องจ่ายสเปรดซ้ำ ควรจำลองต้นทุนแบบระมัดระวัง ใช้สเปรดที่สมจริงตามช่วงเวลาของวัน และเพิ่มสลิปเพจสำหรับคำสั่งสต็อป ซึ่งมักถูกจับคู่ที่ราคาแย่กว่าระดับของมันในช่วงที่ตลาดเคลื่อนไหวเร็ว

ขนาดตัวอย่างสำคัญไม่แพ้กัน แบ็กเทสต์ที่มี 25 เทรดเป็นเพียงเรื่องเล่า ผู้ปฏิบัติจำนวนมากมองหาอย่างน้อยไม่กี่ร้อยเทรดที่กระจายอยู่ในสภาวะตลาดต่าง ๆ ก่อนจะเชื่อถือสถิติได้ สภาวะก็สำคัญเช่นกัน การทดสอบที่รันเฉพาะในช่วงขาขึ้นยาวต่อเนื่องบอกอะไรได้น้อยมากเกี่ยวกับตลาดที่แกว่งตัวในกรอบหรือกำลังลดลง

ขั้นตอนการตรวจสอบที่ซื่อตรงมากขึ้น

  1. เขียนกฎก่อนทดสอบ. เขียนสมมติฐานและกฎลงกระดาษ รวมถึงจำนวนค่าตั้งที่คุณจะปรับเปลี่ยน ซึ่งจำกัดปริมาณการปรับแต่งหลังเห็นผล
  2. แบ่งข้อมูล. ปรับกฎกับช่วงเวลาก่อนหน้า เรียกว่าอินแซมเปิล (in-sample) และเก็บช่วงเวลาหลังจากนั้น เรียกว่าเอาต์ออฟแซมเปิล (out-of-sample) ไว้โดยไม่แตะต้อง การแบ่งทั่วไปคือประมาณ 70% สำหรับสร้างและ 30% สำหรับตรวจสอบเคล็ดลับ: ดูข้อมูลที่กันไว้เพียงครั้งเดียว การแอบดูซ้ำ ๆ จะเปลี่ยนมันเป็นข้อมูลอินแซมเปิล
  3. ทดสอบความทนทานของค่าตั้ง. ขยับแต่ละพารามิเตอร์ขึ้นและลง หากผลเปลี่ยนไปอย่างมาก แสดงว่ากฎเปราะบาง
  4. ใส่ต้นทุนที่สมจริง. รวมสเปรด ค่าคอมมิชชัน สวอป และสลิปเพจ แล้วเพิ่มต้นทุนเป็นสองเท่าเพื่อดูว่ายังเหลืออะไรอยู่หรือไม่
  5. วอล์กฟอร์เวิร์ด (Walk forward). ปรับกฎใหม่บนหน้าต่างเลื่อน แล้วทดสอบกับช่วงถัดไปที่ยังไม่เคยเห็น ทำซ้ำไปตลอดข้อมูล วิธีนี้เลียนแบบการที่คุณต้องปรับกฎจริง ๆ
  6. ฟอร์เวิร์ดเทสต์ด้วยขนาดเล็ก. ใช้กฎบนบัญชีทดลอง (demo) หรือขนาดต่ำสุดสำหรับจำนวนเทรดที่มีนัยสำคัญ และเปรียบเทียบพฤติกรรมจริงกับแบ็กเทสต์
แบ็กเทสต์ที่ดีเป็นเหตุผลให้ทดสอบต่อ ไม่ใช่เหตุผลให้เทรดใหญ่ขึ้นแม้ผลลัพธ์ที่ตรวจสอบอย่างรอบคอบก็ยังล้มเหลวได้เมื่อใช้จริง เพราะตลาดเปลี่ยนไปและการส่งคำสั่งของคุณต่างจากโมเดล ผลิตภัณฑ์ที่ใช้เลเวอเรจขยายความเสียหายเมื่อความได้เปรียบจากแบ็กเทสต์กลายเป็นภาพลวงตา

คำถามที่พบบ่อย

แบ็กเทสต์ควรมีกี่เทรด

ไม่มีเกณฑ์ตายตัว แต่หลักสิบนั้นน้อยเกินไปมาก จำนวนเทรดที่มากขึ้นช่วยลดสัญญาณรบกวนในสถิติ และการครอบคลุมสภาวะตลาดที่หลากหลายสำคัญไม่แพ้จำนวนดิบ

การทดสอบเอาต์ออฟแซมเปิลเพียงพอที่จะพิสูจน์ว่ากลยุทธ์ใช้ได้หรือไม่

ไม่ ช่วยลดความเสี่ยงของโอเวอร์ฟิตติ้งแต่ไม่ได้ขจัดมัน โดยเฉพาะหากคุณลองหลายแนวคิดแล้วเก็บอันที่ผ่าน และมันไม่อาจรองรับการเปลี่ยนแปลงของตลาดในอนาคตได้

แบ็กเทสต์กับฟอร์เวิร์ดเทสต์ต่างกันอย่างไร

แบ็กเทสต์ใช้ข้อมูลในอดีต ส่วนฟอร์เวิร์ดเทสต์รันกฎบนข้อมูลใหม่เมื่อเข้ามา ไม่ว่าจะบนบัญชีทดลองหรือด้วยขนาดจริงขนาดเล็ก ฟอร์เวิร์ดเทสต์เผยปัญหาด้านการส่งคำสั่งและต้นทุนที่ประวัติศาสตร์ซ่อนไว้

เชื่อแบ็กเทสต์ที่ผู้ขายเผยแพร่ได้หรือไม่

ให้ถือว่าเป็นการตลาดจนกว่าจะทราบแหล่งข้อมูล ต้นทุน จำนวนรูปแบบที่ลอง และว่าผลเป็นผลจริงหรือผลจำลอง ผลงานจริงที่ได้รับการตรวจสอบโดยอิสระมีน้ำหนักมากกว่าการจำลองใด ๆ

เกี่ยวกับผู้เขียนทีมบรรณาธิการ Brokeli ทีมบรรณาธิการของ Brokeli เขียนและตรวจทานคู่มือการศึกษาของเรา ตัวเลขเกี่ยวกับโบรกเกอร์มาจากสแนปช็อตงานวิจัยที่เผยแพร่ และคู่มือไม่มีสัญญาณซื้อขายทีมบรรณาธิการ →
กับดักแบ็กเทสต์: โอเวอร์ฟิตติ้ง อคติผู้รอดชีวิต และ Look-Ahead · Brokeli