แบ็กเทสต์ให้ผลตอบแทนต่อปี 20% โดยใช้ข้อมูล 8 ปี มีการซื้อขาย 1,640 ครั้ง และแบ่งชุดข้อมูลแบบ walk-forward อย่างเรียบร้อย จากนั้นเราแทนที่ข้อมูลย้อนหลังปัจจุบันของผู้ให้บริการด้วยค่าที่บันทึกไว้ ณ เวลานั้น แล้วผลตอบแทนส่วนเกินก็ลดลงเหลือ 3%
ตัวเลขที่น่าประหลาดใจไม่ใช่ผลตอบแทนเดิม แต่เป็น 17 จุดเปอร์เซ็นต์ที่ขึ้นอยู่กับข้อมูลซึ่งถูกแก้ไขย้อนหลัง การรู้ผลล่วงหน้าแบบนี้ซ่อนอยู่ได้ในประกาศข้อมูลเศรษฐกิจ ข้อมูลพื้นฐานของบริษัท รายชื่อสมาชิกดัชนี และแม้แต่ข้อมูลตลาดที่ดูเหมือนเรียบง่าย ข้อมูลย้อนหลังบอกสิ่งที่แหล่งข้อมูลระบุอยู่ในปัจจุบัน ส่วนชุดข้อมูล ณ เวลานั้นบอกสิ่งที่กลยุทธ์ของคุณจะรู้ได้ในตอนนั้น
ทำไมข้อมูลย้อนหลังจึงเปลี่ยนได้หลังเกิดเหตุการณ์?
ค่าบางอย่างเริ่มจากการประมาณการแล้วจึงแก้ไขภายหลัง สถิติเศรษฐกิจที่เผยแพร่วันศุกร์อาจถูกปรับปรุงในเดือนถัดไป บริษัทอาจปรับปรุงตัวเลขผลประกอบการย้อนหลัง ผู้ให้บริการข้อมูลอาจแก้ค่าที่รายงานผิด เติมช่วงเวลาที่ขาดหาย หรือแทนค่าประมาณการด้วยค่าขั้นสุดท้าย ฐานข้อมูลที่เก็บไว้เพียงค่าล่าสุดทำให้การเปลี่ยนแปลงทั้งหมดดูราวกับเป็นความจริงมาตลอด
เรื่องนี้สำคัญเมื่อกลยุทธ์จัดอันดับบริษัทตามรายได้ที่รายงาน หรือซื้อขายในตลาดหลังการเผยแพร่ข้อมูลตามกำหนด หากกลยุทธ์เห็นตัวเลขที่แก้ไขแล้วล่วงหน้าหลายเดือน แบ็กเทสต์ก็ให้ข้อมูลที่ยังไม่มีในตลาด ณ เวลาตัดสินใจ การคำนวณสัญญาณอาจไม่มีข้อผิดพลาด แต่ข้อมูลนำเข้าก็ยังมาจากประวัติคนละฉบับ
มีจุดที่พลาดกันง่ายอยู่ตรงนี้: ชื่อฟิลด์อย่าง date มักหมายถึงช่วงเวลาที่ค่าครอบคลุม ไม่ใช่เวลาที่ข้อมูลพร้อมใช้งาน แถวรายได้รายไตรมาสที่ระบุวันที่ 31 มีนาคม อาจเพิ่งเผยแพร่ในเดือนพฤษภาคม ป้ายวันที่หมายถึงช่วงเวลาของธุรกิจ ไม่ใช่ชุดข้อมูลที่กลยุทธ์ใช้ตัดสินใจได้
แบ็กเทสต์ควรใช้การประทับเวลาใด?
ติดตามช่วงเวลาที่ค่ามีผลและเวลาที่ข้อมูลพร้อมใช้งานแยกจากกัน หากทำได้ ให้เก็บเวลาเผยแพร่และเวลาที่ระบบรับข้อมูลไว้ด้วย กลยุทธ์จะใช้ค่าได้หลังจากเผยแพร่และระบบได้รับข้อมูลแล้วเท่านั้น หากเวลาเหล่านี้ต่างกัน ให้ใช้เวลาที่ช้ากว่าเพื่อจำลองย้อนหลังอย่างระมัดระวัง
| การประทับเวลา | อธิบายถึงอะไร | มีประโยชน์อย่างไร |
|---|---|---|
| เวลาที่มีผล | ช่วงเวลาหรือเหตุการณ์ที่ค่าอ้างถึง | จัดกลุ่มข้อมูลตามสิ่งที่วัด |
| เวลาเผยแพร่ | เวลาที่แหล่งข้อมูลเผยแพร่ข้อมูลฉบับนี้ | ป้องกันไม่ให้ข้อมูลที่เผยแพร่ปรากฏก่อนมีอยู่จริง |
| เวลาที่ระบบรับข้อมูล | เวลาที่ระบบของคุณได้รับข้อมูลฉบับนี้ | บันทึกความล่าช้าในการส่งมอบและการเติมข้อมูลย้อนหลัง |
ตัวอย่างเช่น สมมติว่ายอดขายรายไตรมาสของบริษัทครอบคลุมช่วงมกราคมถึงมีนาคม มีการรายงานวันที่ 8 พฤษภาคม เวลา 16:15 ตามเวลาฝั่งตะวันออก และเข้าถึงคลังข้อมูลวิจัยของคุณเวลา 16:17 กลยุทธ์ที่ตัดสินใจตอนปิดตลาดวันที่ 8 พฤษภาคมใช้รายงานนี้ไม่ได้ หากตัดสินใจตอนปิดตลาดเวลา 16:00 แต่กลยุทธ์ที่ตัดสินใจเช้าวันถัดไปใช้ได้ วันที่สิ้นไตรมาสเพียงอย่างเดียวตอบคำถามทั้งสองข้อนี้ไม่ได้
จะทดสอบได้อย่างไรว่าการแก้ไขข้อมูลกำลังขับเคลื่อนผลลัพธ์?
รันกลยุทธ์เดียวกัน 2 ครั้ง: ครั้งหนึ่งใช้ข้อมูลฉบับที่พร้อมใช้งาน ณ เวลาตัดสินใจแต่ละครั้งในอดีต และอีกครั้งใช้ข้อมูลย้อนหลังฉบับล่าสุด คงสมมติฐานการส่งคำสั่งซื้อขาย จักรวาลการลงทุน และโค้ดไว้เหมือนเดิม ผลต่างที่ได้คือผลการวัดความอ่อนไหวต่อการแก้ไขข้อมูล ไม่ใช่การเปรียบเทียบกลยุทธ์ใหม่
จากนั้นตรวจสอบว่าช่องว่างเกิดจากจุดใด ผลการดำเนินงานเปลี่ยนไปในวันเผยแพร่ข้อมูลหรือไม่? ความแตกต่างที่มากที่สุดกระจุกอยู่ในบริษัทไม่กี่แห่งที่ปรับปรุงงบย้อนหลัง หรือในข้อมูลไม่กี่รายการที่ถูกแก้ไขหรือไม่? กลยุทธ์ซื้อขายก่อนเวลาที่เกี่ยวข้องจะเผยแพร่ข้อมูลหรือไม่? การตรวจสอบเหตุการณ์เป็นรายกรณีมักอธิบายผลได้มากกว่าการดูกราฟผลตอบแทนสะสมอีกภาพหนึ่ง
ตัวเลขเหล่านี้เป็นเพียงตัวอย่าง ไม่ใช่บทลงโทษที่ใช้ได้กับทุกกรณี ผลลัพธ์ที่มีประโยชน์คือผลเปรียบเทียบแบบจับคู่สำหรับกลยุทธ์ของคุณเอง โดยคงรายการซื้อขายและต้นทุนให้เหมือนกันเท่าที่ทำได้ หากผลจากข้อมูลฉบับแก้ไขดีกว่ามาก ให้ตรวจสอบว่าฟิลด์และวันที่ใดเป็นต้นเหตุของความแตกต่างก่อนเชื่อผลแบ็กเทสต์ที่พาดหัวไว้
การตรวจสอบข้อมูล ณ เวลานั้นควรบันทึกอะไรบ้าง?
เริ่มจากฟิลด์ที่กลยุทธ์ของคุณใช้จริง สำหรับแต่ละฟิลด์ ให้ระบุแหล่งข้อมูล ความหมายของการประทับเวลา นโยบายการแก้ไข และเรียกดูข้อมูลฉบับก่อนหน้าได้หรือไม่ ถามผู้ให้บริการว่าบันทึกการแก้ไขอย่างไร: เขียนทับแถวเดิม เพิ่มแถวสำหรับข้อมูลฉบับใหม่ หรือแยกไว้ในบันทึกการตรวจสอบ คำว่า “ข้อมูลย้อนหลัง” บนหน้าผลิตภัณฑ์ยังตอบเรื่องนี้ไม่ได้
- จัดเก็บข้อมูลแต่ละฉบับพร้อมเวลาเผยแพร่หรือเวลาแรกที่พร้อมใช้งาน
- เชื่อมฟีเจอร์กับเวลาตัดสินใจโดยใช้เวลาที่ข้อมูลพร้อมใช้งาน ไม่ใช่ป้ายช่วงเวลา
- เก็บสแนปช็อตที่ตรึงไว้หรือฉบับข้อมูลต้นทาง เพื่อให้รันซ้ำได้
- ทำเครื่องหมายค่าที่มาถึงล่าช้า ถูกแก้ไข หรือไม่มีประวัติที่เชื่อถือได้
และกำหนดขอบเขตให้เหมาะกับการใช้งาน หากกลยุทธ์ของคุณใช้เฉพาะรายการซื้อขายและแท่งราคาจากตลาด การแก้ไขข้อมูลเศรษฐกิจอาจไม่เกี่ยวข้อง แต่การแก้ไขแท่งราคาและการเติมข้อมูลย้อนหลังจากผู้ให้บริการก็ยังสำคัญได้ โดยเฉพาะเมื่อสัญญาณอาศัยตลาดที่สภาพคล่องต่ำหรือกรอบเวลาเหตุการณ์ที่แม่นยำ
เมื่อไม่มีข้อมูลย้อนหลัง ณ เวลานั้น
อย่าถือเอาอย่างเงียบ ๆ ว่าค่าของวันนี้คือค่าของเมื่อวาน ระบุฟิลด์นี้ว่าเป็นข้อจำกัด ตัดออกจากข้อสรุปที่ขึ้นอยู่กับความพร้อมใช้งานในอดีต หรือกำหนดเวลาหน่วงแบบระมัดระวังแล้วแสดงว่าผลลัพธ์เปลี่ยนไปมากแค่ไหน ค่าตัวแทนที่หน่วงเวลาอาจเป็นประโยชน์ต่อการวิจัย หากระบุเวลาหน่วงอย่างชัดเจนและแนบข้อจำกัดไปกับผลลัพธ์
หน้าที่ของแบ็กเทสต์คือจำลองการตัดสินใจโดยใช้ชุดข้อมูลที่มีอยู่ในเวลานั้น หากข้อมูลของคุณแสดงได้เพียงฉบับล่าสุด ผลลัพธ์ที่ซื่อตรงย่อมมีขอบเขต: ใช้ทดสอบกลยุทธ์กับประวัติที่สร้างขึ้นใหม่จากข้อมูลปัจจุบันได้ แต่ยืนยันไม่ได้อย่างแน่ชัดว่าผู้ปฏิบัติงานในอดีตจะเห็นอะไรได้บ้าง
← บทความทั้งหมด

