วิธี Triple Barrier: การติดป้ายกำกับเหตุการณ์ทางการเงิน
เรียนรู้ว่าระดับทำกำไร ระดับจำกัดขาดทุน และกรอบเวลาถือครองสูงสุดร่วมกันกำหนดป้ายกำกับเหตุการณ์อย่างไร พร้อมวิธีจัดการข้อมูลราคาที่กำกวมและผลลัพธ์ที่ทับซ้อนกัน
ในคู่มือนี้เงื่อนไขสามข้อกำหนดป้ายกำกับของแต่ละเหตุการณ์
สรุปสั้น
วิธี Triple Barrier กำหนดป้ายกำกับให้เหตุการณ์ทางการเงินตามเงื่อนไขแรกที่เกิดขึ้นหลังเริ่มเหตุการณ์ ได้แก่ ระดับทำกำไรด้านบน ระดับจำกัดขาดทุนด้านล่าง หรือกำหนดเวลาถือครองสูงสุด ระดับของแต่ละเหตุการณ์อิงราคาเริ่มต้น P₀ และสเกลความผันผวน σᵢ ซึ่งต้องทราบได้ตั้งแต่เวลาเริ่มต้น ในบทความนี้ การแตะระดับด้านบนได้ป้าย +1 การแตะระดับด้านล่างได้ −1 และการหมดเวลาโดยไม่แตะระดับแนวนอนทั้งสองได้ 0 บาง implementation ใช้เครื่องหมายของผลตอบแทนเมื่อหมดเวลาแทน จึงควรระบุหลักเกณฑ์ที่เลือกให้ชัดเจน
เงื่อนไขสามข้อกำหนดป้ายกำกับของแต่ละเหตุการณ์
สำหรับเหตุการณ์ i ให้บันทึกเวลาเริ่ม tᵢ ราคา P₀ ค่าประมาณสเกลผลตอบแทน σᵢ ตัวคูณ m_PT และ m_SL และระยะเวลาสูงสุด Tᵢ ถ้าใช้ผลตอบแทนอย่างง่าย ราคาเป้าหมายด้านบนคือ P₀ × (1 + m_PT σᵢ) ส่วนระดับด้านล่างคือ P₀ × (1 − m_SL σᵢ) สองระดับนี้เป็นแนวกั้นแนวนอน ส่วน Tᵢ เป็นแนวกั้นแนวตั้ง
เมื่อกำหนด m_PT = 2 เป้าหมายด้านบนจะอยู่สูงกว่าราคาเริ่มต้นสองเท่าของสเกล ส่วน m_SL = 1.5 ทำให้ระดับด้านล่างอยู่ห่างลงมา 1.5 เท่าของสเกล หากแตะระดับใดก่อนถึง Tᵢ เหตุการณ์จะสิ้นสุดที่ระดับนั้นและได้ป้ายกำกับตามนั้น หากไม่มีระดับแนวนอนใดถูกแตะ เหตุการณ์จะสิ้นสุดเมื่อถึงแนวกั้นแนวตั้ง
สามารถกำหนดระดับด้วยผลตอบแทนอย่างง่ายหรือผลตอบแทนลอการิทึมได้ แต่ทั้งสองแบบไม่ได้ให้ราคาเดียวกันเสมอเมื่อการเคลื่อนไหวมีขนาดใหญ่ เลือกนิยามผลตอบแทนและวิธีแปลงเป็นราคาให้สอดคล้องกันทั้งตอนสร้างเป้าหมายและตอนจำลองการซื้อขาย บทที่ 3 ของ Advances in Financial Machine Learning อธิบายการติดป้ายกำกับตามเหตุการณ์และการกำหนดแนวกั้นตามสเกลความผันผวน
สเกลความผันผวนต้องรู้ได้ตั้งแต่เริ่มเหตุการณ์
σᵢ ทำให้ระยะของแนวกั้นปรับตามความผันผวนที่เกี่ยวข้องกับเหตุการณ์นั้น อาจประมาณจากผลตอบแทนในอดีตหรือแบบจำลองที่กำหนดไว้ล่วงหน้า แต่ต้องใช้เฉพาะข้อมูลที่มีอยู่ไม่เกินเวลา tᵢ หากคำนวณความผันผวนโดยรวมช่วงเวลาในอนาคต ระดับแนวกั้นก็จะรั่วไหลของข้อมูลอนาคต แม้คุณจะสร้างฟีเจอร์อย่างระมัดระวังก็ตาม
การใช้เปอร์เซ็นต์คงที่เข้าใจง่าย แต่ระดับอาจอยู่ใกล้เกินไปในช่วงตลาดสงบและไกลเกินไปในช่วงตลาดผันผวน การปรับด้วยความผันผวนช่วยให้ระยะเปลี่ยนตามสภาวะตลาด แต่ σᵢ ไม่ใช่คำรับรองหรือคำทำนายความผันผวนในอนาคต เป็นเพียงส่วนหนึ่งของกติกาที่กำหนดไว้เพื่อสร้างป้ายกำกับ
เก็บราคาเริ่มต้น σᵢ ตัวคูณ เวลาเริ่มและเวลาสิ้นสุด สาเหตุที่สิ้นสุด และราคาที่ใช้ตัดสินว่ามีการแตะระดับไว้สำหรับแต่ละเหตุการณ์ ข้อมูลเหล่านี้ช่วยให้ทำซ้ำป้ายกำกับ ตรวจสอบระยะเวลาที่แตกต่างกัน และค้นหาการใช้ข้อมูลอนาคตโดยไม่ตั้งใจ
ตัวกระตุ้นเหตุการณ์กับป้ายกำกับตอบคนละคำถาม
ตัวกระตุ้นกำหนดว่าจะเริ่มติดตามเหตุการณ์เมื่อใด ตัวอย่างเช่น ตัวกรอง CUSUM อาจสร้างเหตุการณ์เมื่อการเคลื่อนไหวสะสมเกินเกณฑ์ แทนที่จะสร้างตัวอย่างใหม่ทุกแท่ง ตัวกระตุ้นตอบว่า “เริ่มสร้างตัวอย่างเมื่อใด” ขณะที่กติกา Triple Barrier ตอบว่า “หลังจากนั้นผลลัพธ์ใดเกิดก่อน”
อย่าสับสนตัวกระตุ้นกับป้ายกำกับหรือสัญญาณซื้อขาย การสร้างป้ายกำกับด้วยแนวกั้นใช้เส้นทางราคาในอนาคตเพื่อคำนวณตัวแปรเป้าหมาย y ซึ่งเหมาะกับการสร้างป้ายกำกับฝึกโมเดล แต่ฟีเจอร์และ σᵢ ของเหตุการณ์ต้องคำนวณจากข้อมูลที่ทราบในเวลาเริ่มต้น หลักการนี้อธิบายไว้ใน เอกสาร mlfinpy เรื่องการติดป้ายกำกับ และแสดงใน โค้ด implementation ของ Triple Barrier
ตัวอย่างแสดงว่าแต่ละแนวกั้นทำงานอย่างไร
สมมติ P₀ = $100, σᵢ = 2%, m_PT = 2, m_SL = 1.5 และกำหนดให้แนวกั้นแนวตั้งหมดลงเมื่อสิ้นสุดแท่งอนาคตแท่งที่สาม เมื่อใช้ผลตอบแทนอย่างง่าย ระดับบนคือ $104 และระดับล่างคือ $97
- เส้นทาง $100 → $104.50 แตะระดับบนในแท่งอนาคตแท่งแรก จึงได้ป้าย +1 แม้หลังจากนั้นราคาอาจกลับทิศ
- เส้นทาง $100 → $96.50 แตะระดับล่างในแท่งอนาคตแท่งแรกก่อนหมดเวลา จึงได้ป้าย −1
- เส้นทาง $100 → $101 → $102 → $101.50 ไม่แตะระดับแนวนอน เมื่อถึงสิ้นสุดแท่งอนาคตที่สามจึงหมดเวลาและได้ป้าย 0 ตามกติกาในบทความนี้ แม้ผลตอบแทนสุดท้ายจะเป็น +1.5%
ตัวอย่างสุดท้ายย้ำว่าเลขศูนย์หมายถึง “ยังไม่มีการแตะแนวกั้นแนวนอนก่อนหมดเวลา” ไม่ได้หมายความว่าผลตอบแทนเป็นศูนย์ บางวิธีถือว่ากำหนดเวลาสิ้นสุดเป็นเพียงจุดหยุดสังเกต แล้วจัดป้ายบวกหรือลบตามเครื่องหมายผลตอบแทนปลายทาง นั่นเป็นกติกาอีกแบบหนึ่ง ควรบันทึกไว้และไม่รวมป้ายที่เกิดจากกติกาคนละแบบเข้าด้วยกัน

