22 สิงหาคม 2026 · งานวิจัย

ทำไมคำสั่งที่ยังเปิดอยู่ใน Backtest จึงต้องมีนาฬิกา

ทำไมคำสั่งที่ยังเปิดอยู่ใน Backtest จึงต้องมีนาฬิกา

กลยุทธ์ส่งคำสั่ง limit ตอน 10:00 สัญญาณเปลี่ยนตอน 10:03 Backtest แทนที่คำสั่งนั้นอย่างเงียบ ๆ ตอน 10:04 แล้วนับว่าคำสั่งถูกจับคู่ตอน 10:05 แต่ในการ paper trading คำสั่งเดิมอาจยังค้างอยู่ที่ตลาด หากคำสั่งนั้นถูกจับคู่ขณะที่คำสั่งใหม่ก็ยังทำงานอยู่ กลยุทธ์ก็จะมีคำสั่ง 2 รายการ แต่แบบจำลองสถานะกลับทำเหมือนว่ามีเพียงรายการเดียว

คำสั่งที่ยังเปิดอยู่ต้องมีสถานะและนาฬิกาของตัวเอง Backtest ควรรู้ว่าคำสั่งแต่ละรายการถูกส่งเมื่อใด ยกเลิกได้เมื่อใด คำขอยกเลิกไปถึงตลาดหรือไม่ และจะเกิดอะไรขึ้นหากการจับคู่คำสั่งเกิดขึ้นพร้อมกับการยกเลิก ทางลัด 3 อย่างมักทำให้ข้อเท็จจริงเหล่านี้หายไป

ข้อผิดพลาดที่ 1: คิดว่าสัญญาณใหม่ยกเลิกคำสั่งได้ทันที

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

ลองพิจารณาคำสั่งซื้อ limit จำนวน 100 หุ้นที่ราคา $50.00 ตอน 10:03 สัญญาณอ่อนลง กลยุทธ์จึงส่งคำขอยกเลิก ตอน 10:03:00.080 คำสั่งถูกจับคู่ไป 60 หุ้น และตลาดยืนยันการยกเลิกตอน 10:03:00.110 อีก 40 หุ้นที่เหลือถูกยกเลิก แต่สถานะตอนนี้มี 60 หุ้นแล้ว Backtest ที่อิงแท่งราคาและลบคำสั่งตอน 10:03 อาจรายงานว่าไม่มีหุ้นเลย ส่วนแบบจำลองที่ถือว่ายกเลิกทันที แต่ยังบันทึกการจับคู่ในภายหลัง ก็สร้างความเสี่ยงจำลองขึ้นมาในทิศทางตรงกันข้าม

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

ข้อผิดพลาดที่ 2: ปล่อยให้คำสั่งที่ค้างอยู่มีอายุไม่จำกัด

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

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

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

ข้อผิดพลาดที่ 3: นับว่าราคาสัมผัสระดับคำสั่งแล้วจับคู่ทุกครั้ง

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

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

การตรวจสอบที่ทำได้จริง: บันทึกเวลาสร้างคำสั่ง ช่วงเวลาที่คำสั่งทำงาน คำขอยกเลิกและการยืนยัน เวลาที่จับคู่ ปริมาณที่จับคู่ และปริมาณคงเหลือ จากนั้นลองเล่นธุรกรรมบางรายการย้อนหลังในช่วงที่สัญญาณกลับทิศ หากอธิบายไม่ได้ว่าทำไมคำสั่งแต่ละรายการยังทำงานอยู่ตอนที่ถูกจับคู่ ก็ต้องปรับปรุงการนับการจับคู่ใน Backtest

จำลองคำสั่งที่ตั้งใจจะใช้ใน paper trading

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

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

การจัดการคำสั่งbacktestingการส่งคำสั่งpaper trading
แชร์XLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← บทความทั้งหมด