
Overfitting คือหนึ่งในกับดักที่พบบ่อยที่สุดในโลกการเงินเชิงปริมาณ (Quantitative Finance) มันเกิดขึ้นเมื่อโมเดลไปจดจำรายละเอียดเฉพาะเจาะจงของข้อมูลตลาดในอดีต แทนที่จะเรียนรู้กฎเกณฑ์สากลจริงๆ ในการทำกำไร แน่นอนว่าผล Backtest ย้อนหลังบางอันอาจจะดูสวยหรูจนน่าทึ่ง แต่ทันทีที่คุณเอาข้อมูลตลาดจริงในอนาคตใส่เข้าไป โมเดลพวกนี้ก็จะเริ่มทำเงินรั่วไหลทันที
Ⅰ. Overfitting คืออะไรกันแน่?
พูดง่ายๆ ก็คือ โมเดลไปเรียนรู้ 'สัญญาณรบกวน' (Noise) ที่เกิดขึ้นแบบสุ่มในข้อมูลอดีตมากเกินไป แทนที่จะจับรูปแบบ (Pattern) ที่เสถียร ผลลัพธ์คือมันทำงานได้ยอดเยี่ยมมากกับชุดข้อมูลที่ใช้สอน (Training set) แต่ประสิทธิภาพจะดิ่งลงเหวทันทีเมื่อต้องเจอกับข้อมูลใหม่ๆ ที่ไม่เคยเห็นมาก่อน
ทำไมเรื่องนี้ถึงเกิดขึ้น?
อย่างแรก ยิ่งข้อมูลย้อนหลังมีมากเท่าไหร่ ก็ยิ่งมีโอกาสสูงที่เราจะไปเจอความบังเอิญเข้า เช่น "เฮ้ย ปัจจัยชุดนี้รวมกันแล้วดันทำกำไรได้ในอดีตเฉยเลย"
อย่างที่สอง โมเดลบางตัวเก่งมากในการจับสัญญาณที่เป็น Long-tail และโมเดล Deep learning ก็มีความจำดีสุดๆ ผลที่ตามมาคืออะไรน่ะเหรอ? โมเดลจำ "บทเรียน" ในอดีตได้แม่นยำมาก แต่พอเปลี่ยนช่วงเวลาปุ๊บก็พังไม่เป็นท่าทันที
อย่างที่สาม เทรดเดอร์สาย Quant มักจะปรับแต่งค่าพารามิเตอร์ไปเรื่อยๆ เพื่อให้ "เอาใจข้อมูลในอดีต" เพียงเพื่อให้กราฟ Backtest ออกมาดูสวยหรู มันเหมือนกับการสุ่มเดาคำตอบไปเรื่อยๆ จนกว่าจะตรงกับข้อสอบเก่าชุดนั้นเป๊ะๆ สุดท้ายแล้ว กลยุทธ์ที่คุณเลือกมาก็มีโอกาสสูงมากที่จะถูกสร้างมาเพื่ออดีตเท่านั้น มากกว่าที่จะคาดการณ์อนาคตได้จริงๆ

ที่มา: Claude Code
ตัวอย่างเช่น: เราดึงข้อมูลตลาด S&P 500 ตั้งแต่ปี 2016 โดยใช้ Claude Code และข้อมูลจาก OpenD ของ moomoo เมื่อเรากำหนดช่วงการฝึกฝน (Training window) เป็นปี 2023–2024 โมเดลมักจะเลือกปัจจัยระยะสั้นในช่วง 5 วัน แต่เมื่อเราฝึกฝนด้วยชุดข้อมูลทั้งหมดตั้งแต่ปี 2016 เป็นต้นมา มันกลับให้ความสำคัญกับปัจจัยระยะยาวในช่วง 10 ถึง 60 วัน สิ่งนี้แสดงให้เห็นทางอ้อมว่าปัจจัยที่สอดคล้องกับช่วงเวลาต่างๆ นั้นแตกต่างกัน ดังนั้นการใช้ปัจจัยจากช่วงเวลาใดช่วงหนึ่งเพียงอย่างเดียวมาทำนายอนาคตจึงมีแนวโน้มที่จะคลาดเคลื่อน
II. วิธีจัดการกับ Overfitting?
① วิธีที่ 1: ใช้โมเดลที่มีความสามารถในการต้านทาน Overfitting โดยธรรมชาติ เช่น Ridge Regression
โมเดล Quant มีหลายประเภท ตั้งแต่โมเดลเชิงเส้นแบบดั้งเดิม Machine learning แบบคลาสสิก ไปจนถึง Deep learning ยุคใหม่ (ซึ่ง moomoo insights จะมาเจาะลึกในภายหลัง) แม้ว่าโมเดลที่ทรงพลังจะสามารถจับข้อมูลได้มากกว่า แต่พวกมันก็เสี่ยงต่อการเกิด Overfitting ได้ง่ายกว่ามากเช่นกัน

