Backtesting คืออะไร?

ช่วยแชร์ต่อนะครับ

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

นักวิเคราะห์ใช้ Backtesting  เป็นวิธีทดสอบและเปรียบเทียบเทคนิคการซื้อขายต่างๆ โดยไม่ต้องเสี่ยงกับเงิน ทฤษฎีคือว่าหากกลยุทธ์ของพวกเขาทำได้ไม่ดีในอดีต ก็ไม่น่าจะทำได้ดีในอนาคต (และในทางกลับกัน) องค์ประกอบหลักสองประการที่พิจารณาระหว่างการทดสอบคือความสามารถในการทำกำไรโดยรวมและระดับความเสี่ยงที่ได้รับ

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

Backtesting มักจะถูกเข้ารหัสโดยโปรแกรมเมอร์ที่ใช้การจำลองในกลยุทธ์การซื้อขาย การจำลองดำเนินการโดยใช้ข้อมูลย้อนหลังจากหุ้น พันธบัตร และเครื่องมือทางการเงินอื่นๆ ผู้ที่อำนวยความสะดวกในการทดสอบย้อนกลับจะประเมินผลตอบแทนของแบบจำลองจากชุดข้อมูลต่างๆ

นอกจากนี้ยังจำเป็นที่แบบจำลองต้องได้รับการทดสอบในสภาวะตลาดต่างๆ เพื่อประเมินประสิทธิภาพอย่างเป็นกลาง จากนั้น ตัวแปรภายในโมเดลจะได้รับการปรับแต่งเพื่อการเพิ่มประสิทธิภาพเทียบกับการวัดย้อนหลังต่างๆ

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

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

ตราบใดที่แนวคิดในการซื้อขายสามารถวัดผลได้ ก็สามารถทดสอบย้อนหลังได้ ผู้ค้าและนักลงทุนบางรายอาจแสวงหาความเชี่ยวชาญจากโปรแกรมเมอร์ที่มีคุณสมบัติเหมาะสมเพื่อพัฒนาแนวคิดให้อยู่ในรูปแบบที่ทดสอบได้ โดยทั่วไปแล้ว สิ่งนี้จะเกี่ยวข้องกับโปรแกรมเมอร์ที่เขียนโค้ดความคิดนั้นเป็นภาษาที่เป็นกรรมสิทธิ์ซึ่งโฮสต์โดยแพลตฟอร์มการซื้อขาย

โปรแกรมเมอร์สามารถรวมตัวแปรอินพุตที่กำหนดโดยผู้ใช้ ซึ่งช่วยให้ผู้ค้าสามารถ “ปรับแต่ง” ระบบได้ ตัวอย่างนี้จะอยู่ในระบบครอสโอเวอร์ของค่าเฉลี่ยเคลื่อนที่อย่างง่าย (SMA) ผู้ค้าจะสามารถป้อน (หรือเปลี่ยน) ความยาวของเส้นค่าเฉลี่ยเคลื่อนที่สองเส้นที่ใช้ในระบบได้ ผู้ค้าสามารถทดสอบย้อนหลังเพื่อกำหนดความยาวของเส้นค่าเฉลี่ยเคลื่อนที่ที่จะทำงานได้ดีที่สุดกับข้อมูลในอดีต

Backtesting ในอุดมคติจะเลือกข้อมูลตัวอย่างจากช่วงเวลาที่เกี่ยวข้องในระยะเวลาหนึ่ง ซึ่งสะท้อนถึงสภาวะตลาดที่หลากหลาย ด้วยวิธีนี้ เราสามารถตัดสินได้ดีขึ้นว่าผลลัพธ์ของการทดสอบย้อนหลังแสดงถึงความบังเอิญหรือการซื้อขายที่ดี

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

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

การทดสอบที่ไม่อยู่ในตัวอย่างและการทดสอบประสิทธิภาพการส่งต่อเป็นการยืนยันเพิ่มเติมเกี่ยวกับประสิทธิภาพของระบบ และสามารถแสดงสีที่แท้จริงของระบบได้ก่อนที่เงินสดจริงจะเข้าสู่สายการผลิต ความสัมพันธ์ที่แน่นแฟ้นระหว่างผลการทดสอบย้อนหลัง ผลการทดสอบที่ไม่อยู่ในตัวอย่าง และการส่งต่อมีความสำคัญต่อการพิจารณาความอยู่รอดของระบบการซื้อขาย

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

สิ่งสำคัญของการทดสอบประสิทธิภาพการส่งต่อคือการปฏิบัติตามตรรกะของระบบอย่างแน่นอน มิฉะนั้น การประเมินขั้นตอนนี้อย่างแม่นยำของกระบวนการจะกลายเป็นเรื่องยาก ถ้าไม่เป็นไปไม่ได้ ผู้ค้าควรซื่อสัตย์เกี่ยวกับการเข้าและออกจากการค้าใด ๆ และหลีกเลี่ยงพฤติกรรมเช่นการค้าขายเชอร์รี่หรือไม่รวมถึงการค้าขายบนกระดาษโดยให้เหตุผลว่า “ฉันไม่เคยทำการค้านั้น” หากการค้าเกิดขึ้นตามตรรกะของระบบ ก็ควรจัดทำเป็นเอกสารและประเมินผล

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

การวิเคราะห์สถานการณ์มักใช้เพื่อประมาณการเปลี่ยนแปลงมูลค่าของพอร์ตโฟลิโอเพื่อตอบสนองต่อเหตุการณ์ที่ไม่พึงประสงค์ และอาจใช้เพื่อตรวจสอบสถานการณ์สมมติกรณีเลวร้ายที่สุดทางทฤษฎี

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

มันยากกว่าที่คิด ผู้ค้ามักสร้างกลยุทธ์ตามข้อมูลในอดีต พวกเขาต้องเข้มงวดในการทดสอบกับชุดข้อมูลที่แตกต่างจากที่พวกเขาฝึกโมเดลของพวกเขา มิฉะนั้น การทดสอบย้อนกลับจะให้ผลลัพธ์ที่เปล่งประกายซึ่งไม่มีความหมายอะไรเลย

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

วิธีหนึ่งในการชดเชยแนวโน้มของการขุดลอกข้อมูลหรือการเลือกแบบเชอร์รี่คือการใช้กลยุทธ์ที่ประสบความสำเร็จในช่วงเวลาที่เกี่ยวข้องหรือในตัวอย่าง และทดสอบย้อนกลับด้วยข้อมูลจากช่วงเวลาที่แตกต่างกันหรือไม่อยู่ในตัวอย่าง . หาก backtest แบบ in-sample และ out-of-sample ให้ผลลัพธ์ที่คล้ายคลึงกัน ก็มีแนวโน้มที่จะได้รับการพิสูจน์ว่าถูกต้อง