ถ้า Backtest ดีขึ้นเมื่อปรับพอร์ตบ่อยขึ้น คำถามแรกไม่ใช่ว่าสัญญาณฉลาดขึ้นหรือเปล่า แต่คือเราได้นับต้นทุนการซื้อขายเพิ่มขึ้นตามที่ต้องจ่ายจริงหรือยัง
ความถี่ในการปรับพอร์ตเปลี่ยนสองอย่างพร้อมกัน คือพอร์ตติดตามเป้าหมายได้เร็วแค่ไหน และต้องซื้อขายมากเพียงใดกว่าจะไปถึงจุดนั้น การเปรียบเทียบที่มีประโยชน์ควรตรึงสัญญาณและกฎกำหนดขนาดสถานะไว้เหมือนเดิม แล้ววัดผลตอบแทนจากการปรับพอร์ตที่เร็วขึ้นเทียบกับต้นทุนทั้งหมดของการหมุนเวียนพอร์ตที่เพิ่มขึ้น
ทำไมการปรับพอร์ตทุกวันจึงชนะการปรับทุกสัปดาห์ใน Backtest ของฉัน?
บางครั้งก็ควรเป็นเช่นนั้น หากสัญญาณเปลี่ยนเร็ว การรอหนึ่งสัปดาห์อาจทำให้พอร์ตยังถือสัดส่วนเดิมที่ล้าสมัย ตารางรายวันช่วยลดความล่าช้านี้ได้ แต่ก็อาจซื้อขายตามการเปลี่ยนแปลงเป้าหมายเล็กน้อยที่ตารางรายสัปดาห์มองข้าม และการเปลี่ยนแปลงเหล่านี้เองที่อาจทำให้ต้นทุนกลบกำไรส่วนเกินที่บางอยู่แล้ว
ลองพิจารณาพอร์ตมูลค่า $100,000 ที่น้ำหนักเป้าหมายขยับวันละ 1% นั่นหมายถึงมีคำสั่งซื้อขายประมาณ $1,000 ต่อวัน ก่อนหักล้างรายการซื้อและขายที่ชดเชยกัน หากต้นทุนขาเดียวอยู่ที่ 10 basis points การซื้อขาย $1,000 จะมีต้นทุนราว $1 หากสัญญาณได้ประโยชน์จากการปรับแต่ละครั้งจริง ต้นทุนนี้อาจไม่แพง แต่ถ้าเป้าหมายแกว่งไปมารอบระดับที่คงที่และประโยชน์มีเพียงไม่กี่เซนต์ ตารางรายวันก็กำลังจ่ายเงินเพื่อไล่ตามสัญญาณรบกวน
ใน Backtest พอร์ตรายสัปดาห์อาจดูแย่กว่าเพราะตอบสนองช้า ส่วนพอร์ตรายวันอาจดูดีกว่าเพราะใช้เป้าหมายที่เป็นปัจจุบันกว่า แต่ผลลัพธ์ทั้งสองแบบยังไม่น่าเชื่อถือจนกว่าจะรวมราคาที่จับคู่คำสั่ง ค่าธรรมเนียม ส่วนต่างราคา และผลกระทบต่อตลาดด้วยเงื่อนไขที่เทียบเคียงกัน
จะเปรียบเทียบการปรับพอร์ตทุกวันกับทุกสัปดาห์อย่างยุติธรรมได้อย่างไร?
ตรึงสัญญาณพื้นฐาน สินทรัพย์ที่นำมาพิจารณา กฎกำหนดขนาดสถานะ และช่วงทดสอบให้เหมือนเดิม เปลี่ยนเฉพาะตารางการปรับพอร์ต ใช้สมมติฐานการส่งคำสั่งชุดเดียวกันทั้งสองแบบ และคำนวณการหมุนเวียนพอร์ตจากคำสั่งที่แต่ละตารางสร้างขึ้นจริง หลังหักล้างการเปลี่ยนแปลงทั่วทั้งพอร์ตแล้ว
| ตัวชี้วัด | บอกอะไร | ข้อผิดพลาดที่พบบ่อย |
|---|---|---|
| ผลตอบแทนก่อนต้นทุน | ผลการดำเนินงานของพอร์ตเป้าหมายก่อนหักต้นทุนการซื้อขาย | เรียกผลนี้ว่าผลลัพธ์ของกลยุทธ์ |
| การหมุนเวียนพอร์ต | มูลค่าพอร์ตที่เปลี่ยนมือไปเท่าใด | นับรายการซื้อแต่ลืมหักรายการขายที่เกี่ยวข้อง |
| ผลตอบแทนสุทธิ | ผลตอบแทนที่เหลือหลังหักค่าธรรมเนียม ส่วนต่างราคา และผลกระทบต่อตลาดที่ประเมินไว้ | ใช้ค่าธรรมเนียมอัตราเดียวโดยไม่คำนึงถึงขนาดคำสั่ง |
| ความคลาดเคลื่อนจากเป้าหมาย | พอร์ตที่ถืออยู่เบี่ยงจากน้ำหนักเป้าหมายเพียงใด | คิดว่าการทำให้พอร์ตตรงตามเป้าหมายอย่างสมบูรณ์ไม่มีต้นทุน |
แนวปฏิบัติที่ใช้ได้จริงอย่างหนึ่งคือกำหนดการหมุนเวียนพอร์ตขาเดียวเป็นค่าที่น้อยกว่าระหว่างยอดซื้อรวมกับยอดขายรวม หารด้วยมูลค่าพอร์ต ระบุหลักเกณฑ์นี้ไว้ในรายงาน บางระบบใช้มูลค่าซื้อขายรวมแทน ซึ่งอาจสูงกว่าประมาณสองเท่าสำหรับการหมุนพอร์ตที่มีเงินทุนครบ ทั้งสองวิธีใช้ได้ แต่การเปลี่ยนวิธีไปมาโดยไม่ระบุทำให้การเปรียบเทียบไม่มีประโยชน์
จากนั้นรายงานผลส่วนเพิ่มว่า ตารางที่เร็วขึ้นเพิ่มผลตอบแทนสุทธิเท่าใด และทำให้เกิดต้นทุนเพิ่มขึ้นเท่าใด หากตารางรายวันเพิ่มผลตอบแทนก่อนต้นทุน 0.4 percentage points แต่มีต้นทุนเพิ่มขึ้น 0.7 points และสุดท้ายได้ผลต่ำกว่าตารางรายสัปดาห์ 0.3 points ก็ถือว่าตอบคำถามได้แล้ว
ควรจำลองต้นทุนการปรับพอร์ตอย่างไร?
เริ่มจากตลาดซื้อขายและตราสาร ตารางค่าธรรมเนียมของ Spot และ Futures ต่างกัน อัตราของ maker และ taker ก็ต่างกัน และอาจมี Funding สำหรับสถานะที่ถือข้ามช่วงชำระเงิน ในขั้นแรกแบบง่าย ให้ใช้อัตราค่าธรรมเนียมตามระดับบัญชีจริงและบวกต้นทุนส่วนต่างราคาให้ทุกคำสั่ง สำหรับคำสั่งขนาดใหญ่ ให้รวมผลกระทบต่อตลาดที่คำนวณตามขนาดคำสั่งและสภาพคล่องด้วย
สมมติว่ากลยุทธ์ข้ามส่วนต่างราคาเพื่อซื้อ แล้วข้ามอีกครั้งเพื่อขายในภายหลัง หากส่วนต่างราคาอยู่ที่ 4 basis points การซื้อขายไปกลับมีต้นทุนส่วนต่างราคาประมาณ 4 basis points ไม่ใช่ 2 เพราะการข้ามแต่ละครั้งจ่ายส่วนต่างราคาประมาณครึ่งหนึ่ง บวกค่าธรรมเนียม taker ทั้งสองฝั่งด้วย สมมติฐาน “10 bp ต่อการซื้อขาย” ไม่มีความหมาย หากไม่ได้กำหนดว่า “การซื้อขาย” หมายถึงอะไรและรวมต้นทุนส่วนใดบ้าง
ผลกระทบต่อตลาดควรเพิ่มขึ้นตามขนาดคำสั่งเมื่อเทียบกับสภาพคล่องที่มี การคิดอัตราคงที่เท่ากันสำหรับคำสั่ง $500 และ $500,000 ทำให้การปรับพอร์ตความถี่สูงดูขยายขนาดได้ง่ายเกินจริง หากข้อมูลไม่พอให้ประเมินผลกระทบต่อตลาดอย่างน่าเชื่อถือ ให้แสดงช่วงความไวและระบุให้ชัดว่าตารางนั้นเริ่มใช้ไม่ได้ตรงไหน
ควรใช้กรอบเบี่ยงเบนแทนตารางตายตัวไหม?
กรอบเบี่ยงเบนช่วยป้องกันไม่ให้การเปลี่ยนแปลงเป้าหมายเล็กน้อยสร้างคำสั่งซื้อขายได้ ตัวอย่างเช่น ปรับพอร์ตเมื่อสัดส่วนการถือครองเบี่ยงจากเป้าหมายเกิน 2 percentage points วิธีนี้แลกความแม่นยำในการติดตามเป้าหมายบางส่วนกับจำนวนคำสั่งที่ลดลง
แต่กรอบเบี่ยงเบนก็เป็นพารามิเตอร์อีกตัวหนึ่ง หากลองกรอบ 0.5%, 1%, 2% และ 5% กับสินทรัพย์จำนวนมาก แล้วเลือกผลลัพธ์ที่ดีที่สุด เท่ากับเพิ่มมิติในการค้นหา เลือกกรอบจำนวนน้อยที่มีเหตุผลทางเศรษฐศาสตร์ จดบันทึกทุกการทดลอง และประเมินกฎที่เลือกกับช่วงเวลาที่ไม่ได้ใช้ในการคัดเลือกกฎนั้น
รายงานที่มีประโยชน์ควรแสดงตารางการปรับพอร์ต กรอบเบี่ยงเบน หลักเกณฑ์การหมุนเวียนพอร์ต แบบจำลองต้นทุน และผลลัพธ์ก่อนกับหลังหักต้นทุน หากย้อนดูไม่ได้ว่าเหตุใดคำสั่งหนึ่งจึงถูกส่งออกไป ก็แยกไม่ออกว่าตารางที่ดีกว่าทำให้กลยุทธ์ดีขึ้น หรือแค่ซื้อขายถี่ขึ้น
การปรับพอร์ตบ่อยขึ้นคุ้มค่าเมื่อใด?
เมื่อประโยชน์จากการปรับพอร์ตที่เร็วขึ้นยังคงอยู่หลังหักต้นทุนตามจริงและเมื่อเปลี่ยนสมมติฐานเล็กน้อย เปรียบเทียบผลสุทธิของแต่ละตาราง ตรวจดูการหมุนเวียนพอร์ตแยกตามสินทรัพย์และสภาวะตลาด และเช็กว่าความได้เปรียบไม่ได้ขึ้นอยู่กับช่วงเวลาที่มีสภาพคล่องสูงผิดปกติเพียงช่วงเดียว
และใช้ตารางเดียวกันกับกลยุทธ์บนบัญชีทดลองด้วย Backtest ที่อัปเดตเป้าหมายทุกครั้งที่ตลาดปิด ขณะที่ระบบทดลองรวมคำสั่งเป็นชุดทุกชั่วโมง กำลังทดสอบนโยบายการส่งคำสั่งคนละแบบ จุดประสงค์ของการเปรียบเทียบคือทำความเข้าใจว่ากลยุทธ์สั่งให้บัญชีทำอะไร และกิจกรรมนั้นมีต้นทุนเท่าใด
← บทความทั้งหมด


