เอเจนต์กลยุทธ์ AI อาจสร้างแบ็กเทสต์ที่ถูกต้องได้ ทั้งที่ใช้ข้อมูลซึ่งยังไม่มีอยู่ในเวลาที่ควรเกิดการซื้อขาย โค้ดทำงานได้ กราฟผลตอบแทนสะสมดูสมเหตุสมผล และสัญญาณก็อาจฟังขึ้นด้วย แต่ตราประทับเวลา การเชื่อมข้อมูล หรือฟิลด์ข้อมูลที่มีการปรับแก้ อาจแอบบอกคำตอบของวันพรุ่งนี้ให้มัน
วิธีแก้คือกำหนดให้เวลาที่ข้อมูลพร้อมใช้งานเป็นส่วนหนึ่งของข้อตกลงในการวิจัย อินพุตทุกตัวต้องตอบคำถามให้ชัด 2 ข้อ: ค่านี้อธิบายช่วงเวลาใด และกลยุทธ์จะรู้ค่านี้ได้เร็วที่สุดเมื่อไร
อคติมองอนาคตในกลยุทธ์ที่ AI สร้างขึ้นมีหน้าตาอย่างไร
กรณีที่เห็นชัดคือคำนวณสัญญาณจากราคาปิดของแท่งเดียวกัน แล้วส่งคำสั่งให้จับคู่ที่ราคาปิดนั้น หากกลยุทธ์ต้องใช้ราคาปิดเพื่อตัดสินใจ ก็ไม่อาจซื้อขายที่ราคาเดียวกันนั้นได้ แต่เอเจนต์มักสร้างกรณีที่แนบเนียนกว่านี้ระหว่างเชื่อมแหล่งข้อมูลหรือเลือกค่าเริ่มต้นที่สะดวก
สมมติว่าโมเดลคำนวณค่าเฉลี่ยเคลื่อนที่ 20 แท่งเมื่อปิดแต่ละนาที และเปิดสถานะเมื่อราคาปิดตัดผ่านค่าเฉลี่ย หากแบ็กเทสต์จับคู่คำสั่งที่ราคาปิดเดียวกัน ก็เท่ากับใช้ราคาซื้อขายสุดท้ายของแท่งก่อนที่กลยุทธ์จะได้รับรู้อย่างเป็นจริง การเลื่อนคำสั่งไปจับคู่ที่ราคาเปิดของแท่งถัดไปอาจเป็นการประมาณที่สมเหตุสมผล แต่คำสั่งตลาดก็ยังต้องคำนึงถึงค่าธรรมเนียมและผลกระทบต่อราคา
คราวนี้เปลี่ยนฟีเจอร์เป็นข้อมูลพื้นฐานรายวันของหุ้น หรือข้อมูลสถานะดอกเบี้ยคงค้างของคริปโต แถวข้อมูลอาจระบุวันที่เป็นวันจันทร์ แต่ค่าดังกล่าวอาจเผยแพร่หลังตลาดปิดวันจันทร์ หรือถูกแก้ไขในภายหลัง วันที่ไม่ใช่ตราประทับเวลาที่บอกว่าข้อมูลพร้อมใช้
ควรประทับเวลาให้ข้อมูลอินพุตของกลยุทธ์อย่างไร
เก็บเวลาไว้อย่างน้อย 3 แบบ หากแหล่งข้อมูลมีให้ ได้แก่ ช่วงเวลาที่ค่านั้นใช้อธิบาย เวลาที่ผู้เผยแพร่ปล่อยข้อมูล และเวลาที่ระบบของเราได้รับข้อมูล ชุดข้อมูลที่กลยุทธ์ใช้ตัดสินใจต้องมีได้เฉพาะค่าที่พร้อมใช้งานแล้ว ณ เวลานั้น
| ฟิลด์ | ใช้ตอบคำถาม | ข้อผิดพลาดที่พบบ่อย |
|---|---|---|
| เวลาเกิดเหตุการณ์ | เหตุการณ์ในตลาดเกิดขึ้นเมื่อไร | ใช้ราคาปิดแท่งก่อนแท่งจะสมบูรณ์ |
| เวลาเผยแพร่ | แหล่งข้อมูลเผยแพร่ค่านี้เมื่อไร | เข้าใจป้ายระบุสิ้นวันว่าเป็นเวลาเผยแพร่ตอนเปิดตลาด |
| เวลานำเข้าระบบ | ระบบวิจัยจะนำข้อมูลนี้ไปใช้ได้เมื่อไร | มองข้ามความล่าช้าจากผู้ให้บริการหรือไปป์ไลน์ |
| เวลาแก้ไข | มีการบันทึกหรือแก้ไขข้อมูลเวอร์ชันนี้เมื่อไร | เติมข้อมูลย้อนหลังที่แก้ไขแล้วเสมือนเป็นข้อมูลต้นฉบับ |
สำหรับกลยุทธ์ 1 นาที ความล่าช้า 1 วินาทีไม่ได้ไร้ผลกระทบเสมอไป ขึ้นอยู่กับว่าตัดสินใจเมื่อไรและสัญญาณใช้ข้อมูลอะไร หากอินพุตเป็นสถิติรายชั่วโมงที่คำนวณเสร็จแล้ว ก็อาจแทบไม่สำคัญ แต่หากเป็นความไม่สมดุลของสมุดคำสั่งที่สุ่มวัดใกล้เวลาส่งคำสั่ง ก็อาจทำให้ต้องกลับฝั่งการซื้อขายได้
คลังข้อมูลแบบ point-in-time ป้องกันข้อมูลรั่วไหลได้ไหม
ช่วยได้ หากคำว่า “point-in-time” หมายถึงการดึงค่าที่ทราบ ณ เวลาตัดสินใจในอดีตได้ โดยรวมถึงเวอร์ชันที่มีผลอยู่ในเวลานั้นด้วย ตารางที่มีเพียงวันที่ในอดีตยังอาจมีค่าที่แก้ไขแล้วในวันนี้สำหรับวันเหล่านั้น
เก็บช่วงเวลาที่ข้อมูลมีผลและตราประทับเวลาที่ข้อมูลพร้อมใช้งานไว้กับแต่ละระเบียน และเก็บเวอร์ชันที่แก้ไขไว้แทนการเขียนทับ จากนั้นระบุเงื่อนไขการค้นย้อนหลังให้ชัดเจน: คืนค่าเวอร์ชันล่าสุดที่พร้อมใช้งาน ณ เวลาตัดสินใจจำลอง วิธีนี้สำคัญเป็นพิเศษกับข้อมูลพื้นฐาน การเป็นสมาชิกดัชนี ข้อมูลเศรษฐกิจที่เผยแพร่ และชุดข้อมูลที่ผู้ให้บริการปรับแก้แล้ว
มีปัญหาด้านปฏิบัติการที่ไม่หวือหวาอยู่ข้อหนึ่ง: ต่อให้มีเวลาการเผยแพร่ที่แม่นยำ ก็ไม่มีประโยชน์หากงานนำเข้าข้อมูลทำงานช้าไป 20 นาที หากคลังข้อมูลย้อนหลังไม่ได้บันทึกเวลานำเข้า ให้ใช้ค่าหน่วงเวลาแบบเผื่อไว้และระบุให้ชัดเจน ความแม่นยำที่แหล่งข้อมูลไม่เคยบันทึกไว้ก็เป็นเพียงของประดับ
การตรวจสอบอะไรช่วยจับอคติมองอนาคตก่อนเทรดจำลอง
ขอให้เอเจนต์วิจัยสร้างลำดับเวลาของฟีเจอร์และคำสั่งควบคู่กับแบ็กเทสต์ ในการตัดสินใจแต่ละครั้ง ให้บันทึกเวลาที่ข้อมูลต้นทางของแต่ละฟีเจอร์พร้อมใช้งานล่าสุด เวลาตัดสินใจ เวลาส่งคำสั่ง และเวลาจับคู่ที่จำลองไว้ ปฏิเสธทุกแถวที่อินพุตมาถึงหลังเวลาตัดสินใจ
- เลื่อนสัญญาณไปข้างหน้า 1 แท่งแล้วเปรียบเทียบผลลัพธ์ หากผลทรุดลงมาก อาจเผยให้เห็นว่าผลลัพธ์พึ่งพาจังหวะราคาปิดถึงราคาปิด แต่การตรวจนี้เป็นเพียงเครื่องมือวินิจฉัย ไม่ใช่ข้อพิสูจน์ว่ามีข้อมูลรั่วไหล
- ตัดข้อมูลต้นทางทุกชุดให้สิ้นสุด ณ จุดตัดย้อนหลัง แล้วรันไปป์ไลน์อีกครั้ง จากนั้นเปรียบเทียบฟีเจอร์ที่ได้กับฟีเจอร์ย้อนหลังที่จัดเก็บไว้
- แทนฟีเจอร์ที่สงสัยด้วยค่าคงที่ หากผลการดำเนินงานแทบไม่เปลี่ยน ให้ตรวจว่าโค้ดได้ใช้ชุดข้อมูลที่ตั้งใจไว้จริงหรือไม่
- ป้อนฟีเจอร์อนาคตที่เป็นไปไม่ได้เข้าไปในไปป์ไลน์โดยตั้งใจ การตรวจสอบความถูกต้องควรแจ้งข้อผิดพลาดอย่างชัดเจนเมื่อเวลาที่ข้อมูลพร้อมใช้งานอยู่หลังเวลาตัดสินใจ
การตรวจเหล่านี้ไม่ได้รับรองว่ากลยุทธ์จะใช้ได้ แต่ช่วยให้เห็นสมมติฐานเรื่องจังหวะเวลาที่เจาะจง และจับวิธีทั่วไปที่ทำให้สมมติฐานเหล่านั้นถูกละเมิด
การเทรดจำลองพิสูจน์ได้ไหมว่าแบ็กเทสต์ไม่มีข้อมูลรั่วไหล
ไม่ได้ การเทรดจำลองอาจเผยให้เห็นว่าเส้นทางข้อมูลจริงมาช้า ขาดหาย หรือจัดแนวไม่ตรงกับข้อมูลย้อนหลัง แต่ไม่อาจยืนยันได้ว่าฟีเจอร์ฝึกโมเดลในอดีตสะท้อนสิ่งที่รู้ได้ในเวลานั้น โมเดลอาจเลิกได้ประโยชน์จากข้อมูลรั่วไหลด้วย เพียงเพราะอนาคตที่มันเคยเห็นโดยบังเอิญกลายเป็นปัจจุบันแล้ว
ใช้การเทรดจำลองเพื่อตรวจสอบความสอดคล้อง: เปรียบเทียบค่าฟีเจอร์จริง ตราประทับเวลาการตัดสินใจ การสร้างคำสั่ง และราคาจับคู่จำลอง กับนิยามที่ใช้ในแบ็กเทสต์ เมื่อพบความต่าง ให้ไล่ตรวจอินพุตและนาฬิกาที่ใช้โดยตรง ทีมเอเจนต์ที่อธิบายชุดข้อมูลที่ใช้ประกอบการตัดสินใจแต่ละครั้งได้ กำลังทำงานวิจัยที่มีประโยชน์ ส่วนทีมที่แสดงได้เพียงกราฟเรียบสวยนั้น ข้ามการตรวจสอบส่วนที่ยากที่สุดไปแล้ว
← บทความทั้งหมด


