แบ็คเทสต์คือคำโกหกที่น่าเชื่อถือที่สุดในการเทรด เส้นกราฟเงินทุนพุ่งขึ้นไปทางขวา อัตราชนะดูดีมีสุขภาพ และการขาดทุนหนัก (drawdown) ก็ดูเหมือนจะรับมือไหว แล้วพอเอาไปเทรดจริง ความได้เปรียบก็ค่อยๆ หายไปอย่างเงียบๆ นี่ไม่ใช่เรื่องโชคร้าย แต่แบ็คเทสต์มักประเมินผลการเทรดจริงสูงเกินจริงในรูปแบบที่เป็นระบบและคาดเดาได้ และเมื่อคุณรู้จักรูปแบบความผิดพลาดเหล่านี้แล้ว คุณจะไม่แปลกใจกับมันอีกต่อไป
บทความนี้ตั้งสมมติฐานว่าคุณรู้วิธีรันแบ็คเทสต์อยู่แล้ว หากยังไม่รู้ ให้เริ่มจากคู่มือ วิธีแบ็คเทสต์กลยุทธ์การเทรด ซึ่งครอบคลุมเรื่องกลไก ขนาดตัวอย่าง และการทดสอบล่วงหน้า ในที่นี้เราจะเจาะลึกลงไปในคำถามที่ยากกว่านั้น นั่นคือทำไมตัวเลขที่แบ็คเทสต์ให้มาจึงมักจะดีกว่าตัวเลขที่คุณจะทำได้จริงเสมอ
แบ็คเทสต์คือกรณีที่ดีที่สุด ไม่ใช่การประมาณการ
ปัญหาหลักคือแบ็คเทสต์ไม่ใช่การวัดผลที่เป็นกลาง มันคือผลลัพธ์จากกระบวนการที่คุณตัดสินใจเล็กๆ น้อยๆ นับสิบครั้ง และการตัดสินใจแต่ละครั้งก็มีโอกาสที่จะแอบใส่ความมองโลกในแง่ดีเข้าไปในผลลัพธ์ คุณเลือกตลาด เลือกช่วงเวลา เลือกอินดิเคเตอร์ เลือกพารามิเตอร์ เลือกจุดออก แต่ละการตัดสินใจถูกทำขึ้นโดยมีความรู้บางส่วนว่าอะไรใช้ได้ผล ความรู้นั้นแหละคือสิ่งปนเปื้อน
ในทางสถิติ ผลลัพธ์ที่คุณเก็บไว้ไม่ใช่การสุ่มตัวอย่างแบบสุ่มจากการกระจายของผลลัพธ์ที่เป็นไปได้ทั้งหมด แต่มันคือค่าสูงสุดจากการสุ่มตัวอย่างที่มีสัญญาณรบกวนมากมาย เมื่อคุณเลือกสิ่งที่ดีที่สุดจากร้อยสิ่ง คุณไม่ได้กำลังวัดทักษะ แต่กำลังวัดหางบนสุดของความโชคดี ต่อไปนี้คือรายการกลไกที่ก่อให้เกิดอคติที่ผลักตัวเลขให้สูงขึ้นนั้น
ห้าวิธีที่แบ็คเทสต์ประเมินผลการเทรดจริงสูงเกินจริง
| อคติ | มันทำให้ผลลัพธ์พองตัวอย่างไร | จะจับได้อย่างไร | วิธีแก้ |
|---|---|---|---|
| การอยู่รอด (Survivorship) | ทดสอบเฉพาะสินทรัพย์ที่อยู่รอดมาจนถึงวันนี้ | ตรวจสอบว่าจักรวาลข้อมูลเป็นแบบ point-in-time หรือไม่ | ใช้ชุดข้อมูลที่รวมหุ้นที่ถูกถอดออกจากตลาดด้วย |
| การมองไปข้างหน้า (Look-ahead) | ใช้ข้อมูลที่ไม่สามารถรู้ได้ในเวลาที่เทรดจริง | ตรวจสอบสัญญาณทุกตัวย้อนกลับไปที่ timestamp ของมัน | เลื่อนข้อมูลให้ล่าช้า; เติมข้อมูลที่แท่งถัดไป |
| การ Overfitting | ตัวที่ดีที่สุดจากการรันปรับแต่งหลายครั้งดูดีเพราะโชค | นับจำนวนพารามิเตอร์และจำนวนครั้งที่ทดลอง | ใช้พารามิเตอร์น้อยลง; ทดสอบแบบ out-of-sample |
| การมองข้ามต้นทุน | ละเลยสเปรด สลิปเพจ ค่าคอมมิชชัน | คำนวณทุกอย่างใหม่หลังหักต้นทุนจริง | จำลองต้นทุนแบบ round-trip ต่อการเทรดหนึ่งครั้ง |
| การขึ้นอยู่กับสภาวะตลาด (Regime) | เข้ารหัสยุคตลาดหนึ่งช่วงให้เป็นกฎของตลาด | สังเกตอัตราดอกเบี้ยและสภาวะความผันผวนที่ทดสอบ | ทดสอบข้ามตลาดกระทิง หมี และช่วงความผันผวนสูง |
ห้าวิธีที่ตัวเลขโกหกคุณ
1. อคติการอยู่รอด (Survivorship Bias): คุณทดสอบแค่ผู้ชนะ
สมมติว่าคุณแบ็คเทสต์ไอเดียง่ายๆ: ซื้อเมื่อราคาลง (buy the dip) ในหุ้น S&P 500 คุณดึงรายชื่อสมาชิกดัชนีปัจจุบัน ดาวน์โหลดประวัติราคา และจำลองการซื้อทุกครั้งที่ราคาลง 10% ผลลัพธ์ออกมายอดเยี่ยม เพราะกลยุทธ์ดูเหมือนจะฟื้นตัวได้เสมอ แต่ความจริงไม่ใช่แบบนั้น มันดูเป็นแบบนั้นก็เพราะทุกบริษัทในการทดสอบของคุณอยู่รอดมาจนอยู่ในดัชนีทุกวันนี้เท่านั้น
ดัชนี S&P 500 เปลี่ยนบริษัทประมาณ 20 ถึง 25 บริษัทต่อปี ตลอดแบ็คเทสต์ 20 ปี นั่นคือการเปลี่ยนแปลงสมาชิกหลายร้อยครั้งที่คุณไม่เคยเห็น การทดสอบของคุณไม่เคยซื้อตอนที่ Lehman Brothers, Bear Stearns, Enron หรือ Washington Mutual ราคาตกลง เพราะพวกมันตกลงและตกลงต่อไปเรื่อยๆ จนกระทั่งถูกถอดออกจากตลาดและลบออกจากดัชนี กลยุทธ์นี้ไม่เคยเผชิญกับผู้แพ้เลย ข้อสรุปที่ว่า "ราคาที่ตกลงจะฟื้นตัวเสมอ" ถูกฝังไว้ตั้งแต่การสร้างจักรวาลข้อมูล ไม่ใช่ค้นพบจากข้อมูลจริง วิธีแก้ที่ซื่อสัตย์เพียงอย่างเดียวคือการใช้ข้อมูลแบบ point-in-time ที่รวมชื่อที่ถูกถอดออกจากตลาดด้วย
2. อคติการมองไปข้างหน้า (Look-Ahead Bias): การใช้ข้อมูลที่คุณยังไม่มี
อคติการมองไปข้างหน้าหมายถึงการที่การจำลองของคุณใช้ข้อมูลที่ยังไม่มีให้ใช้ ณ ขณะที่เทรด รูปแบบที่ละเอียดอ่อนและพบบ่อยที่สุดคือความผิดพลาดด้านเวลา สมมติว่ากฎของคุณคือ "ซื้อเมื่อราคาปิดรายวันตัดขึ้นเหนือเส้นค่าเฉลี่ยเคลื่อนที่ 50 วัน" และแบ็คเทสต์ของคุณเข้าซื้อที่ราคาปิดของวันเดียวกันนั้น ในความเป็นจริงคุณไม่สามารถรู้ราคาปิดได้จนกว่าเซสชันจะจบลง และเมื่อถึงตอนนั้นราคาเดียวที่คุณสามารถเทรดได้คือราคาเปิดของวันถัดไป ซึ่งอาจกระโดดสวนทางกับคุณ การเข้าซื้อที่ราคาสัญญาณแทนที่จะเป็นราคาที่มีให้ใช้ได้จริงในลำดับถัดไป สามารถสร้างความได้เปรียบที่ไม่มีอยู่จริงขึ้นมาได้
อีกรูปแบบคลาสสิกอย่างหนึ่งคือข้อมูลที่ถูกปรับปรุงใหม่ กำไรของบริษัทมักถูกแก้ไขทบทวนภายหลัง หากแบ็คเทสต์ของคุณใช้ตัวเลข EPS ฉบับสุดท้ายที่ถูกปรับปรุงแล้วซึ่งอยู่ในฐานข้อมูลทุกวันนี้ นั่นหมายความว่ามันกำลังเทรดด้วยตัวเลขที่ไม่มีใครรู้ ณ วันที่เทรดจริง เพราะตอนนั้นมีเพียงตัวเลขที่รายงานครั้งแรกเท่านั้นที่มีอยู่ กฎนี้พูดง่ายแต่ผิดพลาดได้ง่ายเช่นกัน: ข้อมูลนำเข้าทุกตัวต้องถูกเลื่อนให้ตรงกับสิ่งที่รู้ได้จริง ณ เวลานั้น
3. การ Overfitting และกับดักการเปรียบเทียบหลายครั้ง
คู่มือเรื่องกลไกได้กล่าวถึงการ curve-fitting ขั้นพื้นฐานไปแล้ว แต่ปัญหาที่ลึกกว่านั้นคือเรื่องสถิติ หากคุณทดสอบชุดพารามิเตอร์ 200 ชุด และตัดสินแต่ละชุดด้วยเกณฑ์นัยสำคัญ 5% จะมีประมาณ 10 ชุดที่ดูเหมือน "มีนัยสำคัญ" เพียงเพราะความบังเอิญล้วนๆ แม้ว่าจะไม่มีชุดใดมีความได้เปรียบจริงเลยก็ตาม การเลือกตัวที่ดูดีที่สุดไม่ใช่การค้นพบตัวที่ดี แต่คือการค้นพบตัวที่โชคดีที่สุด
กลยุทธ์ที่มีพารามิเตอร์ที่ปรับแต่งแล้ว 12 ตัว มีองศาอิสระมากพอที่จะปรับให้เข้ากับข้อมูลราคาในอดีตเกือบทุกชุด มันไม่ได้เรียนรู้กฎเกี่ยวกับตลาด แต่มันจดจำสัญญาณรบกวนเฉพาะเจาะจงของตัวอย่างของคุณเท่านั้น หลักการที่ซื่อสัตย์ตามมาโดยตรง: ยิ่งคุณปรับแต่งพารามิเตอร์มากขึ้นและทดลองชุดค่าผสมมากขึ้นเท่าไร คุณก็ควรหักลดผลลัพธ์ให้มากขึ้นเท่านั้น ระบบสามพารามิเตอร์ที่สะอาดซึ่งทดสอบเพียงครั้งเดียวสมควรได้รับความไว้วางใจมากกว่าระบบสิบสองพารามิเตอร์ที่เป็นผู้ชนะจากการปรับแต่งนับพันครั้ง
4. การมองข้ามต้นทุนการทำธุรกรรม
สเปรด สลิปเพจ และค่าคอมมิชชันถูกเรียกเก็บต่อการเทรดหนึ่งครั้ง ดังนั้นมันจึงทบต้นตามความถี่ แบ็คเทสต์ที่สมมติว่าต้นทุนเป็นศูนย์ไม่ได้จำลองกลยุทธ์ของคุณ แต่กำลังจำลองเวอร์ชันจินตนาการที่เทรดได้ฟรี ลองพิจารณาระบบระยะสั้นที่มีความได้เปรียบขั้นต้นบางๆ เพียง 0.10% ต่อการเทรดแบบ round-trip หนึ่งครั้ง และมีต้นทุน round-trip ที่สมจริงอยู่ที่ 0.12% เมื่อรวมสเปรด สลิปเพจ และค่าคอมมิชชันเข้าด้วยกัน กราฟด้านล่างแสดงผลตอบแทนขั้นต้นเทียบกับผลตอบแทนสุทธิเมื่อจำนวนการเทรดเพิ่มขึ้น โดยใช้ผลรวมผลตอบแทนแบบง่ายเพื่อความชัดเจน
กลยุทธ์เดียวกัน กราฟรวมเทียบกับสุทธิ: ความได้เปรียบเล็กน้อยที่ต้นทุนกัดกินจนหมด
ลองดูว่าเกิดอะไรขึ้น ที่ 1,000 การเทรดต่อปี แบ็คเทสต์แบบขั้นต้นแสดงผลตอบแทนที่น่าตื่นตาถึง 100% ในขณะที่ผลลัพธ์ที่แท้จริงหลังปรับต้นทุนแล้วติดลบ 20% ยิ่งกลยุทธ์นี้เทรดมากเท่าไร แบ็คเทสต์ก็ยิ่งดูดีมากขึ้นเท่านั้น และเงินจริงก็ยิ่งขาดทุนมากขึ้นเท่านั้น เพราะความได้เปรียบต่อการเทรดหนึ่งครั้งไม่เคยเอาชนะต้นทุนต่อการเทรดหนึ่งครั้งได้เลย นี่คือเหตุผลที่ระบบเทรดความถี่สูงที่ดูน่าดึงดูดด้วยผลตอบแทนขั้นต้น 40% เดียวกันนั้น อาจติดลบสุทธิอย่างชัดเจน ต้นทุนยังบิดเบือนอัตราส่วนความเสี่ยงต่อผลตอบแทนที่แบ็คเทสต์รายงานอย่างเงียบๆ ด้วย เพราะสเปรดที่จ่ายไปทุกครั้งจะทำให้ผลตอบแทนจริงของทุกการเทรดที่ชนะเล็กลง
5. การขึ้นอยู่กับสภาวะตลาด (Regime Dependency)
กลยุทธ์ที่แบ็คเทสต์ตั้งแต่ปี 2010 ถึง 2021 ถูกทดสอบเกือบทั้งหมดภายในสภาวะตลาดเดียว: อัตราดอกเบี้ยเป็นศูนย์ มาตรการผ่อนคลายเชิงปริมาณ (quantitative easing) ความผันผวนต่ำ และตลาดกระทิงที่ยาวนานที่สุดในประวัติศาสตร์ ในโลกแบบนั้น การตกของราคาฟื้นตัวได้และแนวโน้มดำเนินต่อไปเรื่อยๆ ดังนั้นระบบแบบ mean-reversion หรือ trend-following ที่ "เรียนรู้" พฤติกรรมเหล่านั้น แท้จริงแล้วก็แค่เข้ารหัสสภาวะตลาดนั้นราวกับว่ามันเป็นกฎถาวรของตลาด แล้วปี 2022 ก็มาถึงพร้อมกับการขึ้นอัตราดอกเบี้ย ตลาดหมี และความผันผวนที่สูงขึ้น กลยุทธ์นี้ก็ต้องเผชิญกับสภาวะที่มันไม่เคยเห็นมาก่อน แบ็คเทสต์ที่จำกัดอยู่แค่ยุคเดียวบอกคุณได้แค่ว่ากลยุทธ์ทำงานอย่างไรในยุคนั้น และแทบไม่บอกอะไรเลยว่ามันจะรับมือกับยุคถัดไปได้อย่างไร
คุณควรหักลดแบ็คเทสต์มากแค่ไหน?
คุณไม่สามารถขจัดอคตินี้ออกไปได้ทั้งหมด แต่คุณสามารถคิดราคามันไว้ล่วงหน้าได้ ให้ถือว่าตัวเลขหลักคือเพดานสูงสุด และหักลดตามวิธีที่การทดสอบถูกสร้างขึ้นมา ยิ่งกระบวนการสกปรกมากเท่าไร ก็ยิ่งต้องหักลดมากขึ้นเท่านั้น
ควรหักลดแบ็คเทสต์มากแค่ไหนก่อนที่คุณจะเชื่อมัน
| ลักษณะของแบ็คเทสต์ | การพิจารณาที่สมจริง | เหตุผล |
|---|---|---|
| In-sample เท่านั้น สภาวะตลาดเดียว | หักลดหนักหรือทิ้งไปเลย | มันไม่เคยเห็นโลกในรูปแบบอื่นมาก่อน |
| พารามิเตอร์ที่ปรับแต่งแล้ว 10+ ตัว | หักลดหนัก | มันน่าจะจดจำตัวอย่างไว้เท่านั้น |
| สมมติต้นทุนเป็นศูนย์หรือละเลย | อาจพลิกเครื่องหมายเลย | สุทธิคือตัวเลขเดียวที่คุณเก็บไว้ได้จริง |
| จักรวาลข้อมูลที่สะอาดจากอคติการอยู่รอด | หักลดปานกลาง | ผู้แพ้ถูกลบออกไปอย่างเงียบๆ |
| Out-of-sample, walk-forward, ต้นทุนที่สมจริง | หักลดเล็กน้อย แต่ยังต้องตรวจสอบด้วยการเทรดจริง | ใกล้เคียงกับความซื่อสัตย์ที่สุดที่คุณจะทำได้ |
สิ่งที่ช่วยได้จริงๆ
ทั้งหมดนี้ไม่ได้หมายความว่าการแบ็คเทสต์ไร้ประโยชน์ มันหมายความว่าแบ็คเทสต์เป็นตัวกรองที่ขจัดไอเดียแย่ๆ ออกไป ไม่ใช่คำสัญญาเกี่ยวกับไอเดียที่ดี มีแนวปฏิบัติไม่กี่อย่างที่ช่วยลดช่องว่างระหว่างแบ็คเทสต์กับความเป็นจริงได้อย่างมีนัยสำคัญ นั่นคือการสำรองข้อมูล out-of-sample ที่โมเดลไม่เคยแตะต้อง และใช้การทดสอบแบบ walk-forward หักลดอย่างจริงจังตามจำนวนพารามิเตอร์ ทดสอบข้ามสภาวะตลาดที่แตกต่างกันโดยตั้งใจ รวมถึงสภาวะที่เลวร้ายด้วย และยืนยันว่าการดำเนินการเทรดจริงสามารถทำการเข้าเทรดและขนาดโพซิชันตามที่แบ็คเทสต์สมมติไว้ได้จริง เพราะระบบที่แอบพึ่งพาการเข้าเทรดที่สมบูรณ์แบบหรือละเลยกฎการจัดขนาดโพซิชันของคุณจะทำงานแตกต่างไปมากเมื่อมีเงินจริงอยู่บนเส้น
ตัวกรองสุดท้ายคือการเทรดกระดาษ (paper trading) จากนั้นค่อยเทรดจริงด้วยจำนวนเงินน้อยๆ แบ็คเทสต์อยู่ในโลกที่ไม่มีการพลาดเข้าเทรด ไม่มีอารมณ์ และไม่มีเรื่องเซอร์ไพรส์ การเทรดจริงเท่านั้นที่เป็นการทดสอบที่รวมทั้งสามสิ่งนี้เข้าไว้ด้วยกัน
ประเด็นสำคัญที่ควรจำ
- แบ็คเทสต์คือตัวที่ดีที่สุดจากการทดลองที่มีสัญญาณรบกวนมากมาย ดังนั้นมันจึงมีอคติที่ผลักให้สูงขึ้นตั้งแต่ก่อนที่คุณจะได้อ่านมันด้วยซ้ำ
- อคติการอยู่รอดทดสอบเฉพาะสินทรัพย์ที่รอดชีวิตเท่านั้น ส่วนอคติการมองไปข้างหน้าคือการเทรดด้วยข้อมูลที่คุณไม่เคยมี
- การ Overfitting เพิ่มขึ้นตามจำนวนพารามิเตอร์และจำนวนชุดค่าผสมที่ทดลอง ดังนั้นควรหักลดตามนั้น
- ต้นทุนถูกเรียกเก็บต่อการเทรดหนึ่งครั้ง และสามารถทำให้ผลตอบแทนขั้นต้นที่สูงกลายเป็นผลสุทธิที่ติดลบอย่างชัดเจนได้
- แบ็คเทสต์ที่ใช้สภาวะตลาดเดียวเข้ารหัสสภาวะนั้นให้เป็นกฎ และล้มเหลวเมื่อสภาวะเปลี่ยนไป
แบ็คเทสต์บอกคุณว่ากลยุทธ์นี้น่าจะได้ผล มันไม่เคยบอกคุณว่ามันจะได้ผลจริง ช่องว่างระหว่างสองประโยคนี้แหละคือจุดที่บัญชีเทรดส่วนใหญ่ตายลง
ข้อจำกัดความรับผิดชอบ: เนื้อหานี้มีไว้เพื่อการศึกษาเท่านั้น และไม่ถือเป็นคำแนะนำทางการเงิน การเทรดมีความเสี่ยงสูงที่จะขาดทุน ผลการดำเนินงานในอดีตไม่ได้เป็นเครื่องยืนยันผลลัพธ์ในอนาคต