27 กันยายน 2026 · วิจัย

แบ็กเทสต์ผ่าน แต่กลยุทธ์ Paper พลาดคำสั่งซื้อไป 37%

แบ็กเทสต์ผ่าน แต่กลยุทธ์ Paper พลาดคำสั่งซื้อไป 37%

แบ็กเทสต์ของเรานับว่าจับคู่ได้ 91 รายการจากคำสั่งซื้อ 100 รายการที่ส่งไป แต่เมื่อนำกลยุทธ์เดียวกันมารันแบบ Paper กลับจับคู่ได้ 63 รายการ เวลามัธยฐานตั้งแต่เกิดสัญญาณจนได้รับการยืนยันคำสั่งซื้อคือ 84 มิลลิวินาที และในบรรดาคำสั่งซื้อแบบ limit ที่ Paper พลาดไป 12 รายการนั้น แบ็กเทสต์สมมติว่าจับคู่ได้ทันทีที่ราคาแตะระดับที่ตั้งไว้

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

ความสอดคล้องของคำสั่งซื้อระหว่างแบ็กเทสต์กับ Paper หมายถึงอะไร?

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

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

รายการเปรียบเทียบสิ่งที่ตรวจพบตัวอย่าง
เวลาตัดสินใจและฝั่งข้อมูลนำเข้าหรือตารางเวลาที่ต่างกันสัญญาณ Paper เกิดช้ากว่า 1 แท่ง
ขนาดและราคาที่ต้องการการปัดเศษ กฎความเสี่ยง หรือกฎของแพลตฟอร์มแบ็กเทสต์ส่ง 0.013 BTC แต่ Paper ปัดเป็น 0.01
การเปลี่ยนสถานะคำสั่งซื้อช่องว่างในขั้นตอนส่ง ปฏิเสธ และยกเลิกแบ็กเทสต์ถือว่าคำขอยกเลิกเสร็จสมบูรณ์แล้ว
ปริมาณและราคาที่จับคู่แบบจำลองการจับคู่ที่มองโลกในแง่ดีเกินไป หรือการเคลื่อนไหวของตลาดราคาแตะระดับ limit แล้วได้จับคู่เต็มจำนวนในแบ็กเทสต์ แต่ไม่มีการจับคู่ใน Paper

ทำไมคำสั่งซื้อแบบ limit ที่ราคาแตะระดับไว้จึงทำให้พลาดไปมากขนาดนั้น?

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

บันทึก Paper เผยให้เห็นปัญหาเรื่องจังหวะเวลา กลยุทธ์คำนวณสัญญาณเมื่อ 12:03:00.000 แต่เหตุการณ์ข้อมูลตลาดไปถึงกระบวนการส่งคำสั่งช้ากว่า 31 มิลลิวินาที การตรวจสอบความเสี่ยงใช้เวลาเพิ่มอีก 22 มิลลิวินาที และระบบจำลองของแพลตฟอร์มยืนยันคำสั่งอีก 31 มิลลิวินาทีให้หลัง เมื่อราคาเคลื่อนไหวเร็ว แท่งข้อมูลย้อนหลังอาจทำให้ดูเหมือนราคายังเอื้อมถึง ทั้งที่คำสั่ง limit ไปถึงหลังจากตลาดผ่านราคานั้นไปแล้ว

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

จะวัดช่องว่างนี้อย่างไรโดยไม่หลอกตัวเอง?

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

  1. เชื่อมเหตุการณ์ด้วย ID การตัดสินใจหรือ ID คำสั่งซื้อของลูกค้า อย่าเดาจากเวลาที่บันทึกไว้ภายหลัง
  2. เปรียบเทียบการตัดสินใจก่อน: เวลาสัญญาณ ฝั่ง ปริมาณที่ต้องการ ประเภทคำสั่ง และราคา limit
  3. สำหรับการตัดสินใจที่ตรงกัน ให้เปรียบเทียบเวลารอการยืนยัน การปฏิเสธ ระยะเวลาที่เปิดคำสั่ง เวลาในการยกเลิก ปริมาณที่จับคู่ และราคาจับคู่ถัวเฉลี่ยถ่วงน้ำหนักตามปริมาณ
  4. รายงานอัตราแยกตามประเภทคำสั่งและสภาวะตลาด อัตราการจับคู่โดยรวม 63% อาจซ่อนตัวเลข 90% สำหรับคำสั่ง market และ 35% สำหรับคำสั่ง limit แบบตั้งรอ

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

91%อัตราการจับคู่คำสั่งซื้อในแบ็กเทสต์
63%อัตราการจับคู่คำสั่งซื้อใน Paper
28 ppส่วนต่างที่ควรตรวจสอบ

ควรปรับอะไรในแบ็กเทสต์?

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

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

แบบจำลองการจับคู่คือข้ออ้างว่าคำสั่งซื้อของคุณอาจทำอะไรได้บ้าง กำหนดกฎที่อธิบายได้ แล้วตรวจสอบกฎนั้นกับบันทึก Paper

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

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

paper tradingการจัดการคำสั่งซื้อแบ็กเทสต์การส่งคำสั่งระบบเทรด
แชร์XLinkedInFacebookRedditHacker NewsWhatsAppTelegramEmail
← บทความทั้งหมด