คุณเจอระบบเทรดที่ทดสอบย้อนหลังแล้วได้กำไร 340% ใน 3 ปี · เส้นทุนพุ่งสวยเป็นเส้นตรง ขาดทุนหนักสุดแค่ไม่กี่เปอร์เซ็นต์
พอเอามาเทรดเงินจริง สามเดือนแรกติดลบ แล้วก็ไม่เคยกลับไปเหมือนในกราฟอีกเลย
เรื่องนี้เกิดซ้ำจนแทบเป็นพิธีกรรม และสาเหตุมักไม่ใช่ว่าตลาดเปลี่ยน แต่เป็นเพราะตัวการทดสอบเองมีรูรั่วตั้งแต่ต้น · บทความนี้จะพาดูว่ารูรั่วอยู่ตรงไหน และจะอุดยังไงให้ตัวเลขที่ได้พอเชื่อถือได้จริง
Backtest คือการจำลอง ไม่ใช่การพยากรณ์
Backtest คือการเอากฎการเทรดที่เขียนไว้ชัดเจนไปรันกับข้อมูลราคาในอดีต เพื่อดูว่าถ้าทำตามกฎนี้ทุกครั้งโดยไม่ใช้อารมณ์ ผลจะออกมาเป็นยังไง
สิ่งที่มันบอกได้คือ "กฎชุดนี้เคยทำงานได้ในสภาพตลาดแบบที่ผ่านมาหรือไม่" · สิ่งที่มันบอกไม่ได้เลยคือ "อนาคตจะกำไรเท่าไหร่"
ที่สำคัญกว่านั้น — ระบบที่ backtest แล้วแย่ ตัดทิ้งได้เลยอย่างมั่นใจ · แต่ระบบที่ backtest แล้วสวย ยังพิสูจน์อะไรไม่ได้ จนกว่าจะผ่านการตรวจสอบว่าความสวยนั้นไม่ได้มาจากรูรั่วสี่ข้อต่อไปนี้
รูรั่วที่ 1 — ระบบที่แอบเห็นอนาคต
อันนี้ร้ายที่สุดเพราะมองด้วยตาเปล่าไม่เห็น แต่ทำให้ผลทดสอบดีขึ้นแบบมหาศาล
ตัวอย่างที่เจอบ่อยที่สุดคือ ตัดสินใจเข้าออเดอร์ด้วยราคาปิดของแท่งเทียน แล้วบันทึกว่าเข้าที่ราคาเปิดของแท่งนั้น · ในความจริงคุณจะรู้ราคาปิดก็ต่อเมื่อแท่งนั้นจบไปแล้ว · ระบบจึงได้เปรียบแบบที่ในชีวิตจริงไม่มีวันได้
อีกแบบที่พบบ่อยคือใช้ตัวเลขที่ถูกปรับปรุงย้อนหลัง เช่นราคาหุ้นที่ปรับด้วยข้อมูลปันผลซึ่งประกาศทีหลัง หรือตัวเลขเศรษฐกิจที่ถูกแก้ตัวเลขย้อนหลังหลังประกาศครั้งแรก
วิธีตรวจง่ายที่สุดคือถามตัวเองทุกจุดที่ระบบตัดสินใจว่า "ข้อมูลที่ใช้ตรงนี้ ผมรู้มันจริง ๆ ตอนนั้นหรือเปล่า" · ถ้าตอบไม่ได้ทันที แปลว่ามีรูรั่ว
รูรั่วที่ 2 — ข้อมูลที่เหลือแต่ผู้ชนะ
ถ้าทดสอบระบบกับรายชื่อสินทรัพย์ที่ยังเทรดได้ในวันนี้ เท่ากับตัดตัวที่ล้มหายไปแล้วออกจากการทดสอบทั้งหมด — หุ้นที่ถูกเพิกถอน กองทุนที่ปิดตัว เหรียญที่ตายไป
ขนาดของปัญหานี้ถูกวัดไว้ชัดเจนในงานวิจัยของ Carhart, Carpenter, Lynch และ Musto (2002) ที่ตีพิมพ์ใน Review of Financial Studies · ทีมวิจัยตามดูกองทุนหุ้น 2,071 กอง ด้วยข้อมูลรายเดือนตั้งแต่ ม.ค. 1962 ถึง ธ.ค. 1995 โดยมี 1,346 กองที่ยังอยู่ถึงวันสุดท้าย
ตัวเลขน่าสนใจตรงที่ ยิ่งช่วงข้อมูลยาว ส่วนเกินยิ่งบวม · ทดสอบย้อนหลัง 1 ปีเพี้ยนแค่ 0.07% ต่อปี · พอยืดเป็น 5 ปีกลายเป็น 0.37% · และถ้ายาวเกิน 15 ปี ส่วนเกินขึ้นไปราว 1% ต่อปี
สาเหตุก็ตรงไปตรงมา — กองที่หายไปไม่ได้หายแบบสุ่ม แต่ทำผลงานแย่กว่ากองที่รอดราว 4% ต่อปี · และกองทุนหายไปเฉลี่ยปีละ 3.6% (ควบรวม 2.2% ปิดตัว 1.0%) · ยิ่งทดสอบยาว ยิ่งสะสมตัวแย่ที่ถูกลบทิ้งมากขึ้น
สำหรับคนเทรดทั่วไป ทางออกไม่ได้ยาก: อย่าทดสอบเฉพาะสินทรัพย์ที่ตอนนี้ดูดี · ถ้าทดสอบกับเหรียญคริปโต ต้องใส่เหรียญที่ตายไปแล้วด้วย · ถ้าทดสอบกับหุ้น ต้องใช้รายชื่อสมาชิกดัชนี ณ เวลานั้นจริง ๆ ไม่ใช่รายชื่อวันนี้
รูรั่วที่ 3 — ต้นทุนที่พลิกผลได้ทั้งระบบ
ข้อนี้ฟังดูจุกจิก แต่เป็นข้อที่ฆ่าระบบทิ้งได้ทั้งระบบ โดยเฉพาะระบบที่เข้าออกบ่อย
งานวิจัยของ Novy-Marx และ Velikov (2016) ใน Review of Financial Studies ตรวจกลยุทธ์ลงทุนที่เคยมีงานวิจัยรองรับ 23 กลยุทธ์ ด้วยข้อมูลตั้งแต่ ก.ค. 1963 ถึง ธ.ค. 2012 แล้วคำนวณใหม่โดยหักต้นทุนการซื้อขายจริง
ตัวอย่างที่ชัดที่สุดคือกลยุทธ์กลุ่มที่อาศัยการกลับตัวระยะสั้น ซึ่งก่อนหักต้นทุนให้ผล +0.98% ต่อเดือน · พอหักต้นทุนการซื้อขายจริงเข้าไป กลายเป็น −0.80% ต่อเดือน · พลิกจากกลยุทธ์ที่ดูน่าลงทุนเป็นเครื่องเผาเงินทันที
และในกลุ่มกลยุทธ์ที่หมุนพอร์ตเกิน 50% ต่อเดือน มีเพียง 2 ตัวเท่านั้นที่ยังเหลือกำไรอย่างมีนัยสำคัญ หลังหักต้นทุน
บทเรียนสำหรับการทดสอบระบบของตัวเองคือ ใส่ต้นทุนให้ครบตั้งแต่แรก ทั้งส่วนต่างราคาซื้อขาย ค่าธรรมเนียม ค่าถือข้ามคืน และเผื่อราคาที่เลื่อนจากจุดที่ตั้งใจ · แล้วตั้งให้แย่กว่าที่คิดเล็กน้อย เพราะช่วงตลาดผันผวนต้นทุนจะกว้างกว่าปกติเสมอ
รูรั่วที่ 4 — ยิ่งจูนยิ่งสวย แต่ยิ่งพัง
เมื่อทดสอบแล้วผลไม่สวย คนส่วนใหญ่จะเริ่มขยับค่าพารามิเตอร์ — เปลี่ยนเส้นค่าเฉลี่ยจาก 20 เป็น 21 เป็น 23 · ขยับจุดตัดขาดทุน · เพิ่มเงื่อนไขกรอง · ทำไปเรื่อย ๆ จนกราฟสวย
ปัญหาคือกระบวนการนี้ไม่ได้ค้นหาระบบที่ดี แต่กำลังค้นหาชุดตัวเลขที่บังเอิญเข้ากับอดีตชุดนี้พอดี
งานวิจัยของ Bailey, Borwein, López de Prado และ Zhu (2014) ที่ตีพิมพ์ใน Notices of the American Mathematical Society คำนวณไว้ชัดว่า ถ้ามีข้อมูลย้อนหลังเพียง 5 ปี ไม่ควรทดลองเกิน 45 รูปแบบ · เพราะเกินกว่านั้น ระบบที่ไม่มีความสามารถทำกำไรจริงเลย ก็สามารถให้ผลทดสอบที่ดูดีได้จากความบังเอิญล้วน ๆ
ที่หนักกว่านั้นคือข้อสรุปว่า เมื่อข้อมูลราคามีความต่อเนื่องในตัว "ยิ่งปรับให้เข้ากับอดีตมากเท่าไหร่ ผลในอนาคตยิ่งแย่ลงเท่านั้น" · การจูนจึงไม่ใช่แค่เสียเปล่า แต่ทำให้ผลจริงแย่ลงกว่าเดิม
แบ่งข้อมูลก่อนเริ่ม แล้วอย่าแตะส่วนที่กันไว้
วิธีป้องกันที่ใช้ได้จริงและทำได้ทันทีคือ แบ่งข้อมูลเป็นส่วน ๆ ตั้งแต่ก่อนเริ่มทดสอบ
ส่วนแรกใช้พัฒนาและจูนได้เต็มที่ · ส่วนที่สองกันไว้ห้ามแตะ จนกว่าจะสรุปกฎสุดท้ายแล้ว แล้วค่อยเอามาทดสอบ ครั้งเดียว · ถ้าผลตรงนั้นแย่ แปลว่าระบบไม่ผ่าน ไม่ใช่สัญญาณให้กลับไปจูนใหม่
ประโยคสุดท้ายนี้สำคัญที่สุด เพราะทันทีที่กลับไปจูนเพราะเห็นผลของส่วนที่กันไว้ ส่วนนั้นก็กลายเป็นข้อมูลพัฒนาไปแล้ว และหมดคุณค่าในการเป็นด่านตรวจทันที
ด่านสุดท้ายคือเดินระบบไปข้างหน้าด้วยเวลาจริง ในบัญชีทดลองหรือไม้ขนาดเล็ก · ตรงนี้จะเจอสิ่งที่ backtest ไม่มีวันจำลองได้ ทั้งราคาที่เลื่อน คำสั่งที่ไม่ได้ราคาที่ตั้งใจ และความจริงที่ว่าคนเรากดตามระบบยากกว่าที่คิดมาก
เช็กลิสต์ก่อนเชื่อผลทดสอบ
ก่อนจะตัดสินใจอะไรกับตัวเลขที่ได้ ลองไล่คำถามเหล่านี้: กฎทุกข้อชัดพอให้คนอื่นรันแล้วได้ผลเท่ากันหรือยัง · ทุกจุดตัดสินใจใช้เฉพาะข้อมูลที่รู้ ณ เวลานั้นจริงไหม · ใส่ต้นทุนครบและเผื่อไว้แย่กว่าจริงหรือยัง · จำนวนไม้มากพอจะเชื่อทางสถิติไหม · และลองปรับค่าพารามิเตอร์ไปมาแล้วผลยังใช้ได้อยู่หรือเปล่า
ข้อสุดท้ายเป็นตัวคัดที่ดีที่สุด — ระบบที่ทนทานจะยังทำงานได้เมื่อขยับตัวเลขไปนิดหน่อย · แต่ระบบที่ใช้ได้เฉพาะค่า 20 พอเปลี่ยนเป็น 19 หรือ 21 แล้วพัง คือระบบที่จูนเข้ากับอดีต ไม่ใช่ระบบที่จับอะไรได้จริง
สิ่งที่ต้องจำ
- Backtest ใช้คัดระบบที่แย่ทิ้ง ไม่ใช่ใช้ยืนยันว่าระบบดี · ผลสวยยังพิสูจน์อะไรไม่ได้จนกว่าจะอุดรูรั่วครบ
- ✅ ถามทุกจุดตัดสินใจว่า "ตอนนั้นรู้ข้อมูลนี้จริงไหม" — ใช้ราคาปิดตัดสินใจแล้วบันทึกว่าเข้าที่ราคาเปิดคือการแอบเห็นอนาคต
- ข้อมูลที่เหลือแต่ผู้รอดทำให้ตัวเลขบวมขึ้นตามความยาว — Carhart และคณะ (2002) วัดได้ 0.07%/ปี ที่ 1 ปี · 0.37% ที่ 5 ปี · ราว 1% เมื่อเกิน 15 ปี
- ✅ ต้นทุนพลิกผลได้ทั้งระบบ — Novy-Marx & Velikov (2016) พบกลยุทธ์ที่ได้ +0.98% ต่อเดือน เหลือ −0.80% หลังหักต้นทุนจริง
- ยิ่งจูนยิ่งอันตราย — ข้อมูล 5 ปีไม่ควรลองเกิน 45 รูปแบบ (Bailey และคณะ 2014) · เกินนั้นผลสวยเกิดจากความบังเอิญได้
- ✅ กันข้อมูลส่วนหนึ่งไว้ตั้งแต่ก่อนเริ่ม แล้วทดสอบครั้งเดียว · กลับไปจูนเมื่อไหร่ ด่านตรวจนั้นหมดค่าทันที
- ระบบที่ดีต้องทนการขยับค่าพารามิเตอร์ — ใช้ได้เฉพาะตัวเลขเป๊ะ ๆ ตัวเดียวคือสัญญาณว่าจูนเข้ากับอดีต
คำเตือน: บทความนี้จัดทำขึ้นเพื่อให้ความรู้เรื่องวิธีทดสอบระบบเทรดย้อนหลังเท่านั้น ไม่ใช่คำแนะนำการลงทุนหรือการชี้นำให้ซื้อขายสินทรัพย์ใด ตัวเลขจากงานวิจัยที่อ้างถึงเป็นผลการศึกษาในช่วงเวลาและตลาดที่ระบุไว้ ไม่ได้แปลว่าจะเกิดผลแบบเดียวกันในตลาดอื่นหรือช่วงเวลาอื่น ผลการทดสอบย้อนหลังไม่ว่าจะดีเพียงใดก็ไม่ได้รับประกันผลลัพธ์ในอนาคต การซื้อขายสินทรัพย์ทางการเงินมีความเสี่ยงที่จะสูญเสียเงินลงทุน ผู้อ่านควรศึกษาข้อมูลและประเมินความเสี่ยงด้วยตนเองก่อนตัดสินใจ