แบ็คเทสต์คือคำโกหกที่น่าเชื่อถือที่สุดในการเทรด เส้นกราฟเงินทุนพุ่งขึ้นไปทางขวา อัตราชนะดูดีมีสุขภาพ และการขาดทุนหนัก (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 เพิ่มขึ้นตามจำนวนพารามิเตอร์และจำนวนชุดค่าผสมที่ทดลอง ดังนั้นควรหักลดตามนั้น
  • ต้นทุนถูกเรียกเก็บต่อการเทรดหนึ่งครั้ง และสามารถทำให้ผลตอบแทนขั้นต้นที่สูงกลายเป็นผลสุทธิที่ติดลบอย่างชัดเจนได้
  • แบ็คเทสต์ที่ใช้สภาวะตลาดเดียวเข้ารหัสสภาวะนั้นให้เป็นกฎ และล้มเหลวเมื่อสภาวะเปลี่ยนไป
แบ็คเทสต์บอกคุณว่ากลยุทธ์นี้น่าจะได้ผล มันไม่เคยบอกคุณว่ามันจะได้ผลจริง ช่องว่างระหว่างสองประโยคนี้แหละคือจุดที่บัญชีเทรดส่วนใหญ่ตายลง

ข้อจำกัดความรับผิดชอบ: เนื้อหานี้มีไว้เพื่อการศึกษาเท่านั้น และไม่ถือเป็นคำแนะนำทางการเงิน การเทรดมีความเสี่ยงสูงที่จะขาดทุน ผลการดำเนินงานในอดีตไม่ได้เป็นเครื่องยืนยันผลลัพธ์ในอนาคต