Backtest หุ้นที่ตัดบริษัทซึ่งถูกเพิกถอนออกไปอาจรายงานผลตอบแทนสูง ทั้งที่ลบผลลัพธ์ที่เลวร้ายที่สุดบางส่วนทิ้งไปอย่างเงียบ ๆ ปัญหามักเริ่มจากการตัดสินใจที่ดูใช้งานได้จริงข้อหนึ่ง: ดาวน์โหลดรายชื่อสัญลักษณ์หุ้นในวันนี้ แล้วทดสอบสัญลักษณ์เหล่านั้นย้อนหลังไป 10 ปี รายชื่อนั้นมีแต่บริษัทที่อยู่รอดมาตั้งแต่ต้น
การเก็บบริษัทที่ล้มเหลวไว้ในจักรวาลสำหรับการวิจัยต้องทำมากกว่าเพิ่มชื่อหุ้นเก่า ๆ เข้าไป คุณต้องรู้ว่าหลักทรัพย์ใดมีอยู่ในช่วงเวลาใด เข้าและออกจากตลาดเมื่อไร และมูลค่าของหลักทรัพย์เปลี่ยนแปลงอย่างไรในตอนท้าย ทางลัดที่พบบ่อย 3 วิธีทำให้ประวัติเหล่านี้สูญหายไปในรูปแบบต่างกัน
ข้อผิดพลาด 1: ใช้หุ้นในดัชนีวันนี้กับทุกปี
ลองนึกภาพการทดสอบกลยุทธ์โมเมนตัมรายเดือนกับหุ้นที่เป็นองค์ประกอบของ S&P 500 ในปัจจุบัน โดยเริ่มตั้งแต่ปี 2010 บริษัทที่ล้มเหลว ถูกควบรวม หรือหลุดจากดัชนีจะหายไปจากการปรับพอร์ตทุกครั้ง กลยุทธ์ของคุณจึงไม่มีโอกาสซื้อหุ้นที่ภายหลังกลายเป็นผู้แพ้ และจักรวาลหุ้นย้อนหลังยังคงมีชื่อที่พิสูจน์ในภายหลังว่าประสบความสำเร็จมากพอที่จะอยู่ต่อ
ผลเสียที่มักเกิดขึ้นคือผลตอบแทนเฉลี่ยสูงเกินจริง การขาดทุนลดลง และกลยุทธ์ดูเหมือนชอบปัจจัยพื้นฐานง่าย ๆ เช่น โมเมนตัมหรือคุณภาพ สัญญาณเหล่านั้นอาจเป็นของจริงก็ได้ แต่การทดสอบยังมอบข้อได้เปรียบเงียบ ๆ ให้ด้วย นั่นคือการรู้ว่าใครอยู่รอด
ใช้ข้อมูลสมาชิก ณ เวลานั้น ในการปรับพอร์ตแต่ละครั้ง ชุดหลักทรัพย์ที่มีสิทธิ์ควรประกอบด้วยหลักทรัพย์ที่ผ่านเกณฑ์โดยอิงจากข้อมูลที่มีอยู่ ณ เวลานั้น การเป็นสมาชิกต้องมีวันที่มีผล รวมถึงการเปลี่ยนแปลงระหว่างการทบทวนดัชนีตามกำหนด หากกลยุทธ์ซื้อขายในจักรวาลหุ้นที่กว้างกว่า
ข้อผิดพลาด 2: มองว่าสัญลักษณ์ที่หายไปคือข้อมูลที่หายไป
การข้ามทิกเกอร์ที่ไม่มีอยู่ในไฟล์ข้อมูลของผู้ให้บริการในปัจจุบันทำได้ง่าย ตัวโหลดข้อมูลไม่พบแถวข้อมูลล่าสุด จึงระบุว่าสัญลักษณ์นั้นล้าสมัยและตัดออก โค้ดอาจบันทึกคำเตือนไว้ แต่ Backtest ยังทำงานต่อด้วยข้อมูลที่ดูเรียบร้อยขึ้น โดยไม่มีบันทึกว่าตัดหลักทรัพย์ใดออกไป
หลักทรัพย์บางตัวหายไปเพราะการควบรวมหรือการเข้าซื้อกิจการ ส่วนบางตัวถูกเพิกถอนหลังประสบปัญหาทางการเงิน ล้มละลาย หรือไม่ผ่านเกณฑ์การจดทะเบียน ราคาปิดปกติครั้งสุดท้ายของหุ้นเหล่านั้นไม่จำเป็นต้องเท่ากับมูลค่าที่นักลงทุนได้รับ หากหุ้นที่ประสบปัญหาหยุดซื้อขายที่ราคา $0.40 แล้วถูกยกเลิกในภายหลัง การสมมติว่าสถานะลงทุนยังมีมูลค่า $0.40 อาจทำให้พอร์ตถือสินทรัพย์ไร้ค่าไปตลอด การตัดหุ้นนั้นออกไปอาจลบผลขาดทุนทิ้งทั้งหมด
เก็บข้อมูลหลักทรัพย์ที่มีวันเข้าจดทะเบียนและวันเพิกถอน รหัสเหตุผล และหลักทรัพย์ที่รับช่วงต่อหรือค่าตอบแทนเป็นเงินสดเมื่อเกี่ยวข้อง เหตุการณ์เพิกถอนควรปิดหรือแปลงสถานะลงทุนตามสิ่งที่ผู้ถือได้รับจริง รายละเอียดขึ้นอยู่กับเหตุการณ์และตราสารนั้น ๆ กฎ “ราคาสุดท้าย” แบบเดียวใช้แทนเหตุการณ์ทุกประเภทไม่ได้
| เหตุการณ์ | สิ่งที่สถานะลงทุนอาจเปลี่ยนเป็น | แนวทางจัดการใน Backtest ที่ควรตรวจสอบ |
|---|---|---|
| การเข้าซื้อกิจการด้วยเงินสด | เงินสดตามเงื่อนไขของดีล | บันทึกเงินที่ได้รับในวันที่มีผล |
| การควบรวมโดยแลกหุ้น | หุ้นในบริษัทที่รับช่วงต่อ | ใช้อัตราแลกเปลี่ยนหุ้นและดำเนินการต่อด้วยหลักทรัพย์ของบริษัทที่รับช่วงต่อ |
| การยกเลิกหุ้นหลังล้มละลาย | มูลค่าที่เรียกคืนได้มีน้อยหรือไม่มีเลย | จัดการสถานะลงทุนโดยอิงการจ่ายผลตอบแทนหรือบันทึกการยกเลิกที่เกี่ยวข้อง |
ข้อผิดพลาด 3: แก้จักรวาลหุ้น แต่ข้ามวิธีคำนวณผลตอบแทน
การเพิ่มหุ้นในดัชนีจากข้อมูลย้อนหลังแก้ได้เพียงปัญหาการคัดเลือก หากชุดผลตอบแทนของคุณหยุดที่ราคาปิดปกติครั้งสุดท้าย ก็อาจยังไม่รวมผลตอบแทนจากการเพิกถอน หากเพิ่มผลตอบแทนจากการเพิกถอน แต่คำนวณกับชุดราคาที่รวมเหตุการณ์สุดท้ายไว้แล้ว ก็อาจนับผลขาดทุนซ้ำ ธรรมเนียมของผู้ให้บริการข้อมูลแตกต่างกัน และชื่อฟิลด์เพียงอย่างเดียวอาจบอกไม่ได้ว่าไฟล์ใช้ธรรมเนียมแบบใด
สมมติว่าหุ้นตัวหนึ่งร่วงจาก $10 เหลือ $1 แล้วถูกเพิกถอนโดยมีรายงานผลตอบแทนสุดท้าย −80% หากคุณคำนวณผลขาดทุนจากราคา 90% ก่อน แล้วคูณด้วยผลตอบแทนจากการเพิกถอน −80% แยกต่างหาก จะได้ผลขาดทุนรวมที่ไม่น่าเป็นไปได้ถึง 98% ข้อผิดพลาดนี้เกิดจากการรวมค่าที่วัดส่วนซึ่งซ้อนทับกันของเส้นทางเดียวกัน
ก่อนคำนวณผลตอบแทนพอร์ต ให้บันทึกว่าผลตอบแทนปกติรวมเงินจ่ายและผลจากการเพิกถอนหรือไม่ รวมถึงวันที่ครอบคลุมในผลตอบแทนแต่ละค่า ตรวจสอบรายการการดำเนินการของบริษัทที่ทราบอยู่แล้วสักจำนวนหนึ่ง ไล่ตั้งแต่ข้อมูลดิบไปจนถึงมูลค่าพอร์ตสุดท้าย และรวมสถานะลงทุนที่ถือข้ามเหตุการณ์ด้วย กราฟระดับหลักทรัพย์อาจดูสมเหตุสมผล ทั้งที่บัญชีพอร์ตบันทึกเงินที่ได้รับผิดวัน
เมื่อสัญลักษณ์หายไป ให้ถือว่านั่นคือเหตุการณ์ที่ต้องอธิบาย อย่าสรุปว่าบริษัทหมดความสำคัญ เพียงเพราะไฟล์ข้อมูลหยุดรายงานบริษัทนั้น
จะตรวจสอบ Backtest ที่คำนึงถึงการเพิกถอนได้อย่างไร?
เริ่มจากจำนวนและความครอบคลุมของข้อมูลก่อนเปรียบเทียบค่า Sharpe ในแต่ละปี ให้รายงานว่ามีหลักทรัพย์ที่เข้าเกณฑ์กี่รายการ ถูกเพิกถอนกี่รายการ และถูกตัดออกเพราะข้อมูลที่ยังแก้ไขไม่ได้กี่รายการ จากนั้นสุ่มตรวจการออกจากตลาดหลายกรณีที่มีสาเหตุต่างกัน และติดตามแต่ละสถานะลงทุนจนถึงมูลค่าพอร์ตสุดท้าย
รันกลยุทธ์เดียวกันทั้งแบบรวมและไม่รวมหุ้นที่ถูกเพิกถอน แต่ให้ตีความส่วนต่างเป็นเครื่องมือตรวจสอบคุณภาพข้อมูล ไม่ใช่ค่าประมาณผลการดำเนินงานที่แก้ไขแล้วในตัวเอง กฎของจักรวาลหุ้น ธรรมเนียมการคำนวณผลตอบแทน และช่วงเวลาของเหตุการณ์ต้องสอดคล้องกับคำถามที่คุณต้องการตอบ ผลลัพธ์ที่เชื่อถือได้มาจากบัญชีที่อธิบายได้ว่าหลักทรัพย์ทุกรายการเข้ามาเมื่อไร ผ่านการดำเนินการของบริษัทใดบ้าง และทิ้งมูลค่าไว้เท่าไร
← บทความทั้งหมด


