ชุดฟิวเจอร์สต่อเนื่องนำสัญญาที่ทยอยหมดอายุมาต่อกันเป็นประวัติราคาเดียว คุณใช้ประวัตินี้ศึกษาสัญญาณได้ แต่ถ้าคำนวณกำไรขาดทุนจากการซื้อขายโดยตรงจากการเปลี่ยนแปลงของราคา ก็อาจสร้างกำไรและขาดทุนขึ้นมาเองทุกครั้งที่โรลสัญญา เพราะชุดราคานี้ไม่ได้บอกว่าคุณถือสัญญาใดอยู่
ลองดูตัวอย่างที่เห็นภาพชัดเป็นพิเศษ: น้ำมันดิบ WTI ของ NYMEX ในวันที่ 20 เมษายน 2020 สัญญาเดือนพฤษภาคมชำระราคาที่ติดลบ 37.63 ดอลลาร์ต่อบาร์เรล ส่วนเดือนมิถุนายนชำระราคาที่บวก 20.43 ดอลลาร์ ราคาทั้งสองเป็นราคาจริง และส่วนต่าง 58.06 ดอลลาร์ก็เป็นตัวเลขจริงเช่นกัน แต่การเปลี่ยนกราฟจากเดือนพฤษภาคมไปเป็นเดือนมิถุนายนไม่ได้ทำให้สถานะซื้อได้กำไรเท่าส่วนต่างนั้น
มาลองแยกดูว่าการต่อราคานี้ทำให้เกิดอะไรขึ้น ตัวเลขเหล่านี้คือราคาชำระเงินจริงในอดีต ส่วนตัวอย่างการบันทึกบัญชีสมมติด้านล่างใช้ราคาเหล่านี้เพื่อแสดงวิธีคำนวณ ไม่ได้หมายความว่าจะส่งคำสั่งแล้วได้ราคานั้น
CLK20 และ CLM20: รหัสสัญญาที่หายไปจากกราฟ
| รายการ | สัญญาเดือนพฤษภาคม | สัญญาเดือนมิถุนายน |
|---|---|---|
| รหัสสัญญา | CLK20 | CLM20 |
| เดือนส่งมอบ | พฤษภาคม 2020 | มิถุนายน 2020 |
| ราคาชำระวันที่ 20 เมษายน ดอลลาร์ต่อบาร์เรล | −37.63 | 20.43 |
| ขนาดสัญญา | 1,000 บาร์เรล | 1,000 บาร์เรล |
รหัสเดือนสำคัญกว่าตัวอักษรนำหน้าของตัวย่อ K หมายถึงเดือนพฤษภาคม ส่วน M หมายถึงเดือนมิถุนายน สัญญาเหล่านี้มีภาระการส่งมอบและราคาต่างกัน สัญญาเดือนพฤษภาคมใกล้หมดอายุท่ามกลางแรงกดดันเรื่องพื้นที่จัดเก็บที่รุนแรงเป็นพิเศษ ส่วนสัญญาเดือนมิถุนายนให้เวลาเพิ่มไปอีกหนึ่งเดือน
สัญลักษณ์ฟิวเจอร์สต่อเนื่องของผู้ให้บริการข้อมูลซ่อนความแตกต่างนี้ไว้หลังตัวย่อที่ดูเรียบง่าย ฉันชอบตัวย่อสั้น ๆ จนกว่ามันจะเป็นรหัสเดียวที่เหลืออยู่ในบันทึกการเทรด พอถึงตอนนั้น การดีบักก็ไม่ต่างจากการขุดคุ้ยโบราณวัตถุ แถมกาแฟยังแย่กว่าเดิมด้วย
และไม่มีประวัติฟิวเจอร์สต่อเนื่องแบบเดียวที่ใช้กันได้ทุกที่ ผู้ให้บริการอาจโรลตามจำนวนวันทำการก่อนหมดอายุที่กำหนดไว้ โรลเมื่อปริมาณการซื้อขายตัดกัน หรือใช้กำหนดการแบบอื่น ประวัติราคาหลายชุดเปลี่ยนออกจากสัญญาเดือนพฤษภาคมไปแล้วก่อนวันที่ 20 เมษายน ตัวอย่างของเราจงใจนำราคาชำระของสัญญาสองเดือนนี้มาต่อกันเพื่อให้เห็นข้อผิดพลาดชัดเจน ไม่ได้อ้างอิงกำหนดการโรลของผู้ให้บริการรายใดโดยเฉพาะ
1,000 บาร์เรล: ตัวคูณเบื้องหลังราคาทุกจุด
สัญญาฟิวเจอร์ส WTI มาตรฐานของ NYMEXมีขนาด 1,000 บาร์เรล ดังนั้นราคาที่เปลี่ยน 1 ดอลลาร์จะทำให้มูลค่าของสถานะซื้อหนึ่งสัญญาเปลี่ยน 1,000 ดอลลาร์ ส่วนการขยับหนึ่งช่องที่ 0.01 ดอลลาร์มีมูลค่า 10 ดอลลาร์
สำหรับสถานะในสัญญาเดียวที่ไม่เปลี่ยนแปลง คำนวณเบื้องต้นได้ดังนี้:
gross_pnl = contracts × 1,000 × (ending_price − starting_price)
สูตรนี้ยังใช้ได้เมื่อราคาต่ำกว่าศูนย์ แต่ผลตอบแทนเป็นเปอร์เซ็นต์ที่คำนวณจากราคาฟิวเจอร์สจะมีประโยชน์น้อยลงมาก เพราะเมื่อราคาข้ามศูนย์ ผลตอบแทนอาจคำนวณไม่ได้หรือทำให้ความหมายที่เห็นกลับด้าน ควรคำนวณผลตอบแทนของกลยุทธ์จากมูลค่าทุนในบัญชีและหลักเกณฑ์กระแสเงินสด ราคาต่อบาร์เรลที่เสนอซื้อขายไม่ใช่เงินทุนที่ใช้กับกลยุทธ์
58.06 ดอลลาร์: จุดที่ราคาขาดตอนตรงรอยต่อ
สมมติว่าเครื่องมือคำนวณแบบง่ายเห็นราคาชำระของเดือนพฤษภาคมต่อด้วยราคาชำระของเดือนมิถุนายน แล้วใช้สูตรนั้นราวกับว่าไม่ได้เปลี่ยนสัญญา:
invented_pnl = 1 × 1,000 × (20.43 − (−37.63))
= $58,060
การเปรียบเทียบนี้ไม่ได้แสดงการเปลี่ยนแปลงที่เกิดขึ้นตามเวลาเลย ราคาทั้งสองเป็นราคาของสัญญาคนละฉบับในรอบซื้อขายเดียวกัน เครื่องมือคำนวณเข้าใจผิดว่าส่วนต่างราคาของคนละสัญญาคือกำไรจากการถือครองตามเวลา
เมื่อใช้การต่อราคาแบบรายวัน ราคาของสัญญาเดิมเมื่อวานกับราคาของสัญญาใหม่วันนี้ก็มีการเคลื่อนไหวตามตลาดตามปกติรวมอยู่ด้วย จึงสังเกตข้อผิดพลาดได้ยากขึ้น การเปลี่ยนแปลงที่บันทึกไว้จะรวมทั้งการเคลื่อนไหวของสัญญาเดิมและส่วนต่างราคาระหว่างสัญญาตอนเปลี่ยนสัญญาเข้าด้วยกัน
การหัก 58,060 ดอลลาร์ออกไปโดยอ้างว่าเป็น “ต้นทุนการโรล” ที่จ่ายเป็นเงินสดก็ไม่ได้แก้แบบจำลองเช่นกัน ฟิวเจอร์สไม่ได้ซื้อด้วยการจ่ายเงินสดเต็มมูลค่าตามราคาที่เสนอ การปิดสัญญาหนึ่งแล้วเปิดอีกสัญญาทำให้สถานะเปลี่ยน เกิดกำไรขาดทุนที่รับรู้หรือชำระแล้ว ค่าธรรมเนียม ผลจากการส่งคำสั่ง และข้อกำหนดมาร์จิน ส่วนต่างระหว่างระดับราคาของทั้งสองสัญญาไม่ได้กลายเป็นเงินที่ต้องจ่ายออกโดยอัตโนมัติ
+58.06: การปรับย้อนหลังที่เขียนทับประวัติ
วิธีสร้างชุดราคาต่อเนื่องที่ใช้กันทั่วไปวิธีหนึ่งคือบวกส่วนต่างตอนโรลเข้ากับราคาก่อนหน้า ภายใต้วิธีนี้ ราคาเดือนพฤษภาคมที่ −37.63 จะกลายเป็น 20.43 ทำให้ราคาต่อเนื่องกับเดือนมิถุนายนโดยไม่มีจังหวะกระโดด ข้อมูลก่อนหน้าในช่วงประวัติเดียวกันก็ขยับขึ้น 58.06 เช่นกัน
| วิธีสร้างชุดราคา | สิ่งที่เกิดขึ้นตรงรอยต่อนี้ | ผลต่อการวิจัย |
|---|---|---|
| ไม่ปรับราคา | ส่วนต่าง 58.06 ยังคงอยู่ | อินดิเคเตอร์อาจตีความการเปลี่ยนสัญญาว่าเป็นการเคลื่อนไหวของตลาด |
| ปรับย้อนหลังแบบบวกส่วนต่าง | บวก 58.06 ให้ข้อมูลช่วงก่อนหน้า | การเปลี่ยนแปลงราคาเป็นดอลลาร์ภายในช่วงเดิมยังคงเดิม แต่ระดับราคาในอดีตและการเปลี่ยนแปลงเป็นเปอร์เซ็นต์เปลี่ยนไป |
| ปรับย้อนหลังแบบคูณอัตราส่วน | คูณข้อมูลช่วงก่อนหน้าด้วย 20.43 / −37.63 หรือประมาณ −0.543 | ตัวคูณติดลบกลับเครื่องหมายของการเปลี่ยนแปลงราคาในช่วงเดิม |
แถวสุดท้ายนี่เองที่ทำให้ฉันไม่ยอมรับคำว่า “ปรับแบบอัตราส่วน” ว่าเป็นข้อกำหนดข้อมูลที่ครบถ้วน วิธีที่ทำงานได้สมเหตุสมผลเมื่อราคาเป็นบวกตลอด จำเป็นต้องระบุนโยบายให้ชัดเจนเมื่อราคาเป็นศูนย์หรือติดลบ
การปรับแบบบวกส่วนต่างก็มีผลตามมาเช่นกัน สัญญาณที่ซื้อเมื่อราคาต่ำกว่าเกณฑ์คงที่ 30 ดอลลาร์อาจเปลี่ยนไปเมื่อการโรลในภายหลังเขียนทับระดับราคาในอดีต ส่วนสัญญาณค่าเฉลี่ยเคลื่อนที่เร็วลบช้าอาจไม่เปลี่ยนเมื่อมีการเลื่อนราคาทุกจุดด้วยจำนวนเท่ากัน ตราบใดที่หน้าต่างทั้งสองช่วงได้รับการเลื่อนเท่ากัน แต่หน้าต่างที่คร่อมจุดปรับราคาต้องตรวจแยกต่างหาก
เก็บวิธีปรับราคา กำหนดการโรล และเวอร์ชันข้อมูลไว้กับผลการวิจัยด้วย สำหรับสัญญาณที่ไวต่อระดับราคาหลังปรับ ให้สร้างประวัติขึ้นใหม่ตามข้อมูลที่มีอยู่ ณ วันที่ตัดสินใจแต่ละครั้ง ไฟล์ข้อมูลที่ดาวน์โหลดในวันนี้อาจมีการปรับจากการโรลที่ยังไม่เกิดขึ้นในตอนนั้น
รายการคำสั่งสองรายการที่กราฟต่อเนื่องทำหายไป
นี่คือตัวอย่างบัญชีที่ตั้งใจทำให้ง่ายขึ้น สมมติว่ามีการประเมินมูลค่าสัญญาเดือนพฤษภาคมหนึ่งสัญญาที่ −30.00 ก่อนโรล สมมติว่าปิดสัญญาเดือนพฤษภาคมและเปิดสัญญาเดือนมิถุนายนที่ราคาชำระจริงด้านบน จากนั้นประเมินมูลค่าสัญญาเดือนมิถุนายนที่ 21.00 ราคาที่ใช้สมมตินี้มีไว้แสดงวิธีบันทึกบัญชี
| รายการในบัญชี | วิธีคำนวณ | กำไรขาดทุนขั้นต้น |
|---|---|---|
| ปิดสถานะซื้อสัญญาเดือนพฤษภาคมหนึ่งสัญญาที่ −37.63 | 1,000 × (−37.63 − (−30.00)) | −$7,630 |
| เปิดสถานะซื้อสัญญาเดือนมิถุนายนหนึ่งสัญญาที่ 20.43 | ไม่มีการเปลี่ยนแปลงราคา ณ จุดเข้าซื้อ | $0 |
| ประเมินมูลค่าสัญญาเดือนมิถุนายนที่ 21.00 | 1,000 × (21.00 − 20.43) | +$570 |
| รวม | ก่อนหักต้นทุนการส่งคำสั่งและค่าธรรมเนียม | −$7,060 |
ส่วนต่าง 58.06 ไม่ได้ปรากฏเป็นรายรับหรือค่าใช้จ่ายแยกต่างหาก มาร์จินผันแปรรายวันเป็นตัวกำหนดว่ากำไรขาดทุนจากฟิวเจอร์สจะเปลี่ยนเป็นเงินสดเมื่อใด แต่มันไม่ได้ทำให้กำไรขาดทุนก้อนเดิมเกิดซ้ำอีกครั้ง
การโรลจริงอาจดำเนินการด้วยคำสั่งสเปรดปฏิทิน แทนการส่งคำสั่งแยกกันสองรายการ เครื่องจำลองควรแทนกลไกที่สมมติไว้ รวมถึงราคาที่จับคู่ได้และค่าใช้จ่าย พร้อมเก็บสถานะของแต่ละสัญญาไว้ให้ครบ
เกณฑ์ตรวจรับของฉันตรงไปตรงมา: กำไรขาดทุนจากการเทรดฟิวเจอร์สทุกดอลลาร์ต้องระบุสัญญา จำนวนสัญญา ตัวคูณ และราคาสองจุดของสัญญาเดียวกันได้ ฉันยังต้องการเวลาที่ตัดสินใจโรลและข้อมูลประกอบด้วย กฎที่อิงปริมาณซื้อขายของวันนี้ ซึ่งต้องรอให้ปิดรอบซื้อขายก่อน จะแอบส่งคำสั่งตั้งแต่ช่วงก่อนหน้านั้นของวันเดียวกันไม่ได้
แสดงเส้นราคาต่อเนื่องไว้เพื่อดูบริบท แล้วแสดงสัญญาที่ถือจริงไว้ด้านล่างพร้อมทำเครื่องหมายทุกครั้งที่เปลี่ยนสัญญา หากเส้นทุนกระโดดตรงจุดเปลี่ยน ฉันจะเริ่มตรวจจากรายการคำสั่งสองรายการนั้น
← บทความทั้งหมด


