เวลา 10:14 UTC กลยุทธ์ทะลุกรอบแบบเรียบง่ายเข้าซื้อสัญญา perpetual ของคริปโท หลังราคาทะลุจุดสูงสุดในรอบ 20 นาที แบ็กเทสต์แสดงว่าคำสั่งได้ราคาที่ $64,210 ตัวเลขนี้มีอยู่ในข้อมูล สัญญาณประทับเวลาไว้อย่างถูกต้อง และคำสั่งจำลองมาถึงในแท่งถัดไป เราเกือบสรุปว่านี่เป็นผลลัพธ์ที่สะอาดแล้ว
จากนั้นเราก็จับคู่รหัสตราสาร สัญญาณมาจาก perpetual BTCUSDT ส่วนราคาที่ได้มาจากสัญญา BTCUSD แบบ inverse ทั้งคู่ซื้อขายใกล้ $64,210 และทั้งคู่เป็นตลาดที่มีสภาพคล่อง แต่ก็ยังเป็นสมุดคำสั่งคนละชุด มีราคา ขนาด tick ความลึกของตลาด และตารางค่าธรรมเนียมต่างกัน แบ็กเทสต์นำข้อมูลมาต่อกันจนกลายเป็นตลาดที่เทรดเดอร์คนไหนก็เข้าไปซื้อขายไม่ได้
กลยุทธ์เองก็ไม่มีอะไรซับซ้อน: เข้าซื้อเมื่อราคาปิดสูงกว่าจุดสูงสุดย้อนหลัง ออกเมื่อราคาปิดต่ำกว่าจุดต่ำสุดย้อนหลัง และกำหนดขนาดแต่ละสถานะตามความเสี่ยงเป็นดอลลาร์ที่คงที่ ปัญหาเพิ่งปรากฏเมื่อเราตั้งคำถามให้เฉพาะเจาะจงกว่า “BTC มีราคาเท่าไร?” เราถามว่า “คำสั่งนี้จะซื้ออะไรได้บ้างในสัญญานี้ ณ เวลานั้น?”
ก่อนกลยุทธ์เริ่มทำงาน กราฟก็เป็นข้อมูลผสมไปแล้ว
ฟีดข้อมูลวิจัยของเราทำให้เปรียบเทียบแพลตฟอร์มซื้อขายได้ง่าย โดยปรับสัญลักษณ์ให้เป็นมาตรฐานเดียวกันและแสดงชุดราคาที่รวมข้อมูลจากหลายแหล่ง ซึ่งสะดวกสำหรับดูภาพรวมตลาด แต่ไม่เหมาะใช้เป็นราคาอ้างอิงในการส่งคำสั่งซื้อขาย ราคาผสมอาจแสดงราคาที่ดีที่สุดจากหลายตลาด ทั้งที่กลยุทธ์ส่งคำสั่งได้เพียงแพลตฟอร์มเดียว
ตอนที่ราคาเบรก แท่งราคาที่รวมข้อมูลมีจุดสูงสุดที่ $64,205 แต่ราคาซื้อขายล่าสุดของสัญญาที่เลือกขยับไปที่ $64,218 แล้ว ขณะเดียวกัน ราคาเสนอขายจากแคชของสัญญา inverse ยังคงแสดงที่ $64,210 ตัวจำลองใช้สัญญาณเบรกจากชุดข้อมูลหนึ่ง แล้วใช้ราคาเสนอขายที่ดูดีจากอีกชุดหนึ่ง ตัวเลขแต่ละตัวเป็นราคาจริง แต่เมื่อนำมารวมกันกลับเป็นเรื่องสมมติ
| ข้อมูลนำเข้า | สิ่งที่แบ็กเทสต์ใช้ | สิ่งที่คำสั่งต้องใช้ |
|---|---|---|
| จุดสูงสุดที่ใช้เป็นสัญญาณเบรก | ราคา BTC ที่รวมจากหลายแหล่ง | ประวัติราคาของสัญญาที่เลือก |
| ราคาอ้างอิงตอนเข้า | ราคาเสนอขายของสัญญา inverse จากแคช | ราคาเสนอขายล่าสุดของตราสารที่ซื้อขาย |
| ปริมาณที่ได้ | ขนาดสถานะที่ต้องการ | ปริมาณที่มีในแต่ละระดับราคา |
แถวหนึ่งในตารางข้อมูลตลาดอาจดูครบถ้วน ทั้งที่แต่ละฟิลด์บรรยายตลาดคนละแห่ง การใช้นามแฝงของสัญลักษณ์ไม่ได้ยืนยันว่าตราสารสองตัวใช้สมุดคำสั่งชุดเดียวกัน รหัสสัญญา แพลตฟอร์มซื้อขาย สกุลเงินเสนอราคา และเวลาประทับต้องเดินทางไปด้วยกันตลอดกระบวนการสร้างสัญญาณและส่งคำสั่ง
เราจำลองการส่งคำสั่งกับสมุดคำสั่งซื้อขายอีกครั้ง
เรารันคำสั่งเข้าใหม่โดยใช้ราคาเสนอขายที่ดีที่สุดของ perpetual ที่เลือก พร้อมข้อมูลอัปเดตสมุดคำสั่งซื้อขายที่มีอยู่ ณ เวลาตัดสินใจ ราคาเสนอยังใหม่ แต่ที่ระดับราคาบนสุดมีเพียง 0.18 BTC คำสั่งจำลองของเรามีขนาด 0.50 BTC ส่วนที่เหลือ 0.32 BTC จะต้องไล่ซื้อที่ราคาเสนอขายที่สูงขึ้น
ราคาเข้าเมื่อปรับแล้วสูงกว่าราคาที่แสดง $21 ต่อ BTC โดยยังไม่รวมค่าธรรมเนียม ส่วนต่างนี้น้อยสำหรับการซื้อขายครั้งเดียว แต่ตลอดช่วงทดสอบ กลยุทธ์ทำกำไรขั้นต้นส่วนใหญ่จากการเบรกกรอบเร็ว ๆ เพียงไม่กี่ครั้ง เมื่อนำคำสั่งเข้าเหล่านั้นมาจำลองกับสมุดคำสั่งที่ถูกต้อง ผลตอบแทนขั้นต้นลดลง 31%; ค่าธรรมเนียม taker และผลกระทบต่อราคาทำให้ลดลงไปอีก
เรายังพบ 2 กรณีที่ราคาเสนอซื้อขายระดับบนสุดมาถึงหลังเวลาตัดสินใจของสัญญาณ แบ็กเทสต์ที่จับคู่ด้วยเวลาประทับที่ใกล้ที่สุดอาจเลือกข้อมูลอัปเดตจากอนาคตอย่างเงียบ ๆ ตอนนี้เราจึงจับคู่โดยไล่ย้อนกลับ: ต้องสังเกตราคาเสนอซื้อขายก่อนเวลาส่งคำสั่ง และเราบันทึกอายุของข้อมูลไว้ หากราคาเสนอซื้อขายล่าสุดที่ใช้ได้เก่าเกินไป ตัวจำลองจะระบุว่าคำสั่งจับคู่ไม่ได้ หรือใช้กฎจัดการข้อมูลเก่าที่กำหนดไว้อย่างชัดเจน
ราคาที่ซื้อขายได้จริงต้องมีอะไรบ้าง
ราคาปิดของแท่งมีประโยชน์สำหรับคำนวณสัญญาณ แต่ไม่ได้ยืนยันว่าคำสั่งใดคำสั่งหนึ่งจะจับคู่ได้ที่ราคานั้น ราคาที่ใช้ได้ต้องเป็นของตราสารและแพลตฟอร์มซื้อขายเดียวกัน ต้องมีให้เห็น ณ เวลาที่คำสั่งไปถึง และต้องมีปริมาณฝั่งตรงข้ามเพียงพอกับขนาดคำสั่งที่ต้องการ หากข้อมูลตอบคำถามเหล่านี้ไม่ได้ ผลลัพธ์ที่ตรงไปตรงมาคือช่วงราคา หรือระบุว่าไม่มีการจับคู่ ไม่ใช่ราคาที่แน่นอนซึ่งแต่งขึ้นมา
เรายังคงใช้ชุดราคาที่รวมข้อมูลจากหลายแหล่งเพื่อดูภาพรวมตลาด แต่ย้ายออกจากขั้นตอนส่งคำสั่งซื้อขายแล้ว ตอนนี้สัญญาณอ้างอิงประวัติราคาของสัญญาที่เลือกโดยตรง ส่วนคำสั่งจำลองกับสมุดคำสั่งของสัญญานั้น โดยคำนวณค่าธรรมเนียมและขนาดคำสั่งหลังคำนวณราคาที่จับคู่ได้ ต้องเพิ่มงานเชื่อมข้อมูลอีกเล็กน้อย แต่เส้นทุนก็ดูสวยน้อยลงมาก
ราคาเบรกนั้นเกิดขึ้นจริง แบ็กเทสต์เพียงแค่ให้ตลาดที่ดีกว่าตลาดที่กลยุทธ์เลือกไว้
← บทความทั้งหมด