เราใช้ Ridge Regression เพราะมันมีความสามารถในการต้านทานการรบกวนได้ดี ถ้าปัจจัยหนึ่งได้ผลในอดีตเพียงเพราะความบังเอิญ (Noise) โมเดล Linear regression แบบ มาตรฐาน จะให้ค่าน้ำหนักมหาศาลเพื่อพยายามปรับตัวให้เข้ากับการเคลื่อนไหวของราคาในอดีต แต่ Ridge Regression จะมีบทลงโทษสำหรับค่าน้ำหนักที่สูงเกินไป โดยบังคับให้ค่าสัมประสิทธิ์ที่ใหญ่เกินขนาดหดตัวลง สำหรับปัจจัยที่เกิดจากความบังเอิญ ค่าน้ำหนักของมันจะถูกบีบจนไม่สามารถส่งผลต่อการทำนายได้
② วิธีที่ 2: ทำการคัดกรองเบื้องต้นจากชุดปัจจัยจำนวนมหาศาลโดยใช้วิธีง่ายๆ ก่อน
เราใช้ปัจจัย Alpha 158 ของ Qlib จาก Microsoft สำหรับงานนี้ (ทริคระดับ โปร: ถ้าคุณมี Claude Code คุณสามารถสั่งให้มันดึงปัจจัย Qlib 158 มาเพื่อทำการทดสอบได้เลย)
เนื่องจากปัจจัยทั้ง 158 ตัวนี้มีความซ้ำซ้อนกันค่อนข้างมาก เราจึงจัดกลุ่มพวกมันออกเป็น 27 หมวดหมู่ จากนั้นเราให้ Claude Code คำนวณค่า Information Coefficient (IC) ของทั้ง 27 กลุ่มนี้ โดยใช้ข้อมูล S&P 500 ย้อนหลัง 10 ปีที่ดึงผ่าน OpenD แล้วเลือกปัจจัยที่โดดเด่นที่สุดจากแต่ละกลุ่มมา ทำให้เราได้ปัจจัยทั้งหมด 27 ตัวเพื่อป้อนเข้าสู่โมเดล
หมายเหตุ: IC คือตัวชี้วัดทาง Quant ทั่วไปที่แสดงถึงค่าความสัมพันธ์ (Correlation) ระหว่างค่าของปัจจัยกับผลตอบแทนของหุ้นในงวดถัดไป
ถ้าเราไม่คัดเลือกปัจจัยจากคลังข้อมูล โมเดลบางตัวอาจจะไปให้ความสำคัญกับปัจจัยที่คล้ายคลึงกันมาก ซึ่งเท่ากับเป็นการใช้ข้อมูลที่ทับซ้อนกันมาจับสัญญาณรบกวน (Noise) ในช่วงฝึกฝน ดังนั้นนัก Quant จึงต้องทำการคัดกรองเบื้องต้นเพื่อตัดปัจจัยที่มีความสัมพันธ์กันสูงและซ้ำซ้อนออกไป ซึ่งเป็นการช่วยป้องกันปัญหา Overfitting ทางอ้อมด้วย
จากการใช้ Ridge Regression ร่วมกับปัจจัยทั้ง 27 ตัว ผลการทำ Backtest แสดงให้เห็นว่ากลุ่ม Q5 (หุ้น 20% แรกที่มีคะแนนโมเดลสูงสุด) ทำผลตอบแทนทบต้นต่อปีได้ถึง 45% หมายเหตุ: ช่วงเวลาที่ทำ Backtest คือปี 2025–2026 ซึ่งตรงกับช่วงตลาดกระทิงที่ขับเคลื่อนด้วย AI ผลตอบแทนในอดีตไม่ได้การันตีว่าจะมีผลตอบแทนที่เหมือนกันในอนาคต

③ วิธีที่ 3: ใช้ Rolling Windows สำหรับ Cross-Validation
ในการทำ Regression ข้างต้น เราไม่ได้แบ่งข้อมูล 10 ปีออกเป็นหลายส่วนเพื่อเช็คความเสถียรของโมเดล Ridge Regression คราวนี้เรามาลองแบ่งข้อมูลออกเป็น 7 ส่วนเพื่อทำ Backtest ดู และนี่คือผลลัพธ์ที่ได้:

อย่างที่คุณเห็น ผลการทดสอบจากทั้ง 7 ช่วงเวลาแสดงให้เห็นว่าโมเดลสามารถสร้างผลตอบแทนส่วนเพิ่ม (Excess Returns) ชนะดัชนีอ้างอิงได้ถึง 5 ช่วง โดยเฉพาะในช่วงตลาดกระทิงที่ขับเคลื่อนด้วยสภาพคล่องในครึ่งหลังของปี 2020 ผลงานนั้นโดดเด่นมาก และไม่มีช่วงไหนที่แพ้ตลาดอย่างมีนัยสำคัญเลย นี่หมายความว่าโมเดลมีความสามารถในการปรับตัวเข้ากับช่วงเวลาและรูปแบบตลาดที่หลากหลายได้ค่อนข้างดี
ถ้าคุณยังไม่รู้วิธีรัน Backtest สาย Quant ด้วยตัวเอง คุณสามารถลองใช้ฟีเจอร์ Backtest ที่มีมาให้ใน moomoo ได้ โดยในแอปบนคอมพิวเตอร์จะมีส่วน Quant โดยเฉพาะ ส่วนในแอปบนมือถือ คุณสามารถป้อนคำสั่ง Backtest ผ่าน Moomoo AI หรือใช้ฟีเจอร์คำสั่งซื้อขายขั้นสูงเพื่อลองเทรดด้วยอัลกอริทึมพื้นฐานได้

ข้อความสงวนสิทธิ์: Moomoo Technologies Inc. นำเสนอเนื้อหานี้เพื่อวัตถุประสงค์ในการให้ข้อมูลและการศึกษาเท่านั้นอ่านเพิ่มเติม
ความคิดเห็น (2)
เพื่อแสดงความคิดเห็น
35
26
