คุณส่งเส้นทุนและบันทึกการเทรดมาให้ผม พร้อมถามว่าผลลัพธ์ดีเกินจริงหรือเปล่า คำตอบสั้น ๆ คือ มันไม่ได้ดูเหมือนของจริงหรือของปลอมอย่างชัดเจน และคุณหาคำตอบได้ด้วยการทำงานประมาณ 1 วัน ส่วนคำตอบยาวอยู่ด้านล่าง เพราะการวินิจฉัยสำคัญกว่าคำตัดสิน
สิ่งที่คุณมี: สัญญาณ mean-reversion แบบ 15 นาทีบน perp ของ BTCUSDT และ ETHUSDT บน Binance ใช้ z-score ของราคาเทียบกับค่าเฉลี่ย 96 แท่ง เปิดสวนเมื่อราคาออกไปสุดทาง ถือไว้ 2-8 แท่ง การทดสอบย้อนหลังครอบคลุม ก.พ. 2024 ถึง มิ.ย. 2026 Sharpe 2.9 หลังหักค่าธรรมเนียมตามโมเดลของคุณ และเมื่อคุณแบ่ง P&L ตามนาทีของวัน 71% ของกำไรไปกระจุกอยู่ใน 3 ช่วงเวลา ช่วงละ 15 นาทีที่ครอบคลุมเวลา 00:00, 08:00 และ 16:00 UTC
คุณรู้อยู่แล้วว่าทำไมเรื่องนี้ถึงน่าสงสัย ผมจะบอกว่าทำไมมันถึงอาจไม่ใช่เรื่องน่าสงสัยทั้งหมด
นาฬิกา funding มีอยู่จริง และขยับราคาได้จริง
Binance ชำระ funding ของ perpetual เวลา 00:00, 08:00 และ 16:00 UTC ทุกสถานะที่เปิดอยู่ ณ เวลาชำระจะจ่ายหรือได้รับเงิน นี่คือกระแสเงินสดที่กำหนดเวลาไว้แน่นอน ทุกคนรู้ล่วงหน้า และทำให้เกิดแรงซื้อขายจริงรอบช่วงเวลานั้น ไม่ใช่อาร์ติแฟกต์ของข้อมูล แต่เป็นสิ่งที่เทรดเดอร์ทำจริง
แรงซื้อขายนี้มีรูปแบบ ในช่วง 10 ถึง 30 นาทีก่อนชำระ สถานะที่ไม่ต้องการจ่ายจะถูกปิดหรือป้องกันความเสี่ยง หาก funding ในช่วงนั้นอยู่ที่ +0.04% ฝั่ง long ที่ตั้งใจจะออกอยู่แล้วก็จะออกก่อนเวลาคำนวณ mark แทนที่จะรอออกทีหลัง ส่วนเทรดเดอร์ basis ที่ short perp ก็ยินดีถือสถานะข้ามช่วงนั้น นี่คือแรงกดดันที่ไม่สมมาตรและมีเส้นตาย จากนั้น ทันทีหลังชำระ แรงซื้อขายบางส่วนก็ย้อนกลับมา — ฝั่ง long ที่ต้องการเลี่ยง funding กลับเข้าเทรดอีกครั้ง — ทำให้เกิดการกลับตัวบางส่วน
ดังนั้น สัญญาณ mean-reversion ที่ทำงานเวลา 23:52 และปิดเวลา 00:12 จึงอยู่ตรงจุดที่เกิดเหตุการณ์ด้านสภาพคล่องซึ่งคาดการณ์ได้พอดี ความได้เปรียบบางส่วนของคุณน่าจะมาจากการกลับตัวของแรงผลักดันที่เกิดขึ้นจากกลไกและปฏิทิน นี่เป็นปรากฏการณ์ microstructure จริง และเกิดขึ้นต่อเนื่องมาหลายปีแล้ว
แต่ก่อนจะเชื่อตัวเลขที่สูงขนาดนี้ ผมอยากรู้เรื่องต่อไปนี้
6 เรื่องที่ควรตรวจ ตามลำดับที่ผมจะตรวจ
เริ่มจากเรื่องที่ตรวจได้ง่ายที่สุด เพราะกลยุทธ์ลักษณะนี้ส่วนใหญ่ไปไม่รอดในการตรวจข้อ 2 หรือ 3
- คุณนับ P&L จาก funding ซ้ำหรือเปล่า? ถ้าระบบจำลองการจับคู่คำสั่งของคุณคิด funding กับสถานะที่เปิดอยู่ และ ชุดราคาของคุณเป็นราคา mark แทนที่จะเป็นราคาซื้อขายล่าสุด คุณอาจกำลังจ่ายหรือได้รับ funding ซ้ำ 2 ครั้ง — ครั้งหนึ่งบันทึกแยกอย่างชัดเจน อีกครั้งผ่านพฤติกรรมการบรรจบกันของราคา mark พิมพ์กระแสเงินสดจาก funding ดิบของแต่ละการเทรด แล้วตรวจดู 10 รายการเทียบกับ endpoint ประวัติ funding ของตลาดซื้อขาย
- แถวข้อมูล funding ของคุณระบุ timestamp เวลาใด? ประวัติอัตรา funding ของ Binance ส่ง fundingTime ซึ่งเป็นเวลาชำระ บางผู้ให้บริการส่งแถวเดียวกันโดยประทับเวลาเป็น จุดเริ่มต้น ของช่วงเวลาที่แถวนั้นใช้ หากข้อมูลของคุณเลื่อนเวลาไป 8 ชั่วโมง แสดงว่าคุณกำลังเทรดด้วยสัญญาณที่รู้อนาคต นี่เป็นวิธีที่ผมเจอบ่อยที่สุดที่ทำให้เกิดความได้เปรียบจาก funding แบบปลอม และมันให้รูปแบบ P&L เหมือนของคุณเป๊ะ — กระจุกตัวที่แท่งเวลาชำระ ทิศทางถูกต้อง ดูสวยงามมาก
- สเปรดเป็นอย่างไรตอน 00:00:00? ดึงข้อมูลสมุดคำสั่ง ไม่ใช่ klines บนแท่ง 1 นาที สเปรดมองไม่เห็น แต่ในช่วงไม่กี่วินาทีรอบเวลาชำระ บนตลาดระดับกลาง สเปรดอาจกว้างขึ้น 3-5 เท่า หากคุณจำลองการจับคู่ที่ราคากลางหรือราคาปิด เท่ากับคุณเก็บสเปรดที่ไม่มีอยู่จริง
- กลยุทธ์ยังได้ผลไหมเมื่อเหลือแค่ช่วงชำระอีก 2 ครั้ง? แยกดู 3 ช่วงเวลา เวลา 00:00 UTC มีแรงซื้อขายต่างจาก 08:00 (ช่วงใกล้เปิดตลาดเอเชีย) และ 16:00 (ช่วงบ่ายของสหรัฐฯ) หากกำไรทั้งหมดอยู่ในช่วงใดช่วงหนึ่งจาก 3 ช่วง คุณก็มีเหตุการณ์ประมาณ 300 ครั้ง ไม่ใช่ 900 ครั้ง และควรคำนวณ Sharpe ใหม่โดยใช้จำนวนนี้
- กลยุทธ์ยังได้ผลบนตลาดที่ใช้เวลาชำระต่างออกไปไหม? ข้อนี้ดีมาก ลองใช้สัญญาณเดิมทุกประการกับตลาดที่ชำระ funding รายชั่วโมงหรือใช้ตารางเวลาอื่น หากผลเกิดจาก funding ก็ควรสอดคล้องกับนาฬิกาของตลาดนั้น แต่ถ้าสัญญาณยังทำงานเวลา 00:00 UTC บนตลาดที่ไม่ได้ชำระเวลา 00:00 UTC คุณก็พบอาร์ติแฟกต์ช่วงเที่ยงคืนใน data pipeline ไม่ใช่ผลจาก funding
- P&L อยู่ใน 90 วินาทีแรกและ 90 วินาทีสุดท้ายมากแค่ไหน? หากความได้เปรียบทั้งหมดอยู่ในช่วงเวลาต่ำกว่า 2 นาที แท่ง 15 นาทีของคุณหยาบเกินกว่าจะระบุราคาที่เข้าได้อย่างน่าเชื่อถือ และคุณควรสมมติว่าราคาที่ใช้จำลองการจับคู่เป็นราคาที่ดีที่สุดในช่วงนั้น แทนที่จะเป็นราคาที่คุณจะได้จริง
ถ้าผมมีเวลาแค่ 1 ชั่วโมง ผมจะเริ่มจากข้อ 5 เป็นการทดลองตามธรรมชาติที่ชัดเจน และไม่ต้องมีโครงสร้างพื้นฐานใหม่ นอกจากแหล่งข้อมูลแห่งที่ 2
ต้นทุนจริงของช่วงเวลาชำระ
สมมติว่าผลนี้เป็นของจริงและคุณผ่านการตรวจทั้ง 6 ข้อ ทีนี้มาคำนวณราคาให้ถูกต้อง เพราะการเทรดที่คุณจำลองไม่ใช่การเทรดที่คุณจะได้จริง
เปรียบเทียบการเทรดไปกลับ 20 นาทีในช่วงเวลาสงบกับช่วงที่คร่อมเวลาชำระ บน perp ของ USDⓈ-M โดยเข้าและออกด้วย taker สำหรับคำสั่งขนาด $50k:
| ช่วงเวลาสงบ (เช่น 03:20 UTC) | คร่อมเวลา 00:00 UTC | |
|---|---|---|
| ค่าธรรมเนียม taker ไปกลับ | 0.09% | 0.09% |
| สเปรดที่จ่ายโดยทั่วไป | ~0.4 bp | 1.5-3 bp |
| Slippage สำหรับคำสั่งขนาด $50k | ~0.5 bp | 2-6 bp |
| Funding ที่จ่าย/ได้รับ | 0 | ±1 ถึง ±4 bp (ตลอดช่วงเวลา) |
| ต้นทุนรวมที่สมจริง | ~10 bp | 13-19 bp ก่อนรวม funding |
แถว funding เป็นจุดที่น่าสนใจ และเป็นเหตุผลที่ผมย้ำเรื่องข้อ 1 หากคุณถือสถานะข้ามเวลาชำระ คุณจะรับภาระ funding ของช่วงเวลา ทั้งหมด ไม่ว่าจะถือสถานะนานแค่ไหน การเปิดรับความเสี่ยง 12 วินาที ณ เวลา 23:59:54 ทำให้เสีย funding เต็ม 8 ชั่วโมง กลยุทธ์ที่ถือสถานะเฉลี่ย 20 นาทีและข้ามเวลาคำนวณ mark กำลังจ่ายต้นทุน carry 8 ชั่วโมงสำหรับการเทรด 20 นาที โมเดลค่าธรรมเนียมของคุณต้องคิดแบบนั้น ไม่ใช่เฉลี่ยตามสัดส่วนเวลา
กับดักอีกอย่างที่เกี่ยวข้องกัน: หากคุณเลี่ยงการถือข้ามเวลาชำระทั้งหมด — ออกเวลา 23:58 แล้วกลับเข้าเวลา 00:02 — คุณจะจ่ายค่าธรรมเนียมเพิ่มเป็น 2 เท่า และตอนนี้กลยุทธ์ของคุณตั้งอยู่บนข้อสันนิษฐานทั้งหมดที่ว่า การข้ามฝั่งด้วย taker เพิ่มอีก 2 ครั้งมีต้นทุนต่ำกว่าการจ่าย funding 1 ครั้ง บางครั้งก็จริง คำนวณให้ชัดเจน แทนที่จะปล่อยให้การทดสอบย้อนหลังตัดสินใจแทนคุณ
คำถามเรื่องภาวะตลาดที่คุณยังไม่ได้ถาม
ข้อมูลตัวอย่างของคุณครอบคลุม ก.พ. 2024 ถึง มิ.ย. 2026 funding ตลอดช่วงนั้นไม่ได้อยู่ในภาวะตลาดแบบเดียว มีช่วงยาว ๆ ที่อัตรา 8 ชั่วโมงตรึงอยู่ที่ระดับต่ำสุด 0.01% และไม่มีใครมีเหตุผลให้ปรับสถานะรอบเวลาชำระ และมีบางสัปดาห์ที่อัตราอยู่ที่ 0.05%+ ติดต่อกันหลายวัน แรงซื้อขายก่อนชำระก็รุนแรง
แบ่ง P&L ตามอัตรา funding ที่เป็นอยู่ขณะเทรด เช่น แบ่งเป็น 4 กลุ่มตามค่าสัมบูรณ์ของอัตรา หากความได้เปรียบมาจากแรงซื้อขายที่เกิดจาก funding ก็ควรเพิ่มขึ้นโดยประมาณตาม |funding| เมื่อ funding ใกล้ศูนย์ ความได้เปรียบก็ควรใกล้ศูนย์ เมื่อ funding สูง ความได้เปรียบก็ควรสูง หากผลกลับคงที่ข้ามทุกกลุ่ม หรือแย่กว่านั้นคือกระจุกในกลุ่ม funding ต่ำ เรื่อง funding ก็เป็นเพียงคำอธิบายที่คุณนำไปผูกกับสิ่งอื่น
ผมชอบการทดสอบนี้ เพราะเป็นการคาดการณ์ที่ตรวจสอบและหักล้างได้ ซึ่งต่อยอดมาจากคำอธิบายของคุณเอง คุณไม่ได้ถามว่า "มันยังใช้ได้ไหม" แต่ถามว่า "มันใช้ได้ด้วยเหตุผลที่ผมอ้างหรือเปล่า"
สิ่งที่ผมจะทำกับกลยุทธ์นี้จริง ๆ
ถ้าผ่าน: ลดขนาดลง กลยุทธ์นี้ในแบบที่ซื่อตรงกับความเป็นจริง ไม่ใช่การเทรด 900 ครั้งต่อปีบนกริด 15 นาที แต่เป็นเหตุการณ์ที่คัดเลือกมาอย่างดีเพียงไม่กี่ร้อยครั้ง โดยกำหนดตรรกะการเข้าเทรดละเอียดถึงระดับวินาที และสร้างโมเดลการจับคู่จากภาพบันทึกสมุดคำสั่ง ไม่ใช่ klines นั่นคือกลยุทธ์ที่เล็กลง ดูไม่น่าตื่นเต้น และปกป้องเหตุผลได้มากกว่า อีกทั้งยังเป็นเวอร์ชันที่มีโอกาสให้ผลใกล้เคียงกันเมื่อทดลองเทรด เพราะมีเพียงการทดลองเทรดเท่านั้นที่จะบอกได้ว่าราคาที่คุณสมมติไว้มีอยู่จริงหรือไม่
ถ้าตกข้อ 2 — การเลื่อนของ timestamp — ก็อย่าเพิ่งหงุดหงิดไป ทุกคนเคยพลาดเรื่องนี้อย่างน้อย 1 ครั้ง และควรอ่านโค้ดโหลดข้อมูลของคุณอย่างละเอียดแทนที่จะแค่แก้ offset เพราะถ้า funding เลื่อนเวลา open interest ก็มีโอกาสเลื่อนด้วย และคุณควรรู้เรื่องนี้ก่อนเริ่มไอเดียถัดไป
อีกเรื่องหนึ่ง และนี่คือส่วนที่คนมักข้ามไป ไม่ว่าคุณจะพบอะไร ให้จดการตรวจทั้ง 6 ข้อและผลลัพธ์ไว้ข้าง ๆ กลยุทธ์ อีก 6 เดือนต่อจากนี้ คุณหรือคนอื่นอาจสร้างสัญญาณที่มีโครงสร้างเหมือนกัน ได้เส้นทุนสวยงามแบบเดียวกัน แล้วกลับมาถกเถียงเรื่องเดิมตั้งแต่ต้น สิ่งที่อยู่กับคุณได้นานคือการวินิจฉัย ส่วนกลยุทธ์อาจไม่อยู่
← บทความทั้งหมด