ป้ายกำกับทิศทางต่างจากเมตาเลเบล
ในงานทำนายทิศทาง ป้าย +1 และ −1 บอกว่าราคาถึงระดับด้านใดก่อน ส่วน 0 ในบทความนี้แยกกรณีหมดเวลา โมเดลสามารถทำนายคลาสเหล่านี้จากฟีเจอร์ ณ จุดเริ่มต้นได้ แต่ป้ายดังกล่าวบอกผลลัพธ์เทียบกับแนวกั้นเท่านั้น ไม่ได้บอกโดยตัวมันเองว่าหลังหักค่าใช้จ่ายแล้วจะมีกำไร
การทำเมตาเลเบลเริ่มจากโมเดลหลักที่เสนอทิศทางสถานะ เช่น ซื้อหรือขาย จากนั้นใช้แนวกั้นกับผลตอบแทนที่คำนึงถึงทิศทางนั้น แล้วใช้โมเดลรองประเมินว่าควรรับสัญญาณหรือไม่ ความหมายของป้ายและแนวกั้นจึงขึ้นอยู่กับว่าการคำนวณใช้ด้านของสถานะด้วยหรือไม่ ระบุทิศทางที่เสนอในข้อมูลให้ชัดเจน อย่าตีความป้าย +1 ทุกแบบว่าเป็นคำแนะนำให้ซื้อ
ข้อมูลตลาดอาจไม่บอกลำดับการแตะระดับ
ข้อมูลราคาปิดอย่างเดียวอาจพลาดการแตะแนวกั้นระหว่างแท่ง เพราะราคาสูงสุดหรือต่ำสุดอาจผ่านระดับก่อนปิด แท่ง OHLC ที่มีทั้งจุดสูงสุดผ่านแนวกั้นด้านบนและจุดต่ำสุดผ่านแนวกั้นด้านล่างไม่ได้บอกว่าราคาแตะระดับใดก่อน จึงตัดสินผู้ชนะจากตัวเลขทั้งสี่ค่าไม่ได้อย่างน่าเชื่อถือ
หากลำดับการแตะมีผล ให้ใช้ข้อมูลที่ละเอียดพอจะตรวจสอบลำดับได้ หากไม่มีข้อมูลดังกล่าว ให้กำหนดกฎอนุรักษนิยมที่ทำซ้ำได้สำหรับกรณีแตะสองระดับในแท่งเดียว เช่น นับผลด้านที่เสียเปรียบ แล้วใช้กฎเดียวกันทุกเหตุการณ์ ระบุความกำกวมนี้ในวิธีการศึกษา อย่านำสมมติฐานเรื่องลำดับเสนอเสมือนเป็นสิ่งที่สังเกตได้จริง
กำหนดด้วยว่า “แตะ” หมายถึงรายการซื้อขาย ราคาเสนอซื้อขาย ราคาปิด หรือราคาที่ส่งคำสั่งได้ การกระโดดข้ามระดับ สเปรด และความล่าช้าในการส่งคำสั่งอาจทำให้จุดราคาที่เห็นทำรายการจริงไม่ได้
เหตุการณ์ที่ทับซ้อนกันต้องตรวจสอบตอนแบ่งข้อมูล
หลายเหตุการณ์อาจดำเนินพร้อมกันและใช้การเคลื่อนไหวในอนาคตช่วงเดียวกันคำนวณป้ายกำกับ การสุ่มแบ่งแถวเป็นชุดฝึกกับชุดทดสอบจึงอาจวางผลลัพธ์จากช่วงเวลาที่ทับซ้อนกันไว้ทั้งสองชุด ในการตรวจสอบ ให้ใช้ช่วงจริงตั้งแต่เริ่มเหตุการณ์จนแตะแนวกั้นหรือหมดเวลา และนำตัวอย่างฝึกที่มีช่วงผลลัพธ์ทับกับชุดทดสอบออกตามกติกาที่กำหนด
แนวทางนี้อธิบายเพิ่มเติมในคู่มือเรื่อง purged cross-validation และ embargo สำหรับอนุกรมเวลาในตลาดการเงิน การ purge ช่วยลดการรั่วไหลจากป้ายกำกับที่ทับซ้อนกัน แต่ไม่ได้แก้ฟีเจอร์ที่ใช้ข้อมูลอนาคต การเลือกโมเดลซ้ำหลายครั้ง หรือสมมติฐานราคาซื้อขายที่ไม่สมจริง
ต้นทุนเปลี่ยนความหมายของผลลัพธ์
เส้นทางการแตะแนวกั้นมักคำนวณจากการเปลี่ยนแปลงของราคาสินทรัพย์ แต่ผลของธุรกรรมจริงยังขึ้นกับสเปรด ค่าธรรมเนียม slippage เงินทุนสำหรับสัญญา perpetual ต้นทุนยืม และกติกาการจับคู่คำสั่ง หากต้องการจำแนกผลตอบแทนสุทธิ ให้รวมปัจจัยเหล่านี้ไว้ในนิยามผลตอบแทนเป้าหมายและสมมติฐานการส่งคำสั่งที่สมจริงก่อนคำนวณป้ายกำกับ
แม้ได้ป้ายบวกก็ไม่ได้ยืนยันว่ากลยุทธ์จะทำกำไร ผลลัพธ์ขึ้นกับความถี่ของเหตุการณ์ โมเดล ตลาด ขนาดสถานะ และคุณภาพการส่งคำสั่ง การติดป้ายกำกับจากข้อมูลย้อนหลังไม่ใช่คำรับรองผลหรือคำแนะนำในการซื้อขาย
บันทึกกติกาก่อนฝึกโมเดล
อธิบายวิธีสร้างเหตุการณ์ ที่มาของ P₀ และ σᵢ ตัวคูณและระยะเวลาที่ใช้ แหล่งราคาที่ใช้ตรวจจับการแตะ และแนวทางสำหรับกรณีแตะสองระดับ ระบุว่าการหมดเวลาได้ป้าย 0 เสมอหรือใช้เครื่องหมายของผลตอบแทนปลายทาง รวมถึงการคำนวณผลลัพธ์ก่อนหรือหลังต้นทุน
การบันทึกกติกาทำให้ชุดข้อมูลตรวจสอบและทำซ้ำได้ พารามิเตอร์ที่ต่างกันสร้างโจทย์ทำนายคนละแบบ แม้ใช้ข้อมูลดิบชุดเดียวกัน
คำถามที่พบบ่อย
Q1เมื่อหมดเวลา ป้ายกำกับต้องเป็นศูนย์เสมอหรือไม่?
ไม่จำเป็น บทความนี้เลือกเลขศูนย์เป็นคลาสแยกสำหรับเหตุการณ์ที่ไม่แตะแนวกั้นแนวนอนก่อนแนวกั้นแนวตั้ง วิธีอื่นอาจกำหนดป้ายตามเครื่องหมายของผลตอบแทนเมื่อหมดเวลา สิ่งสำคัญคือเลือกและใช้กติกาเดียวกันให้สม่ำเสมอ
Q2ตัวกระตุ้นเหตุการณ์ต่างจากวิธี Triple Barrier อย่างไร?
ตัวกระตุ้น เช่น CUSUM ระบุเวลาเริ่มต้นของตัวอย่าง ส่วนแนวกั้นทั้งสามระบุว่าเงื่อนไขผลลัพธ์ใดเกิดก่อนหลังเริ่มเหตุการณ์ ทั้งสองเป็นขั้นตอนคนละส่วนในการสร้างชุดข้อมูลฝึก
Q3ป้าย +1 รับประกันว่าจะกำไรหลังหักต้นทุนหรือไม่?
ไม่รับประกัน ป้ายนี้บอกเพียงว่าราคาแตะแนวด้านบนก่อนตามข้อมูลและกติกาที่กำหนด สเปรด ค่าธรรมเนียม เงินทุน slippage ขนาดสถานะ และวิธีส่งคำสั่งอาจเปลี่ยนผลสุทธิได้
แหล่งข้อมูลและการอ่านเพิ่มเติม
รายงานปัญหา
เราจะเตรียมอีเมลพร้อมลิงก์บทความนี้ Mark จะได้รับรายงานเมื่อคุณส่งอีเมลแล้วเท่านั้น
ตรวจสอบอย่างรวดเร็ว
อ่านคู่มือจบแล้ว ลองตอบคำถาม 3 ข้อ
คำถาม 01
หากเหตุการณ์แตะแนวกั้นด้านบนในแท่งอนาคตแท่งแรก ก่อนแนวกั้นด้านล่างและก่อนหมดเวลา จะได้ป้ายใด?
เลือกคำตอบเพื่อดูคำอธิบาย