Backtesting ในทางปฏิบัติ — กระบวนการตรวจสอบแบบหลายขั้นตอน
เกือบทุกคนที่จริงจังกับกลยุทธ์การเทรดจะทำการทดสอบย้อนหลัง (backtesting) แต่น้อยคนนักที่ผ่านกระบวนการตรวจสอบแบบหลายขั้นตอนอย่างสุจริต และกระบวนการนั้นคือสิ่งที่แบ่งแยกบัญชีที่รอดปีแรกออกจากบัญชีที่ล้างพอร์ตภายในสามเดือน บทความนี้จะพาคุณเดินทางผ่านกระบวนการทั้งหมด ตั้งแต่การเขียนกฎให้ชัดเจน การเลือกช่วงข้อมูลย้อนหลัง การแบ่งชุดข้อมูล walk-forward บัญชีทดลอง จนถึงการเทรดจริงด้วย micro-lot แรก
เหตุใด backtesting ครั้งเดียวจึงไม่ใช่กระบวนการ
backtesting ครั้งเดียวให้ตัวเลขที่คุณไม่รู้จริงๆ ว่าหมายความว่าอะไร กลยุทธ์ทำกำไรได้สามสิบเปอร์เซ็นต์ แต่มันคือข้อได้เปรียบที่แท้จริง หรือคุณแค่ทดลองพารามิเตอร์สามร้อยชุดจนหาชุดที่พอดีกับ noise ในข้อมูลประวัติเจอ? ตัวเลขเพียงอย่างเดียวตอบไม่ได้ กระบวนการที่มีระบบต่างหากที่ตอบได้ โดยการค่อยๆ ลดความสามารถของเทรดเดอร์ในการ "เรียนรู้" จากข้อมูลที่ใช้ตัดสินกลยุทธ์ในที่สุด แต่ละขั้นตอนคือตะแกรงที่มีรูละเอียดขึ้นเรื่อยๆ สำหรับวิธีทำ backtesting ขั้นพื้นฐานอยู่ในส่วน practice ของเรา ที่นี่เราจะเน้นที่วินัยที่ต้องเริ่มก่อนคลิก Start ครั้งแรกด้วยซ้ำ
กฎบนกระดาษ ไม่มีพื้นที่สำหรับการตีความ
กลยุทธ์ที่ไม่สามารถเขียนเป็นโค้ดหรือกฎที่แม่นยำได้ ยังไม่พร้อมสำหรับการทดสอบ เขียนกฎสำหรับการเข้า ออก จุดตัดขาดทุน (Stop Loss) จุดทำกำไร (Take Profit) และขนาดสถานะให้แม่นยำพอที่คนอื่นอ่านแล้วจะเปิดสถานะเดียวกันได้ทุกประการ "ฉันซื้อเมื่อเห็นแนวโน้ม" คือความรู้สึก ไม่ใช่กฎ เวอร์ชันที่ทดสอบได้จริง: "ซื้อ EUR/USD / สถานะ Long เมื่อราคาปิดแท่งเทียน (candlestick) รายวันสูงกว่า EMA(50) ซึ่งอยู่เหนือ EMA(200), RSI(14) ต่ำกว่าเจ็ดสิบ, ราคาสัมผัสเส้นค่าเฉลี่ย 20 คาบจากด้านบน; Stop Loss ที่ 1.5 ATR(14) ใต้จุดเข้า; เป้าหมาย 2.5 ATR ด้านบน; ความเสี่ยงหนึ่งเปอร์เซ็นต์ของ equity" วินัยนี้จะกรองไอเดียส่วนใหญ่ออกก่อนที่การทดสอบจะเริ่มด้วยซ้ำ
ช่วงข้อมูลต้องครอบคลุมมากกว่าหนึ่งสภาวะตลาด
ตัวกรองที่สองคือข้อมูลประวัติ กฎของผม: ขั้นต่ำสิบปีสำหรับกลยุทธ์รายวัน ห้าปีสำหรับ M30 และ M15 สองปีสำหรับ scalping ระดับต่ำกว่า M15 โดยใช้ข้อมูล tick จริง ไม่ใช่ข้อมูลประวัติสังเคราะห์จากโบรกเกอร์ ทศวรรษที่ผ่านมามีแนวโน้ม DXY ยาว (2014–2017) ความผันผวนรุนแรงในเดือนมีนาคม 2020 วัฏจักรขึ้นดอกเบี้ย (2022–2023) และช่วงแน่นิ่งของปี 2024 กลยุทธ์ที่ได้ผลเฉพาะในช่วงใดช่วงหนึ่งคือภาพลวงตาที่ถูก fit เข้ากับยุคนั้น น้อยกว่าหนึ่งร้อยสถานะใน 5 ปีคือตัวอย่างที่เล็กเกินไป หนึ่งร้อยคือขั้นต่ำ นักเทรดมืออาชีพตั้งเป้าสามร้อยสถานะขึ้นไป
การแบ่งข้อมูลและการปกป้องชุด out-of-sample
ขั้นตอนที่สามคือการ "เอาข้อมูลออกไปจากตัวเอง" แบ่งข้อมูลเป็นเจ็ดสิบเปอร์เซ็นต์ IS สำหรับปรับพารามิเตอร์ และยี่สิบห้าถึงสามสิบเปอร์เซ็นต์ OOS ที่ต้องไม่แตะต้องจนกว่าการปรับจะเสร็จสิ้น OOS คือตะแกรงแห่งความสุจริต มันแสดงให้เห็นว่าพารามิเตอร์ที่เลือกจากข้อมูลฝึกฝนมีคุณค่านอกเหนือจากนั้นหรือไม่ ถ้า IS ให้ win rate แปดสิบเปอร์เซ็นต์และ profit factor 2.4 แต่พารามิเตอร์เดิมให้ห้าสิบเปอร์เซ็นต์และ 1.1 บน OOS แสดงว่าคุณเพิ่งจับได้ว่าตัวเองทำ curve-fitting สิบสองเปอร์เซ็นต์ต่อปีบน IS และสิบเอ็ดบน OOS ดีกว่าสามสิบบน IS แปดบน OOS อย่างแท้จริง ความสม่ำเสมอคือสิ่งที่สำคัญ ไม่ใช่ตัวเลขสูงสุด
Walk-forward คือตะแกรงละเอียดที่สุด
การแบ่ง IS/OOS ครั้งเดียวให้ตัวเลขเดียว walk-forward ทำซ้ำห้าถึงเจ็ดรอบ: IS แรก 2018–2021, OOS 2022; IS ที่สอง เลื่อนเป็น 2019–2022, OOS 2023; ดำเนินต่อไปเรื่อยๆ ในแต่ละรอบให้ปรับพารามิเตอร์ใหม่ แช่แข็งพารามิเตอร์ที่ดีที่สุด ทดสอบบน OOS บันทึกผล แล้วเลื่อนหน้าต่าง หลังห้าถึงเจ็ดรอบ ค่าเฉลี่ย OOS คือตัวแทนที่สุจริตที่สุดของสิ่งที่บัญชีจริงจะให้ WFE ในช่วง 0.5–0.75 บ่งชี้ว่ากลยุทธ์คุ้มค่าที่จะนำไปต่อ ต่ำกว่า 0.3 คือการยอมรับว่าทำ curve-fitting รายละเอียดกลไกและความแตกต่างระหว่าง rolling กับ anchored อยู่ในการวิเคราะห์ walk-forward สำหรับบริบทที่กว้างขึ้น สามารถดูได้จาก traders\' workshop บน ForexMechanics
"จุดประสงค์ทั้งหมดของการวิเคราะห์แบบ walk-forward คือการเปิดเผยผลการดำเนินงานของกลยุทธ์การเทรดในเวลาจริงด้วยเงินจริง โดยไม่ต้องเทรดจริงด้วยเงินจริงในเวลาจริง" — Robert Pardo, The Evaluation and Optimization of Trading Strategies, 2008
Demo และ micro-lot จริง — จุดที่กลยุทธ์พบกับความเป็นจริง
กลยุทธ์ที่ผ่าน walk-forward พร้อมสำหรับบัญชีทดลอง (demo account) ไม่ใช่เงินจริง forward testing สามถึงหกเดือนโดยพารามิเตอร์แช่แข็งคือการทดสอบพฤติกรรมในเวลาจริงครั้งแรก: สเปรด (spread) จริง การประกาศมาโครจริง ช่องว่างราคาคืนวันอาทิตย์ สภาพคล่องในชั่วโมงเทรดจริง demo ดึงออกมาในสิ่งที่ backtesting ไม่เคยแสดง กลยุทธ์ที่ดูเหมือน liquid จากข้อมูลประวัติอาจ execute ยากเพราะสัญญาณปรากฏตอนคุณนอนหลับ นั่นไม่ใช่ปัญหาข้อมูล แต่เป็นปัญหาของคุณและตลาดของคุณ
หลัง forward testing คุณไม่ควรกระโดดสู่ขนาดเต็ม ให้ผ่านไปด้วย micro-lot — หนึ่งในสิบของขนาดเป้าหมาย — สามถึงหกเดือนด้วยเงินจริง จุดประสงค์คือข้อมูล: ว่า execution จริงแตกต่างจาก demo อย่างไร ส่วนต่างราคาที่เกิดขึ้น (slippage) จริง โบรกเกอร์ (broker) ทำตัวอย่างไรช่วง NFP และคุณตอบสนองต่อการขาดทุนจริงๆ แม้เล็กน้อยอย่างไร ตารางผลลัพธ์ทั้งสี่คอลัมน์: IS, OOS, demo, micro-lot ยิ่งตัวเลขใกล้กัน ความเสี่ยงที่คุณอยู่ในภาพลวงตาก็ยิ่งน้อย ความแตกต่างที่กว้างขึ้นคือสัญญาณให้ถอยหลัง ไม่ใช่ขยายขนาด
ตัวอย่างเพื่อประกอบความเข้าใจ — กระบวนการทั้งหมดสำหรับกลยุทธ์ breakout
กลยุทธ์ breakout บน EUR/USD, M30: เข้าสถานะซื้อเมื่อราคาทะลุ high สูงสุดของยี่สิบแท่ง ออกที่ low ต่ำสุดของสิบแท่ง ข้อมูลประวัติ 2014–2023, IS 2014–2020, OOS 2021–2023 ปรับพารามิเตอร์บน IS ได้ยี่สิบสามสำหรับ high สิบเอ็ดสำหรับ low, Stop Loss 1.4 ATR, win rate ห้าสิบแปดเปอร์เซ็นต์, profit factor 1.72 ยี่สิบสองเปอร์เซ็นต์ต่อปี บน OOS: win rate ห้าสิบสี่เปอร์เซ็นต์, profit factor 1.51 สิบแปดเปอร์เซ็นต์ต่อปี walk-forward ห้ารอบให้ WFE เฉลี่ย 0.71 Demo สี่เดือนยืนยัน slippage มากกว่าที่สมมติครึ่ง pip; win rate และ profit factor ยังอยู่ในช่วง Micro-lot จริงตั้งแต่เดือนมกราคมให้ห้าสิบเอ็ดเปอร์เซ็นต์หลังสามเดือน — ต่ำกว่า backtest แต่ยังเป็นบวก ไตรมาสสามจะนำมาสู่การตัดสินใจ: ขยายขนาด หรือรอถ้าความผันผวนเบี่ยงเบนจากปกติ ตัวเลขเหล่านี้เป็นเพียงตัวอย่างเพื่อประกอบความเข้าใจ
ขั้นตอนถัดไปสำหรับคุณ
- เขียนกฎกลยุทธ์ลงในไฟล์ข้อความธรรมดาให้แม่นยำพอที่คนอื่นอ่านแล้วจะเปิดสถานะเดียวกันได้ทุกประการ ไม่มีพื้นที่สำหรับการตีความ ไม่มี "ฉันรู้สึกว่าแนวโน้มมา" โดยมีค่าพารามิเตอร์ที่ชัดเจน สูตร Stop Loss และขนาดสถานะเป็นเปอร์เซ็นต์ของ equity บัญชี เพราะกฎที่แม่นยำคือสิ่งที่แยกไอเดียที่ทดสอบได้ออกจากความรู้สึก
- ดาวน์โหลดข้อมูลประวัติสำหรับคู่เงินที่คุณเทรดจริง ขั้นต่ำสิบปีสำหรับกราฟรายวัน ห้าปีสำหรับ M30 และ M15 สองปีของข้อมูล tick จริงสำหรับ scalping และตรวจสอบว่าตัวอย่างครอบคลุมสภาวะตลาดที่หลากหลาย ได้แก่ แนวโน้ม การแน่นิ่ง ความผันผวนรุนแรง และวัฏจักรดอกเบี้ย
- แบ่งข้อมูลเป็นเจ็ดสิบเปอร์เซ็นต์ in-sample และยี่สิบห้าถึงสามสิบเปอร์เซ็นต์ out-of-sample อย่าแตะ OOS จนกว่าการปรับพารามิเตอร์บน IS จะเสร็จสมบูรณ์ จากนั้นรัน walk-forward ห้าถึงเจ็ดรอบ ถ้า WFE ต่ำกว่า 0.5 หรือพารามิเตอร์เปลี่ยนแปลงมากกว่าห้าสิบเปอร์เซ็นต์ระหว่างรอบ ให้ทำกลยุทธ์ให้เรียบง่ายขึ้น
- สำหรับกลยุทธ์ที่ผ่าน walk-forward รัน forward testing สามถึงหกเดือนบน demo โดยพารามิเตอร์แช่แข็ง แล้วสามถึงหกเดือน micro-lot จริง ศึกษาเพิ่มเติมเกี่ยวกับการบริหารความเสี่ยงได้ในส่วนที่เกี่ยวข้อง เฉพาะเมื่อชุดผลลัพธ์ทั้งสี่สอดคล้องกันแล้วเท่านั้นจึงขยายไปสู่ขนาดเป้าหมาย
- อ่านผลลัพธ์ผ่านเลนส์ของความสม่ำเสมอ ไม่ใช่ผลตอบแทนสูงสุด: สิบสองเปอร์เซ็นต์ต่อปีในทุกขั้นตอนดีกว่าสามสิบบน IS และแปดบน OOS เพราะความสม่ำเสมอตัดสินว่าบัญชีจะอยู่รอดปีแรกหรือไม่ เนื้อหานี้เป็นเพียงข้อมูลการศึกษา ไม่ใช่คำแนะนำการลงทุน
แหล่งอ้างอิงและบรรณานุกรม
-
Robert Pardo The Evaluation and Optimization of Trading Strategies · klasyczny podręcznik o ewaluacji systemów transakcyjnych i metodyce walk-forward onlinelibrary.wiley.com ↗
-
MetaQuotes MetaTrader 5 Help — Strategy Tester · oficjalna dokumentacja MT5 dotycząca Strategy Testera, forward testingu i optymalizacji parametrów www.metatrader5.com ↗
-
MetaQuotes MetaTrader 4 Help — Strategy Testing · opis Strategy Testera MT4: parametry uruchomienia, modele tickowe, interpretacja raportu www.metatrader4.com ↗
-
Backtrader Backtrader documentation — Introduction · wprowadzenie do otwartego silnika backtestowego w Pythonie używanego przez quants www.backtrader.com ↗
-
TradingView Pine Script v6 — Welcome · oficjalna dokumentacja Pine Script i Strategy Testera w TradingView www.tradingview.com ↗
คำถามที่พบบ่อย
กระบวนการหลายขั้นตอนนี้แตกต่างจากการทดสอบย้อนหลังครั้งเดียวอย่างไร
backtesting ครั้งเดียวให้ตัวเลขหนึ่งตัวและการตีความหนึ่งแบบ มันแสดงว่ากลยุทธ์ทำกำไรได้ในอดีตหรือไม่ แต่สมมติโดยปริยายว่ากระบวนการปรับพารามิเตอร์ไม่ได้ "เรียนรู้" noise ในข้อมูล กระบวนการหลายขั้นตอนเปลี่ยนตัวเลขเดียวนั้นให้เป็นลำดับตะแกรง ขั้นแรก กฎที่เขียนไว้กรองไอเดียที่ไม่สามารถตรวจสอบได้ออก ถัดมา หน้าต่างข้อมูลประวัติที่ยาวกรองกลยุทธ์ที่ได้ผลเฉพาะในสภาวะตลาดเดียวออก จากนั้น การแบ่ง IS/OOS กรองพารามิเตอร์ที่ได้ผลเฉพาะกับข้อมูลฝึกฝนออก walk-forward กรองพารามิเตอร์ที่ได้ผลเฉพาะในหน้าต่าง OOS สุ่มเดียวออก บัญชีทดลองกรองกลยุทธ์ที่ไม่สามารถ execute ได้ด้วยสเปรดจริงออก และ micro-lot จริงกรองเทรดเดอร์ที่ไม่สามารถอดทนทางจิตวิทยาออก หลังผ่านตะแกรงทั้งหกจะเหลือเพียงส่วนเล็กๆ ของกลุ่มกลยุทธ์เดิม แต่นั่นคือส่วนที่มีโอกาสจริงในการรอดปีแรก backtesting ครั้งเดียวไม่บังคับการคัดเลือกนั้น นี่คือเหตุผลที่แปดสิบเปอร์เซ็นต์ของนักเทรดรายย่อยขาดทุน ทั้งที่แปดสิบเปอร์เซ็นต์ได้ทำการทดสอบประวัติในรูปแบบใดรูปแบบหนึ่งแล้ว
กระบวนการทั้งหมดตั้งแต่ไอเดียจนถึง micro-lot จริงใช้เวลานานแค่ไหน
ตารางเวลาที่สมจริงอยู่ที่เก้าถึงสิบห้าเดือน นับจากการเขียนกฎครั้งแรกจนถึงการขยายขนาดสถานะไปสู่เป้าหมาย สองสัปดาห์แรกใช้เขียนกฎอย่างแม่นยำและดาวน์โหลดข้อมูลประวัติ สองถึงสี่สัปดาห์ถัดมาครอบคลุมการปรับพารามิเตอร์บน in-sample และการตรวจสอบ out-of-sample ครั้งแรก ถ้าไม่ผ่านให้กลับไปที่กฎ ไม่ใช่หาการทดสอบที่ดีกว่า walk-forward ห้าถึงเจ็ดรอบเพิ่มอีกหนึ่งเดือนเพราะแต่ละหน้าต่างต้องปรับพารามิเตอร์ของตัวเอง จากนั้น forward testing บนบัญชีทดลองสามถึงหกเดือน ตามด้วย micro-lot จริงอีกสามถึงหกเดือน เฉพาะหลังจากเปรียบเทียบชุดผลลัพธ์ทั้งสี่และยืนยันความสอดคล้องแล้วเท่านั้นจึงขยายไปสู่ขนาดสถานะเป้าหมาย การตัดตารางเวลาให้ต่ำกว่าเก้าเดือนหมายถึงการข้ามตะแกรงใดตะแกรงหนึ่ง และตะแกรงที่ข้ามไปทุกชิ้นจะย้ายความเสี่ยงจากขั้นตรวจสอบไปสู่ขั้น live ซึ่งเสียเงินจริง
ควรติดตามตัวชี้วัดใดบ้างระหว่างขั้นตอนเพื่อตรวจจับความไม่สอดคล้อง
ตารางที่ดูแลตลอดกระบวนการควรมีสี่คอลัมน์ผลลัพธ์ (in-sample, out-of-sample, demo, micro-lot จริง) และอย่างน้อยสี่แถวตัวชี้วัดสำหรับแต่ละคอลัมน์ แรกคือ win rate เป็นเปอร์เซ็นต์ ช่องว่างมากกว่าสิบเปอร์เซ็นต์ระหว่างขั้นตอนส่งสัญญาณความไม่สอดคล้อง ที่สองคือ profit factor ซึ่งคือกำไรรวมหารด้วยขาดทุนรวม ช่องว่างมากกว่า 0.3 ระหว่างขั้นตอนคือสัญญาณเตือน ที่สามคืออัตราส่วนความเสี่ยงต่อผลตอบแทนเฉลี่ย ช่องว่างมากกว่า 0.5 R บ่งชี้ว่า Stop Loss ทำตัวแตกต่างจากในการทดสอบ ที่สี่คือการลดลงของเงินทุนสูงสุด (drawdown) ซึ่งเกือบทุกครั้งจะเพิ่มขึ้นจากขั้นตอนสู่ขั้นตอน แต่การเพิ่มขึ้นเกินห้าสิบเปอร์เซ็นต์ระหว่างสองขั้นตอนที่อยู่ติดกันหมายความว่ากลยุทธ์กำลังเผชิญสภาวะที่ไม่มีในการทดสอบ ที่ห้า (ไม่บังคับ) คือ slippage เฉลี่ยในหน่วย pip ความแตกต่างระหว่าง backtest กับ demo และระหว่าง demo กับ micro-lot บอกคุณว่าโบรกเกอร์ทำตัวสอดคล้องกับสมมติฐานหรือไม่ ความไม่สอดคล้องในตัวชี้วัดใดก็ตามคือสัญญาณให้ถอยกลับหนึ่งขั้นตอนและทำความเข้าใจสาเหตุ ไม่ใช่ขยายขนาดสถานะ
การผ่านกระบวนการทั้งหมดรับประกันได้ว่ากลยุทธ์จะทำกำไรในบัญชีจริงหรือไม่
ไม่ แต่ละขั้นตอนเพิ่มความน่าจะเป็นว่ากลยุทธ์มีข้อได้เปรียบที่แท้จริง แต่ไม่มีชุดการทดสอบประวัติหรือ forward ใดที่จะลบล้างความเสี่ยงพื้นฐานได้: ตลาดไตรมาสหน้าอาจแตกต่างจากทุกอย่างที่คุณเคยเห็นในข้อมูล กระบวนการทั้งหมดสมมติโดยปริยายว่าสภาวะตลาดในหน้าต่าง OOS และใน demo จะใกล้เคียงกับสภาวะ live เพียงพอ ถ้ากลยุทธ์เรียนรู้ตลาดช่วง 2018–2023 ที่มีความผันผวนรุนแรงสองครั้งและวัฏจักรขึ้นดอกเบี้ยสองรอบ แล้วเทรดตั้งแต่ปี 2024 ในช่วงแน่นิ่งยาวที่มีความผันผวนต่ำและการประกาศที่ขับเคลื่อนตลาดน้อยลง micro-lot จริงอาจแสดงผลลัพธ์ที่ห่างไกลจาก backtest มาก นั่นคือเหตุผลที่วินัยไม่ได้อยู่ที่การผ่านตะแกรงอย่างสะอาดเพียงอย่างเดียว แต่อยู่ที่การถือ micro-lot นานพอที่จะเปรียบเทียบผลลัพธ์บนเงินจริงกับสามขั้นตอนก่อนหน้า เครื่องมือเสริมคือการจำลอง Monte Carlo ที่เรียงลำดับสถานะสุ่มใหม่และแสดงการกระจายตัวของเส้นโค้ง equity ที่เป็นไปได้ ซึ่งเป็นการประมาณสถานการณ์เลวร้ายที่สุดตามเหตุผลที่ backtesting เพียงอย่างเดียวไม่เคยเปิดเผย เนื้อหานี้เป็นเพียงข้อมูลการศึกษาเท่านั้น ไม่ใช่คำแนะนำการลงทุน