วิธีทดสอบและประเมินระบบเทรด EP. 2

Tom Jakkarin
Algo Alchemist
Published in
2 min readMay 5, 2024

บทความนี้ เป็นบทความต่อเนื่องจากบทความที่แล้ว “วิธีทดสอบและประเมินระบบเทรด EP. 1” โดยในบทความที่แล้ว ผมได้กล่าวถึงวิธีทดสอบและประเมินระบบเทรดด้วยการ Backtest แบบ In-Sample และ Out-of-Sample ไปแล้ว ถัดไปจะมีการทดสอบแบบไหนอีกบ้าง ไปดูกันเลยครับ

แบบที่ 3: Walk Forward Analysis (WFA)

Walk Forward Analysis (WFA) คือการทดสอบระบบแบบก้าวเดินไปข้างหน้า โดยเป็นการระบุ Period ของ Out-of-sample ให้อยู่ถัดจาก In-sample และทำการ Shift ชุดข้อมูลเหล่านี้ไปพร้อมๆกัน ตามจำนวนครั้งที่เราต้องการ ซึ่งคาดว่าทุกท่านที่อ่าน อาจจะเกิดการสับสน งงงวยกับความหมายแบบนี้ไม่ใช่น้อย เพื่อให้เข้าใจง่ายขึ้น ผมจะอธิบายโดยใช้ Reference จากรูปด้านล่างนี้ครับ

Reference: Building Winning Algorithmic Trading Systems: A Trader’s Journey From Data Mining to Monte Carlo Simulation to Live Trading (Wiley Trading) by Kevin J. Davey (Author)

จากในรูป เป็นตัวอย่างการใช้ In-sample period ที่ 4 ปี และ Out-of-sample ที่ 1 ปี โดยสังเกตจาก period เริ่มต้นที่ใช้ Backtest คือ #1 ด้านบนสุด และไล่ลงมาตามลำดับ ไปจนถึง #9 จะเห็นได้ว่า มีการ Shift Period ครั้งละ 1 ปี เป็นจำนวนทั้งหมด 9 ครั้ง (1–9) กล่าวคือ หลังจากที่เราได้ทำการกำหนด In-sample ของชุดข้อมูลที่เราจะทำการ Backtest แล้ว จากนั้นเราจะทำการกำหนด Out-of-sample ถัดไปข้างหน้า เพื่อเป็นสมมติฐานว่า ข้อมูลชุดนี้เป็นข้อมูลในอนาคต ณ เวลานั้นๆ ที่ระบบยังไม่เคยเห็น และเราก็นำชุดข้อมูลเหล่านั้น มาทำการ Shift Period ไปเรื่อยๆ (คล้ายๆกับการทำ Rolling Window Analysis)
โดยในที่นี้ เวลาในการ Shift Period ไม่ได้ตายตัวว่าจะต้อง Shift ทุกๆ 1 ปีหรือทำทั้งหมด 9 ครั้ง นะครับ เวลาในการ Shift อาจจะเป็น 3 เดือน, 6 เดือน และทำทั้งหมด 5 ครั้ง, 10 ครั้ง ก็ได้เช่นกัน ขึ้นอยู่กับความขยันและสมมติฐานที่เราต้องการทดสอบเลย

แล้ว Walk Forward Analysis มันมีประโยชน์อย่างไรล่ะ ?

วิเคราะห์ไปเพื่ออะไรนะ ?

ซึ่งบางคนอาจจะมองว่า เป็นการเสียเวลา ทำไปก็ไม่ได้ใช้ประโยชน์ แต่ผมจะบอกว่า การทำ Walk Forward Analysis มีประโยชน์มากกว่าที่ทุกคนคิดไว้ครับ โดยประโยชน์หลักๆ มีดังนี้

  1. ช่วยให้เราสามารถทดสอบความ Robust และความมีประสิทธิภาพของของระบบได้ดียิ่งขึ้น เพื่อเป็นการตรวจสอบว่า ระบบเทรดของเรา มีความสามารถในการปรับตัวให้เข้ากับสภาวะตลาดที่เปลี่ยนแปลงไปได้หรือไม่ ไม่ใช่เพียงแค่ Backtest มาจากข้อมูลแค่ชุดเดียว Period 2 ปี, 4 ปี แล้วจบ นำไปใช้จริงเลย (ถ้าใครยังทำแบบนี้อยู่ ระวังเจอ Curve Fitting นะครับ โชคร้ายหน่อยอาจจะพอร์ตแตกได้เลย)
    เนื่องจาก Walk Forward Analysis (WFA) เป็นการจำลองสถานการณ์แบบ Forward โดยจะสังเกตได้จากในรูปภาพว่า Period ของ Out-of-Sample จะอยู่ถัดจาก In-Sample ซึ่งมีความสอดคล้องกับการเทรดในชีวิตจริงที่เราไม่สามารถคาดเดาอนาคตของตลาดหรือสินทรัพย์ได้ 100% อยู่แล้ว
  2. ช่วยให้เราเข้าใจ Characteristics ของกลยุทธ์ได้อย่างถ่องแท้มากขึ้น ว่ากลยุทธ์ของเราจะให้ผลลัพธ์อย่างไร เมื่อเจอสภาวะตลาดที่แตกต่างกัน เช่น สมมติว่า ระบบเทรดของเราเป็น Momentum Strategy แบบ Long only แล้วถ้าเกิดเหตุการณ์คล้ายคลึงแบบโควิด 19 ในอีก 2 เดือนถัดไป แล้วผลลัพธ์ของระบบเราออกมาเละเทะ ไม่มีชิ้นดี ทำให้เราคิดว่า กลยุทธ์ที่ Backtest มาใช้ไม่ได้จริง ล้มเหลว… ทั้งๆที่ความจริงแล้ว มันเป็นแค่ 1 ในเหตุการณ์ของความเป็นไปได้ทั้งหมดที่มีโอกาสเกิดขึ้นในตลาด (Random Walk Theory) เท่านั้นเอง
  3. ทำให้เราได้เห็นอีกหลายๆ Scenarios ของระบบเทรดที่มีโอกาสเกิดขึ้น เพราะโดยปกติแล้ว เวลาเราเลือก Period ในการ Backtest ท่าง่ายที่สุดและที่นิยมใช้กันคือ Start ต้นปี และ End ท้ายปี แต่ในความเป็นจริง ก็คงไม่มีใครรอให้ถึงต้นปีแล้วค่อยเริ่มใช้กลยุทธ์ที่เรา Backtest มาใช่ไหมครับ
    โดยส่วนมากก็จะเริ่มใช้ทันทีหลังจากที่ทำการ Backtest เสร็จนั่นแหละ (เรียกว่า ร้อนวิชา ตัวผมก็เป็นครับ) ดังนั้น การที่เราสามารถรู้ก่อนได้ว่า Performance ของระบบสามารถเปลี่ยนไปได้มากขนาดไหน ไม่ว่าจะเป็นเชิงบวกหรือเชิงลบ ในกรณีที่เริ่มเทรดในเวลาที่ต่างกัน จะสามารถช่วยให้เรารับมือกับเหตุการณ์ต่างๆตอนนำไปใช้จริงได้ดีขึ้นครับ

หวังว่าบทความนี้จะมีประโยชน์สำหรับ Systematic Trader ในการทำ Backtest ของทุกท่านนะครับ ไว้เจอกันใหม่ในบทความหน้าครับ

“Never Stop Learning”

Algo Alchemist

--

--