Backtest ที่แสดงผลตอบแทนรายปี 200% สร้างความรู้สึกมึนเมา คุณได้พบกลยุทธ์ทองคำแล้ว แต่ที่จริงคุณยังไม่ได้พบ — มีความเป็นไปได้สูงว่าสิ่งที่คุณพบคือกลยุทธ์ที่ปรับให้เข้ากับข้อมูล ในอดีต ได้อย่างสมบูรณ์แบบ แต่จะล้มเหลวทันทีที่เจอกับตลาดจริง นี่คือปัญหา overfitting และมันทำลายบัญชีเทรดมากกว่าการตัดสินใจตลาดที่ผิดพลาดเสียอีก
Walk-forward analysis (WFA) คือยาแก้พิษ มันคือระเบียบวิธีตรวจสอบความถูกต้องที่เข้มงวด ซึ่งทดสอบว่าผลการดำเนินงานของกลยุทธ์คุณเป็นของจริงหรือเป็นเพียงผลพลอยได้จากการ curve-fitting แทนที่จะทดสอบบนข้อมูลชุดเดียวกับที่คุณใช้ optimize นั้น WFA จะฝึก (train) บนข้อมูลส่วนหนึ่งอย่างเป็นระบบ และทดสอบบนข้อมูลอีกส่วนที่ไม่เคยเห็นเลย — จากนั้นจึงทำกระบวนการนี้ซ้ำตลอดชุดข้อมูลทั้งหมดของคุณ
คู่มือนี้จะสอนคุณวิธีนำ walk-forward analysis ไปใช้ทีละขั้นตอน ออกแบบการทดสอบความทนทานที่เปิดโปงกลยุทธ์ที่เปราะบาง ประยุกต์ใช้เกณฑ์นัยสำคัญทางสถิติ และสร้างเช็กลิสต์การตรวจสอบที่ครอบคลุมซึ่งแยกกลยุทธ์ที่ควรค่าแก่การเทรดออกจากกลยุทธ์ที่ควรค่าแก่การทิ้ง
ประเด็นสำคัญ
- Backtesting แบบพื้นฐานบนข้อมูลในอดีตมักประเมินผลการดำเนินงานสูงเกินจริงเสมอ เพราะ optimizer หาพารามิเตอร์ที่บังเอิญทำงานได้ดีกับข้อมูลชุดนั้นโดยเฉพาะ — ไม่ใช่พารามิเตอร์ที่จับความได้เปรียบทางตลาดที่แท้จริง
- Walk-forward analysis แบ่งข้อมูลออกเป็นหน้าต่างแบบเลื่อน คือ in-sample (ฝึก) และ out-of-sample (ทดสอบ) อัตราส่วน 3:1 (เช่น optimize 6 เดือน ทดสอบ 2 เดือน) เป็นจุดเริ่มต้นที่เชื่อถือได้
- การทดสอบเสถียรภาพพารามิเตอร์ — โดยปรับแต่ละพารามิเตอร์ ±20% แล้วตรวจดูว่าผลการดำเนินงานลดลงมากกว่า 50% หรือไม่ — เผยให้เห็นว่ากลยุทธ์ของคุณตั้งอยู่บนที่ราบสูงที่ทนทานหรือบนยอดที่เปราะบาง
- กลยุทธ์ต้องถูกทดสอบข้ามคู่เทรด, timeframe และสภาวะตลาด (bull/bear/sideways) ที่ต่างกัน เพื่อยืนยันว่ามันไม่ได้ curve-fit เข้ากับชุดข้อมูลเฉพาะชุดเดียว
- นัยสำคัญทางสถิติต้องการการเทรดขั้นต่ำ 30 ครั้งสำหรับความน่าเชื่อถือพื้นฐาน และ 100+ ครั้งสำหรับความมั่นใจสูง การเทรดน้อยกว่านี้หมายความว่าผลลัพธ์ของคุณอาจเป็นเพียงความบังเอิญ
- กลยุทธ์ DCA ในโลกจริงที่แสดงผลตอบแทนรายปี 45% ใน backtest แต่เพียง 12% ใน walk-forward analysis แสดงให้เห็นช่องว่างผลการดำเนินงานทั่วไปที่เกิดจาก overfitting
จำนวนเงินดอลลาร์และเปอร์เซ็นต์ในคู่มือนี้เป็นเพียงตัวอย่างการคำนวณ ไม่ใช่คำแนะนำการลงทุน การเทรดคริปโตอาจทำให้ขาดทุนได้ — ตั้งขนาดเงินทุนของบอทแต่ละตัวด้วยเงินที่คุณยอมรับการสูญเสียได้เท่านั้น และอ่านการเปิดเผยความเสี่ยงฉบับเต็มก่อนเริ่มเทรดจริง
ทำไม Backtesting แบบพื้นฐานจึงไม่เพียงพอ
หากคุณได้อ่านคู่มือของเราเรื่อง วิธี Backtest กลยุทธ์เทรดคริปโตของคุณ แล้ว คุณก็เข้าใจพื้นฐานของ backtesting มาดูจุดอ่อนพื้นฐานของมันกันต่อ นั่นคือ overfitting
ปัญหา Overfitting
Overfitting เกิดขึ้นเมื่อพารามิเตอร์ของกลยุทธ์คุณถูกปรับจูนเข้ากับข้อมูลในอดีตอย่างแม่นยำมากจนจับ noise — รูปแบบสุ่ม — แทนที่จะจับ signal — พฤติกรรมตลาดที่แท้จริง กลยุทธ์ที่ overfit จะดูเฉิดฉายใน backtest แต่พังทลายในการเทรดจริง
นี่คือเหตุผลเชิงกลไกว่าทำไมมันจึงเกิดขึ้น:
ลองนึกภาพว่าคุณมีข้อมูลราคา BTC 12 เดือน และ DCA bot ที่มีพารามิเตอร์ปรับตั้งได้ 6 ตัว คุณรัน optimizer ที่ทดสอบชุดพารามิเตอร์ 10,000 ชุด แล้วเลือกชุดที่ให้กำไรสูงสุด Optimizer จะหาชุดที่ "ทำนาย" จุดดิ่งและการฟื้นตัวที่แม่นยำในหน้าต่าง 12 เดือนนั้นได้อย่างหลีกเลี่ยงไม่ได้ — ไม่ใช่เพราะมันค้นพบรูปแบบที่แท้จริง แต่เพราะด้วยการลอง 10,000 ครั้ง ชุดพารามิเตอร์บางชุดจะบังเอิญสอดคล้องกับ noise แบบสุ่มในข้อมูล
การเปรียบเทียบ: การทอยลูกเต๋า 10,000 ครั้งแล้วพบลำดับที่การออกเลข 6 มาก่อนการพุ่งของตลาดหุ้นเสมอ ไม่ได้หมายความว่าลูกเต๋าทำนายตลาดได้ ด้วยการขุดข้อมูล (data mining) ที่มากพอ คุณจะพบความสัมพันธ์ปลอม (spurious correlation) เสมอ
ตัวเลขเบื้องหลัง Overfitting
ลองพิจารณาปริภูมิพารามิเตอร์ที่มี:
- การตั้งค่า safety order 5 แบบ (3, 5, 7, 10, 12)
- ค่า step scale 5 ค่า (1.0, 1.2, 1.4, 1.6, 1.8)
- ค่า volume scale 5 ค่า (1.0, 1.3, 1.5, 1.8, 2.0)
- ระดับ take-profit 4 ระดับ (1.0%, 1.5%, 2.0%, 3.0%)
- ค่า initial deviation 3 ค่า (1.5%, 2.0%, 3.0%)
นั่นคือ 5 × 5 × 5 × 4 × 3 = 1,500 ชุดผสม ชุดที่ให้ผลดีที่สุดแทบจะการันตีได้เลยว่าจะประเมินผลการดำเนินงานในโลกจริงสูงเกินไป ด้วยชุดผสม 10,000+ ชุด (ซึ่ง optimizer หลายตัวทดสอบ) ความเสี่ยง overfitting นั้นมหาศาล
กฎเหล็กของการพัฒนากลยุทธ์: อย่าเชื่อตัวเลขผลการดำเนินงานที่ได้จากข้อมูลชุดเดียวกับที่ใช้ optimize กลยุทธ์เด็ดขาด ผลลัพธ์ in-sample ไม่มีความหมายในการทำนายผลการดำเนินงานจริง มีเพียงผลลัพธ์ out-of-sample เท่านั้น — การทดสอบบนข้อมูลที่ optimizer ไม่เคยเห็น — ที่ให้การประมาณผลการดำเนินงานที่ใช้ได้
Walk-Forward Analysis: ทีละขั้นตอน
Walk-forward analysis แก้ปัญหา overfitting ด้วยการสร้างกระบวนการที่มีโครงสร้าง ซึ่งการ optimize และการทดสอบจะถูกแยกออกจากกันเสมอ
กระบวนการสี่ขั้นตอน
ขั้นที่ 1: แบ่งข้อมูลของคุณออกเป็นหน้าต่าง
แบ่งชุดข้อมูลในอดีตทั้งหมดของคุณออกเป็นคู่ของหน้าต่างที่เรียงต่อกัน:
- หน้าต่าง in-sample (ฝึก): ข้อมูลที่ใช้ optimize พารามิเตอร์
- หน้าต่าง out-of-sample (ทดสอบ): ข้อมูลที่ใช้ทดสอบพารามิเตอร์ที่ optimize แล้ว — optimizer จะไม่มีวันเห็นข้อมูลนี้
ขั้นที่ 2: Optimize บนข้อมูล In-Sample
รัน parameter optimizer ของคุณบนหน้าต่าง in-sample เท่านั้น หาชุดพารามิเตอร์ที่ให้ผลดีที่สุดสำหรับช่วงเวลานั้นโดยเฉพาะ
ขั้นที่ 3: ทดสอบบนข้อมูล Out-of-Sample
นำพารามิเตอร์ที่พบในขั้นที่ 2 มาแล้วรัน — โดยไม่ดัดแปลงใดๆ — บนหน้าต่าง out-of-sample บันทึกผลการดำเนินงาน นี่คือตัวเลขเดียวที่มีความสำคัญ
ขั้นที่ 4: เลื่อนไปข้างหน้าและทำซ้ำ
เลื่อนหน้าต่างทั้งหมดไปข้างหน้าตามความยาวของ out-of-sample แล้วทำซ้ำขั้นที่ 1-3 ทำต่อไปจนกว่าจะครอบคลุมชุดข้อมูลทั้งหมด
การแสดงภาพของ Sliding Windows
นี่คือวิธีที่ชุดข้อมูล 24 เดือนจะถูกประมวลผลด้วยหน้าต่าง in-sample 6 เดือน และ out-of-sample 2 เดือน:
| รอบ | In-Sample (Optimize) | Out-of-Sample (ทดสอบ) |
|---|---|---|
| 1 | เดือน 1-6 | เดือน 7-8 |
| 2 | เดือน 3-8 | เดือน 9-10 |
| 3 | เดือน 5-10 | เดือน 11-12 |
| 4 | เดือน 7-12 | เดือน 13-14 |
| 5 | เดือน 9-14 | เดือน 15-16 |
| 6 | เดือน 11-16 | เดือน 17-18 |
| 7 | เดือน 13-18 | เดือน 19-20 |
| 8 | เดือน 15-20 | เดือน 21-22 |
| 9 | เดือน 17-22 | เดือน 23-24 |
แต่ละรอบจะให้ผลลัพธ์ out-of-sample หนึ่งค่า การประมาณผลการดำเนินงานสุดท้ายของคุณคือผลรวมของช่วง out-of-sample ทั้ง 9 ช่วง — ผลการดำเนินงาน out-of-sample ที่แท้จริง 18 เดือน จากชุดข้อมูล 24 เดือน
สังเกตว่าหน้าต่าง in-sample มีการเหลื่อมกัน (เลื่อนทีละ 2 เดือน ไม่ใช่กระโดดทีละ 8) สิ่งนี้ให้จุดข้อมูล out-of-sample แก่คุณมากขึ้น ซึ่งเพิ่มความน่าเชื่อถือทางสถิติของการประมาณผลการดำเนินงานสุดท้ายของคุณ ข้อแลกเปลี่ยนคือต้นทุนการคำนวณ — รอบที่มากขึ้นหมายถึงการรัน optimization ที่มากขึ้น
Anchored เทียบกับ Rolling Walk-Forward
ตัวอย่างข้างต้นใช้แนวทาง rolling ซึ่งหน้าต่าง in-sample เลื่อนไปข้างหน้า อีกทางเลือกหนึ่งคือแนวทาง anchored ซึ่งหน้าต่าง in-sample เริ่มจากจุดเริ่มต้นเสมอ:
| รอบ | In-Sample (Anchored) | Out-of-Sample |
|---|---|---|
| 1 | เดือน 1-6 | เดือน 7-8 |
| 2 | เดือน 1-8 | เดือน 9-10 |
| 3 | เดือน 1-10 | เดือน 11-12 |
| 4 | เดือน 1-12 | เดือน 13-14 |
| ... | ... | ... |
Rolling ปรับตัวเข้ากับสภาวะตลาดที่เปลี่ยนแปลงได้เร็วกว่า แต่มีข้อมูลฝึกต่อหน้าต่างน้อยกว่า Anchored ใช้ข้อมูลต่อหน้าต่างมากกว่า (มากขึ้นเรื่อยๆ เมื่อดำเนินไป) แต่ปรับตัวเข้ากับการเปลี่ยนสภาวะได้ช้ากว่า สำหรับตลาดคริปโตที่สภาวะเปลี่ยนบ่อย โดยทั่วไปแล้ว rolling เป็นที่นิยมมากกว่า
การกำหนดขนาดหน้าต่าง In-Sample
ขนาดของหน้าต่าง in-sample เป็นหนึ่งในการตัดสินใจที่ส่งผลกระทบมากที่สุดใน walk-forward analysis หากกำหนดผิด ผลลัพธ์ของคุณก็จะไม่น่าเชื่อถือไม่ว่าอย่างอื่นจะเป็นอย่างไรก็ตาม
กฎคร่าวๆ 3:1
จุดเริ่มต้นที่เชื่อถือได้คืออัตราส่วน 3:1 ระหว่างหน้าต่าง in-sample และ out-of-sample:
| In-Sample | Out-of-Sample | รอบรวม | กรณีการใช้งาน |
|---|---|---|---|
| 3 เดือน | 1 เดือน | 4 เดือน | กลยุทธ์ระยะสั้นที่ปรับตัวเร็ว |
| 6 เดือน | 2 เดือน | 8 เดือน | กลยุทธ์ DCA และ swing มาตรฐาน |
| 9 เดือน | 3 เดือน | 12 เดือน | กลยุทธ์ตามเทรนด์ระยะยาว |
| 12 เดือน | 4 เดือน | 16 เดือน | กลยุทธ์ที่อดทนมาก ความถี่ต่ำ |
เล็กเกินไป: ปัญหา Noise
หากหน้าต่าง in-sample ของคุณเล็กเกินไป (เช่น 1-2 เดือน) optimizer จะทำงานกับข้อมูลที่จำกัด ซึ่งอาจเป็นตัวแทนของสภาวะตลาดเพียงรูปแบบเดียว พารามิเตอร์ที่ optimize บนตลาด bull 6 สัปดาห์จะล้มเหลวทันทีที่ตลาดหันไปเป็น sideways หรือ bearish หน้าต่างที่เล็กจะให้พารามิเตอร์ที่ไม่เสถียร ซึ่งเปลี่ยนแปลงอย่างมากในแต่ละรอบ — ธงแดงสัญญาณอันตราย
แนวทางขั้นต่ำ: หน้าต่าง in-sample ของคุณควรมี deal (การเทรด) ที่เสร็จสมบูรณ์ของ bot อย่างน้อย 30 ครั้ง หาก bot ของคุณทำเฉลี่ย 2 deal ต่อสัปดาห์ คุณต้องการข้อมูล in-sample อย่างน้อย 15 สัปดาห์ (~4 เดือน)
ใหญ่เกินไป: ปัญหาการปรับตัว
หากหน้าต่าง in-sample ของคุณใหญ่เกินไป (เช่น 18-24 เดือน) optimizer จะเฉลี่ยข้ามสภาวะตลาดหลายแบบ พารามิเตอร์ที่ได้จะเป็นการประนีประนอมที่ทำงานได้ "พอใช้" ในทุกสภาวะ แต่ไม่โดดเด่นในสภาวะใดเลย ในคริปโตที่การเปลี่ยนสภาวะเกิดขึ้นอย่างฉับพลันและรุนแรง พารามิเตอร์ที่ล้าสมัยจะปล่อยให้เงินหลุดมือไป
แนวทางสูงสุด: สำหรับกลยุทธ์คริปโตส่วนใหญ่ ข้อมูล in-sample 9-12 เดือนคือขอบเขตบน เกินกว่านั้น ข้อมูลที่เก่าที่สุดอาจเป็นตัวแทนของสภาวะตลาดที่แตกต่างจากสภาวะปัจจุบันมากจนเพิ่ม noise แทนที่จะเพิ่ม signal
การทดสอบในทางปฏิบัติ: หากพารามิเตอร์ที่เหมาะสมที่สุดเปลี่ยนแปลงมากกว่า 30% ระหว่างรอบ walk-forward ที่ติดกัน แสดงว่าหน้าต่าง in-sample ของคุณเล็กเกินไป หากแทบไม่เปลี่ยนแปลงเลยตลอด 6+ รอบ อาจใหญ่เกินไป (หรือปริภูมิพารามิเตอร์ของคุณหยาบเกินไป) ความผันแปรปานกลาง — พารามิเตอร์เลื่อนไป 5-15% ระหว่างรอบ — บ่งบอกถึงการกำหนดขนาดหน้าต่างที่ดี
การทดสอบเสถียรภาพพารามิเตอร์
การหาชุดพารามิเตอร์ที่ "ดีที่สุด" นั้นไม่เพียงพอ คุณต้องตรวจสอบว่ากลยุทธ์ของคุณตั้งอยู่บน ที่ราบสูงที่ทนทาน (robust plateau) — บริเวณของปริภูมิพารามิเตอร์ที่พารามิเตอร์ใกล้เคียงก็ให้ผลดีเช่นกัน — ไม่ใช่บน ยอดที่เปราะบาง (fragile peak) — จุดเดียวที่ทำงานได้เฉิดฉายแต่การเปลี่ยนแปลงเล็กน้อยใดๆ ก็ทำให้ล้มเหลวอย่างหายนะ
การทดสอบ ±20%
สำหรับแต่ละพารามิเตอร์ที่ optimize แล้ว ให้ทดสอบผลการดำเนินงานโดยปรับพารามิเตอร์นั้น ±10% และ ±20% จากค่าที่เหมาะสมที่สุด ตรวจดูว่าผลการดำเนินงานลดลงมากเพียงใด
ตัวอย่าง: Optimizer ของคุณพบพารามิเตอร์ที่เหมาะสมที่สุดเหล่านี้สำหรับ BTC DCA bot:
- Take profit: 1.8%
- Step scale: 1.4
- Volume scale: 1.5
- Initial deviation: 2.5%
ตอนนี้ทดสอบความแปรผัน:
| พารามิเตอร์ | -20% | -10% | เหมาะสมที่สุด | +10% | +20% |
|---|---|---|---|---|---|
| Take Profit | 1.44% | 1.62% | 1.80% | 1.98% | 2.16% |
| ผลตอบแทนรายปี | 18.2% | 21.5% | 24.1% | 22.8% | 20.3% |
| Max Drawdown | -12.1% | -11.4% | -10.8% | -11.2% | -12.5% |
นี่คือ ที่ราบสูงที่ทนทาน: การปรับ take profit ไป ±20% เปลี่ยนผลตอบแทนรายปีจาก 24.1% ไปอยู่ในช่วง 18.2-22.8% — ลดลงราว 25% ในกรณีที่แย่ที่สุด กลยุทธ์มีเสถียรภาพ
เปรียบเทียบกับยอดที่เปราะบาง:
| พารามิเตอร์ | -20% | -10% | เหมาะสมที่สุด | +10% | +20% |
|---|---|---|---|---|---|
| Take Profit | 1.44% | 1.62% | 1.80% | 1.98% | 2.16% |
| ผลตอบแทนรายปี | 3.1% | 14.2% | 38.7% | 11.8% | -2.4% |
| Max Drawdown | -28.3% | -18.1% | -8.2% | -22.5% | -35.1% |
นี่คือ ยอดที่เปราะบาง: ผลตอบแทน "ที่เหมาะสมที่สุด" 38.7% ทรุดลงเหลือ 3.1% หรือถึงขั้นผลตอบแทนติดลบเมื่อมีการเปลี่ยนพารามิเตอร์เพียงเล็กน้อย กลยุทธ์นี้ curve-fit และจะล้มเหลวในการเทรดจริง เพราะสภาวะตลาดจริงไม่มีวันตรงกับพารามิเตอร์ที่ optimize ไว้อย่างสมบูรณ์แบบ
กฎการลดลง 50%: หากการปรับพารามิเตอร์ตัวใดตัวหนึ่งไป ±20% ทำให้ผลการดำเนินงานลดลงมากกว่า 50% แสดงว่ากลยุทธ์เปราะบางและน่าจะ overfit การเปลี่ยนพารามิเตอร์จากผลตอบแทนรายปี 24% เป็น 12% คือการลดลง 50% — เส้นแบ่ง การเปลี่ยนจาก 38.7% เป็น 3.1% คือการลดลง 92% — ทิ้งกลยุทธ์ทั้งหมดไปได้เลย
การทดสอบความทนทานข้ามมิติ
กลยุทธ์ที่ทำงานได้เฉพาะบนคู่เทรดเดียว, timeframe เดียว หรือสภาวะตลาดเดียวนั้นไม่ทนทาน — มัน curve-fit ความได้เปรียบทางตลาดที่แท้จริงจะคงอยู่ข้ามสภาวะที่เกี่ยวข้องกันแต่แตกต่างกัน
มิติที่ 1: คู่เทรดที่ต่างกัน
หากกลยุทธ์ DCA bot ของคุณถูก optimize บน BTC/USDT ให้ทดสอบพารามิเตอร์ชุดเดียวกัน (หรือ optimize ใหม่) บน:
| คู่ | ผลที่คาดหวังหากทนทาน | ธงแดง |
|---|---|---|
| ETH/USDT | ทิศทางคล้ายกัน ขนาดต่างกันเล็กน้อย | ผลตอบแทนติดลบ |
| SOL/USDT | ทิศทางคล้ายกัน ผลกระทบจากความผันผวนสูงกว่า | ผลตอบแทนติดลบ |
| BNB/USDT | ทิศทางคล้ายกัน ขนาดต่างกัน | พฤติกรรมต่างกันอย่างสุดขั้ว |
การตีความ: กลยุทธ์ DCA ที่ทนทานควรทำงานได้บนคู่คริปโต large-cap ที่มีสภาพคล่องคู่ใดก็ตาม — พฤติกรรมพื้นฐาน (การกลับสู่ค่าเฉลี่ยหลังจุดดิ่ง) เป็นสากลในสินทรัพย์เหล่านี้ หากกลยุทธ์ของคุณแสดงผลตอบแทนรายปี 30% บน BTC แต่ -5% บน ETH แสดงว่าพารามิเตอร์น่าจะถูกปรับให้เข้ากับรูปแบบเฉพาะของ BTC ที่ไม่สามารถนำไปใช้ทั่วไปได้
กฎคร่าวๆ: ทดสอบบนคู่เทรดที่ต่างกันอย่างน้อย 3 คู่ หาก 2 ใน 3 แสดงผลตอบแทน out-of-sample เป็นบวก แสดงว่ากลยุทธ์มีความทนทานข้ามคู่เทรด
มิติที่ 2: Timeframe ที่ต่างกัน
พารามิเตอร์ที่ optimize สำหรับข้อมูลแท่งเทียน 1 ชั่วโมง ควรแสดงผลลัพธ์ที่คล้ายกันในเชิงทิศทางบนข้อมูล 4 ชั่วโมงและรายวัน ขนาดจะต่างกัน แต่กลยุทธ์ก็ยังควรทำกำไรได้
| Timeframe | สิ่งที่เปลี่ยนแปลง | สิ่งที่ควรคงเดิม |
|---|---|---|
| 1h → 4h | สัญญาณน้อยลง การเคลื่อนไหวต่อสัญญาณใหญ่ขึ้น | ความสามารถในการทำกำไรโดยรวม, ทิศทาง win rate |
| 4h → 1d | สัญญาณยิ่งน้อยลง การเคลื่อนไหวใหญ่ขึ้นมาก | ค่าคาดหวังเป็นบวก, อัตราส่วน drawdown |
| 1h → 15m | สัญญาณมากขึ้น noise มากขึ้น false trigger มากขึ้น | ก็ยังควรทำกำไรได้ (อาจต้องการ filter ที่เข้มขึ้น) |
ธงแดง: กลยุทธ์ที่ทำงานได้เฉพาะบน 4h แต่ล้มเหลวทั้งบน 1h และ 1d น่าจะถูก optimize ให้เข้ากับรูปแบบ noise เฉพาะของแท่งเทียน 4h บนคู่ที่ทดสอบ
มิติที่ 3: สภาวะตลาดที่ต่างกัน
นี่คือการทดสอบที่สำคัญที่สุด แบ่งข้อมูลของคุณออกเป็นช่วงตามสภาวะ:
| สภาวะ | ช่วงตัวอย่าง | ลักษณะเฉพาะ |
|---|---|---|
| ตลาด Bull | ต.ค. 2023 - มี.ค. 2024 | BTC จาก ~$27K ไป ~$73K |
| ตลาด Bear | พ.ย. 2021 - พ.ย. 2022 | BTC จาก ~$69K ไป ~$16K |
| Sideways | มิ.ย. 2023 - ก.ย. 2023 | BTC เคลื่อนในช่วง $25K-$31K |
| เหตุการณ์ Crash | มี.ค. 2020 (COVID) | BTC -50% ใน 48 ชั่วโมง |
| การฟื้นตัว | เม.ย. 2020 - ก.ค. 2020 | BTC จาก $5K กลับไป $12K |
กลยุทธ์ควรแสดง:
- ผลตอบแทนเป็นบวกในอย่างน้อย 2 จาก 3 สภาวะหลัก (bull/bear/sideways)
- Drawdown ที่ควบคุมได้ระหว่างเหตุการณ์ crash (ไม่ใช่ความล้มเหลวแบบหายนะ)
- ผลการฟื้นตัวที่สมเหตุสมผลหลัง crash
| มิติการทดสอบ | ข้อกำหนดขั้นต่ำ | ผลลัพธ์ที่แข็งแกร่ง | ตัวบ่งชี้ความล้มเหลว |
|---|---|---|---|
| ข้ามคู่เทรด (3+ คู่) | 2 จาก 3 คู่ทำกำไร | ทุกคู่ทำกำไรด้วยขนาดที่คล้ายกัน | ทำงานได้เฉพาะบน 1 คู่เท่านั้น |
| ข้าม timeframe (3 TF) | ทิศทางคล้ายกันในทุกอัน | ทำกำไรในทุกอันด้วยการ scale ที่คาดหวัง | ทำกำไรใน 1 อัน ติดลบในอันอื่น |
| ข้ามสภาวะ (bull/bear/sideways) | เป็นบวกใน 2 จาก 3 สภาวะ | เป็นบวกในทั้ง 3 ด้วยความผันแปรที่คาดหวัง | ทำงานได้เฉพาะในสภาวะเดียว |
| Stress test (เหตุการณ์ black swan) | Drawdown < 2 เท่าของปกติ | Drawdown < 1.5 เท่าของปกติ | กลยุทธ์ระเบิดพังทั้งหมด |
Stress Testing: เหตุการณ์ Black Swan
Backtesting ปกติครอบคลุมสภาวะตลาดปกติ Stress testing ครอบคลุมเหตุการณ์ที่ทำลายกลยุทธ์ หาก bot ของคุณรอดจากเดือนมีนาคม 2020, การล่มสลายของ FTX (พฤศจิกายน 2022) และวิกฤตธนาคาร SVB (มีนาคม 2023) ได้ มันก็น่าจะรอดจากอะไรก็ตามที่จะมาในอนาคต
เหตุการณ์สำคัญที่ควรนำมาเล่นซ้ำ
| เหตุการณ์ | วันที่ | การเคลื่อนไหว BTC | ระยะเวลา | สิ่งที่ทดสอบ |
|---|---|---|---|---|
| COVID Crash | 12-13 มี.ค. 2020 | -50% ใน 48 ชม. | 2 วัน | การรอดจาก flash crash สุดขั้ว |
| การห้ามขุดเหมืองของจีน | พ.ค.-มิ.ย. 2021 | -55% ตลอด 6 สัปดาห์ | 6 สัปดาห์ | การลดลงแบบบดเซาะยืดเยื้อ |
| การล่มสลาย LUNA/UST | พ.ค. 2022 | -35% ใน 1 สัปดาห์ | 1 สัปดาห์ | การ crash จากการลุกลาม (contagion) |
| การล่มสลาย FTX | พ.ย. 2022 | -25% ใน 1 สัปดาห์ | 1 สัปดาห์ | การสูญสภาพคล่องจากวิกฤตความเชื่อมั่น |
| วิกฤต SVB | มี.ค. 2023 | -10% แล้ว +25% | 2 สัปดาห์ | การฟื้นตัวรูป V อย่างฉับพลัน |
สิ่งที่ควรวัดใน Stress Test
-
Maximum drawdown: Position ดิ่งลงลึกแค่ไหน? DCA bot ที่มี safety order 5 ตัว และเงินทุน $3,000 — มันใช้ order จนหมดหรือไม่? โดน liquidate หรือไม่ (หากเป็น futures)?
-
เวลาฟื้นตัว: หลังเหตุการณ์ ใช้เวลานานแค่ไหนกว่า bot จะปิด deal ที่ทำกำไรได้? หากการฟื้นตัวใช้เวลา 6+ เดือน เงินทุนก็ถูกล็อกไว้อย่างมีประสิทธิผล
-
การตรวจสอบ liquidation (futures เท่านั้น): ที่ leverage 3x การ crash ไปถึงราคา liquidation ของคุณหรือไม่? COVID crash (-50%) จะ liquidate position long ใดๆ ที่ leverage 2x หรือสูงกว่าหากไม่มี stop loss วางไว้
-
การใช้ safety order: Safety order ถูก trigger ไปกี่เปอร์เซ็นต์? หาก safety order ทั้งหมดถูกใช้ไปโดยยังมีพื้นที่เหลือ แสดงว่าการตั้งค่ามีขนาดที่เหมาะสมดี หาก crash เกิน safety order ที่ลึกที่สุดของคุณ คุณต้องการระยะห่างที่กว้างขึ้นหรือ order มากขึ้น
เมื่อทำ stress test อย่าเพียงตรวจ P&L สุดท้าย — ให้ตรวจสอบ เส้นทาง ด้วย กลยุทธ์ที่เคยติดลบ -40% ระหว่าง deal ก่อนจะฟื้นตัวมาทำกำไร +1.5% นั้นในทางเทคนิคถือว่า "ทำงานได้" แต่ drawdown ขนาดนั้นคงทำให้ trader ส่วนใหญ่ตื่นตระหนกแล้วปิด bot ด้วยมือ กลยุทธ์ที่ดีควรคุม drawdown ระหว่าง deal ให้อยู่ในขอบเขตที่ทนได้ (โดยทั่วไป < 25% สำหรับ spot, < 15% สำหรับ position ที่ใช้ leverage)
นัยสำคัญทางสถิติ
กลยุทธ์ที่ชนะ 8 จาก 10 ครั้งฟังดูน่าประทับใจ แต่ด้วยการเทรดเพียง 10 ครั้ง มีความน่าจะเป็น 4.4% ที่กลยุทธ์แบบสุ่ม (โยนเหรียญ 50/50) ก็จะให้ผลชนะ 8 ครั้งเช่นกัน นั่นไม่มีนัยสำคัญทางสถิติ คุณต้องการการเทรดที่มากพอเพื่อมั่นใจว่าผลลัพธ์ของคุณไม่ได้เกิดจากความบังเอิญแบบสุ่ม
จำนวนการเทรดขั้นต่ำ
| จำนวนการเทรด | ความน่าเชื่อถือทางสถิติ | คำแนะนำ |
|---|---|---|
| < 10 | ต่ำมาก — ผลลัพธ์อาจเป็นความสุ่มได้ง่าย | ใช้ไม่ได้ |
| 10-29 | ต่ำ — บ่งชี้ทิศทางได้แต่ไม่น่าเชื่อถือ | เบื้องต้นเท่านั้น |
| 30-49 | ปานกลาง — ขั้นต่ำสำหรับข้อสรุปพื้นฐาน | เกณฑ์ขั้นต่ำ |
| 50-99 | ดี — น่าเชื่อถือพอสมควร | ยอมรับได้ |
| 100-199 | แข็งแกร่ง — มีนัยสำคัญทางสถิติ | ที่ต้องการ |
| 200+ | แข็งแกร่งมาก — ความมั่นใจสูง | อุดมคติ |
ช่วงความเชื่อมั่น 95% บนผลตอบแทน
ช่วงความเชื่อมั่น (confidence interval) บอกคุณถึงช่วงที่น่าจะเป็นไปได้ของผลการดำเนินงานที่แท้จริงของกลยุทธ์ นี่คือวิธีคำนวณและตีความ:
สูตร (อย่างง่ายสำหรับผลตอบแทน):
CI₉₅% = R̄ ± 1.96 × (σ / √n)
โดยที่:
- R̄ = ผลตอบแทนเฉลี่ยต่อการเทรด
- σ = ส่วนเบี่ยงเบนมาตรฐานของผลตอบแทนต่อการเทรด
- n = จำนวนการเทรด
ตัวอย่าง: DCA bot ของคุณทำการเทรดเสร็จ 80 ครั้ง ด้วยผลตอบแทนเฉลี่ย 1.5% ต่อ deal และส่วนเบี่ยงเบนมาตรฐาน 0.8%
CI₉₅% = 1.5% ± 1.96 × (0.8% / √80) = 1.5% ± 0.175%
ผลลัพธ์: คุณมั่นใจได้ 95% ว่าผลตอบแทนเฉลี่ยที่แท้จริงต่อ deal อยู่ระหว่าง 1.325% และ 1.675% นี่เป็นช่วงที่แคบและมีประโยชน์เพราะคุณมีการเทรด 80 ครั้ง
เปรียบเทียบ: กลยุทธ์เดียวกันแต่มีการเทรดเพียง 15 ครั้ง:
CI₉₅% = 1.5% ± 1.96 × (0.8% / √15) = 1.5% ± 0.405%
ผลลัพธ์: CI 95% คือ 1.095% ถึง 1.905% — กว้างขึ้นมาก แน่นอนน้อยลงมาก ด้วยการเทรด 15 ครั้ง ผลตอบแทนที่แท้จริงอาจต่ำกว่าค่าเฉลี่ยที่วัดได้ของคุณถึง 27%
และด้วยการเทรดเพียง 8 ครั้ง:
CI₉₅% = 1.5% ± 1.96 × (0.8% / √8) = 1.5% ± 0.554%
ผลลัพธ์: CI 95% คือ 0.946% ถึง 2.054% — ผลตอบแทนที่แท้จริงของคุณอาจต่ำกว่าถึง 37% ด้วยการเทรด 8 ครั้ง คุณแทบไม่รู้ผลการดำเนินงานจริงของคุณเลย
เมื่อประเมินกลยุทธ์ ให้ดูที่ ขอบล่าง ของช่วงความเชื่อมั่น 95% ไม่ใช่ค่าเฉลี่ย หากขอบล่างยังคงเป็นบวกและยอมรับได้ (เช่น สูงกว่าเกณฑ์ผลตอบแทนขั้นต่ำที่คุณยอมรับได้) กลยุทธ์ก็ควรค่าแก่การเทรด หากขอบล่างใกล้ศูนย์หรือติดลบ คุณต้องการการเทรดมากขึ้นก่อนที่จะลงเงินทุนจริง
ตัวอย่างจริง: ตรวจพบ Overfitting
มาเดินผ่าน walk-forward analysis ที่สมบูรณ์ ซึ่งเปิดโปง overfitting ในกลยุทธ์ DCA กัน
กลยุทธ์
DCA bot บน ETH/USDT ด้วยปริภูมิพารามิเตอร์ดังต่อไปนี้:
- Take profit: 1.0% ถึง 3.0% (เพิ่มทีละ 0.5%)
- Safety order: 3 ถึง 8
- Step scale: 1.0 ถึง 2.0 (เพิ่มทีละ 0.2)
- Volume scale: 1.0 ถึง 2.0 (เพิ่มทีละ 0.25)
- Initial deviation: 1.5% ถึง 3.5% (เพิ่มทีละ 0.5%)
จำนวนชุดผสมพารามิเตอร์ทั้งหมด: 5 × 6 × 6 × 5 × 5 = 4,500
ผลลัพธ์ Backtest แบบพื้นฐาน (ช่วง 12 เดือน)
Optimizer หาพารามิเตอร์ที่ดีที่สุดบนชุดข้อมูล 12 เดือนเต็ม:
- Take profit: 2.5%
- Safety order: 5
- Step scale: 1.8
- Volume scale: 1.75
- Initial deviation: 2.0%
ผลลัพธ์: ผลตอบแทนรายปี 45.2%, win rate 87%, max drawdown -14.3%, ทำ deal เสร็จ 62 ครั้ง
ดูเยี่ยมมาก แต่มันเป็นของจริงหรือเปล่า?
Walk-Forward Analysis (12 เดือนเดียวกัน)
ใช้หน้าต่าง rolling แบบ in-sample 6 เดือน, out-of-sample 2 เดือน:
| รอบ | ช่วง In-Sample | ช่วง Out-of-Sample | ผลตอบแทน In-Sample | ผลตอบแทน Out-of-Sample | TP ที่เหมาะสม | Step ที่เหมาะสม |
|---|---|---|---|---|---|---|
| 1 | เดือน 1-6 | เดือน 7-8 | 52.1% (รายปี) | 8.3% (รายปี) | 2.0% | 1.6 |
| 2 | เดือน 3-8 | เดือน 9-10 | 48.7% (รายปี) | 15.1% (รายปี) | 2.5% | 1.8 |
| 3 | เดือน 5-10 | เดือน 11-12 | 44.3% (รายปี) | 12.8% (รายปี) | 3.0% | 2.0 |
ผลลัพธ์
| ตัวชี้วัด | Backtest แบบพื้นฐาน | Walk-Forward (ผลรวม OOS) |
|---|---|---|
| ผลตอบแทนรายปี | 45.2% | 12.1% |
| Win Rate | 87% | 79% |
| Max Drawdown | -14.3% | -19.7% |
| Profit Factor | 3.8 | 1.9 |
| Deal ที่วิเคราะห์ | 62 | 62 |
ผลตอบแทนรายปีของ walk-forward คือ 12.1% — เพียง 27% ของ 45.2% จาก backtest แบบพื้นฐาน Backtest แบบพื้นฐานประเมินผลการดำเนินงานสูงเกินไป 3.7 เท่า
เกิดอะไรขึ้น?
-
พารามิเตอร์ที่เหมาะสมที่สุดเลื่อนไปมาระหว่างรอบ: Take profit อยู่ในช่วง 2.0% ถึง 3.0%, step scale จาก 1.6 ถึง 2.0 พารามิเตอร์ "ที่เหมาะสมที่สุด" จาก backtest แบบเต็มช่วง (TP=2.5%, Step=1.8) เป็นการประนีประนอมที่บังเอิญดูดีเมื่อเฉลี่ยตลอดทั้งช่วง แต่ที่จริงไม่ได้ดีที่สุดสำหรับช่วงย่อยใดๆ โดยเฉพาะ
-
สภาวะตลาดเปลี่ยน: เดือน 1-6 เป็นช่วง bullish ปานกลาง (การเด้งบ่อย = ผลตอบแทนสูงสำหรับ DCA) เดือน 7-10 เป็น sideways ที่ความผันผวนต่ำ (ปิด deal ได้น้อยลง) เดือน 11-12 เป็นการปรับฐานอย่างรุนแรง (drawdown ลึกก่อนฟื้นตัว) พารามิเตอร์ที่ optimize สำหรับช่วง bullish ทำผลได้ต่ำกว่าในช่วงต่อมา
-
45.2% เป็นเรื่อง "โชคดี": Optimizer แบบเต็มช่วงพบพารามิเตอร์ที่บังเอิญสอดคล้องกับลำดับเฉพาะของจุดดิ่งและการฟื้นตัวใน 12 เดือนนั้น เลื่อนข้อมูลไปแม้เพียง 2-3 สัปดาห์ พารามิเตอร์ชุดเดียวกันนั้นก็จะให้ผลลัพธ์ที่ต่างกันมาก
12.1% ควรค่าแก่การเทรดหรือไม่?
อาจจะใช่ — ผลตอบแทนรายปี 12.1% บนกลยุทธ์ DCA bot หากทนทาน เป็นผลลัพธ์ที่น่าเคารพ ซึ่งเอาชนะกลยุทธ์ถือแบบ passive ส่วนใหญ่ในตลาด sideways/bear กุญแจสำคัญคือการเข้าใจว่า 12.1% คือความคาดหวังตามจริง ไม่ใช่ 45.2% จากนั้นคุณจึงสามารถประเมินได้ว่า 12.1% นั้นคุ้มค่ากับการล็อกเงินทุน, ความเสี่ยง และค่าธรรมเนียมหรือไม่
อัตราส่วนทั่วไปในกลยุทธ์ที่ออกแบบมาดี: ผลการดำเนินงานของ walk-forward โดยทั่วไปอยู่ที่ 25-50% ของผลการดำเนินงานจาก backtest แบบพื้นฐาน หากผลตอบแทน walk-forward ของคุณสูงกว่า 50% ของ backtest แสดงว่ากลยุทธ์ทนทานอย่างผิดปกติ หากต่ำกว่า 25% แสดงว่ามี overfitting รุนแรง ตัวอย่าง ETH DCA ที่ 27% (12.1/45.2) ตกอยู่ที่ปลายล่าง — overfitting ปานกลาง แต่กลยุทธ์ก็ยังมีความได้เปรียบอยู่
เช็กลิสต์การตรวจสอบ 10 ข้อ
ก่อนที่จะลงเงินทุนจริงกับกลยุทธ์ bot ใดๆ ให้ทำงานตามเช็กลิสต์นี้ กลยุทธ์ควรผ่านอย่างน้อย 8 จาก 10 ข้อ จึงจะถือว่าพร้อมสำหรับ production
| # | การตรวจสอบ | เกณฑ์ผ่าน | วิธีทดสอบ |
|---|---|---|---|
| 1 | Walk-forward OOS เป็นบวก | ผลรวมผลตอบแทน OOS > 0 ในทุกรอบ | รัน WFA ด้วยอัตราส่วน IS/OOS 3:1 |
| 2 | OOS ≥ 25% ของผลตอบแทน backtest | อัตราส่วนผลตอบแทน OOS/backtest ≥ 0.25 | เปรียบเทียบผลรวม OOS กับ backtest แบบเต็มช่วง |
| 3 | เสถียรภาพพารามิเตอร์ | เปลี่ยนพารามิเตอร์ ±20% → สูญเสียผลการดำเนินงาน < 50% | ปรับแต่ละพารามิเตอร์ทีละตัว |
| 4 | ความทนทานข้ามคู่เทรด | ทำกำไร ≥ 2 จาก 3 คู่ที่ทดสอบ | ทดสอบบน BTC, ETH และ alt หนึ่งตัว (เช่น SOL) |
| 5 | การรอดข้ามหลายสภาวะ | ผลตอบแทนเป็นบวกใน ≥ 2 จาก 3 สภาวะ | ทดสอบบนช่วงข้อมูล bull, bear และ sideways |
| 6 | การรอด stress test | Drawdown < 2 เท่าของปกติระหว่างการเล่นซ้ำ black swan | เล่นซ้ำเหตุการณ์ COVID crash, FTX collapse |
| 7 | จำนวนการเทรดเพียงพอ | ≥ 30 การเทรด OOS (≥ 100 ที่ต้องการ) | นับการเทรดในทุกรอบ WFA |
| 8 | ขอบล่าง 95% CI เป็นบวก | ขอบล่างของ 95% CI บนผลตอบแทน > 0% | คำนวณ CI ด้วยสูตรข้างต้น |
| 9 | Profit factor ≥ 1.5 (OOS) | กำไร OOS รวม / ขาดทุน OOS รวม ≥ 1.5 | คำนวณจากผลลัพธ์ WFA |
| 10 | โมเดลค่าธรรมเนียม/slippage ตามจริง | ผลลัพธ์รวมค่าธรรมเนียม 0.04-0.1% ต่อการเทรด + slippage | ตรวจสอบการตั้งค่าค่าธรรมเนียมของ backtester |
การให้คะแนนกลยุทธ์ของคุณ
| คะแนน | การประเมิน | การกระทำ |
|---|---|---|
| 9-10 | ยอดเยี่ยม — ความได้เปรียบแข็งแกร่งด้วยความมั่นใจสูง | นำไปใช้ด้วยขนาด position มาตรฐาน |
| 7-8 | ดี — น่าจะมีความได้เปรียบจริงพร้อมความไม่แน่นอนบ้าง | นำไปใช้ด้วยขนาด position ที่ลดลง ติดตามอย่างใกล้ชิด |
| 5-6 | ก้ำกึ่ง — อาจมีความได้เปรียบแต่หลักฐานยังอ่อน | รัน paper trading 1-3 เดือนก่อนลงเงินทุน |
| 3-4 | อ่อน — ความเสี่ยง overfitting สูง | ออกแบบพารามิเตอร์กลยุทธ์ใหม่ ทดสอบใหม่ |
| 0-2 | ล้มเหลว — ไม่มีหลักฐานของความได้เปรียบจริง | ทิ้งกลยุทธ์ทั้งหมดไปได้เลย |
Trader หลายคนข้ามเช็กลิสต์นี้เพราะผลลัพธ์ backtest แบบพื้นฐานของพวกเขานั้นล่อตาล่อใจ กลยุทธ์ที่แสดงผลตอบแทนรายปี 80% ใน backtest นั้นยากที่จะเดินจากไป แม้ว่ามันจะไม่ผ่าน 7 จาก 10 ข้อการตรวจสอบ วินัยตรงจุดนี้แยกผู้ปฏิบัติการ bot ที่ยั่งยืนออกจากคนที่ระเบิดบัญชีของตัวเองภายในไม่กี่เดือน จงเชื่อในกระบวนการ ไม่ใช่ใน backtest
เคล็ดลับการนำไปใช้จริง
คุณภาพข้อมูลสำคัญ
Walk-forward analysis ดีได้เท่ากับข้อมูลที่คุณป้อนเข้าไปเท่านั้น ตรวจสอบให้แน่ใจว่าข้อมูลในอดีตของคุณ:
- รวม wick จริง (high/low) ไม่ใช่แค่ open/close — DCA safety order มักถูก trigger บน wick ภายในแท่งเทียน
- ไม่มีช่องว่างหรือแท่งเทียนที่หายไป (ตรวจสอบกับผู้ให้บริการข้อมูลของคุณ)
- ใช้การจัดการ timezone ที่สอดคล้องกัน
- คำนึงถึงความแตกต่างของราคาเฉพาะแต่ละ exchange (Binance BTC เทียบกับ Bybit BTC อาจต่างกัน 0.1-0.3% ระหว่างช่วงผันผวน)
ต้นทุนการคำนวณ
WFA ต้องการการรัน optimizer ของคุณหลายครั้ง หากการรัน optimization แต่ละครั้งใช้เวลา 5 นาที และคุณมี 9 รอบ WFA นั่นคือ 45 นาทีต่อกลยุทธ์แต่ละแบบ เมื่อรวมการทดสอบเสถียรภาพพารามิเตอร์ (5 ความแปรผัน × 4 พารามิเตอร์ = 20 รันเพิ่มเติม) คุณกำลังมองที่ 2+ ชั่วโมงต่อกลยุทธ์
เคล็ดลับ: เริ่มต้นด้วยตาราง (grid) พารามิเตอร์แบบหยาบ (ชุดผสมน้อยกว่า) สำหรับการคัดกรอง WFA เบื้องต้น รัน optimization แบบละเอียดเฉพาะกับกลยุทธ์ที่ผ่านการคัดกรองแบบหยาบแล้วเท่านั้น
การหลีกเลี่ยง Look-Ahead Bias
ตรวจสอบให้แน่ใจว่า backtester ของคุณไม่ใช้ข้อมูลอนาคตโดยไม่ตั้งใจ แหล่งที่มาทั่วไปของ look-ahead bias:
- ใช้ราคาปิด (close) สำหรับการ fill order ทั้งที่ order ควร fill ที่ราคาเปิดของแท่งเทียนถัดไป
- ใช้ indicator ที่คำนวณบนชุดข้อมูลทั้งหมด แทนการคำนวณแบบ rolling
- รวมข้อมูลเกี่ยวกับเหตุการณ์ (เช่น การล่มสลายของ FTX) เข้าไปในตรรกะกลยุทธ์ก่อนที่มันจะเกิดขึ้น
เมื่อใดควรตรวจสอบความถูกต้องซ้ำ
กลยุทธ์ที่นำไปใช้แล้วควรถูกตรวจสอบความถูกต้องซ้ำทุก 3-6 เดือน หรือเมื่อ:
- ผลการดำเนินงานเบี่ยงเบนจากความคาดหวังของ walk-forward มากกว่า 2 ส่วนเบี่ยงเบนมาตรฐาน
- โครงสร้างตลาดเปลี่ยนแปลงพื้นฐาน (กฎระเบียบใหม่, การล่มสลายของ exchange รายใหญ่)
- คุณแก้ไขพารามิเตอร์ใดๆ ของกลยุทธ์
สำหรับการ optimize อย่างต่อเนื่อง ดูคู่มือของเราเรื่อง การ Optimize ผลการดำเนินงานของ Trading Bot
คำถามที่พบบ่อย
Walk-forward analysis ต่างจากการทดสอบ out-of-sample แบบพื้นฐานอย่างไร?
การทดสอบ out-of-sample แบบพื้นฐานแบ่งข้อมูลออกเป็น training set หนึ่งชุดและ test set หนึ่งชุด (เช่น ฝึก 10 เดือน ทดสอบ 2 เดือน) Walk-forward analysis ทำสิ่งนี้ หลายครั้ง ด้วยหน้าต่างแบบ rolling โดยให้ผลลัพธ์ out-of-sample จำนวนมากข้ามสภาวะตลาดที่ต่างกัน สิ่งนี้ให้การกระจาย (distribution) ของผลการดำเนินงาน out-of-sample แก่คุณ แทนที่จะเป็นจุดข้อมูลเดียว — ซึ่งน่าเชื่อถือกว่ามากในการประมาณผลการดำเนินงานในโลกจริง
ฉันควรใช้อัตราส่วน in-sample ต่อ out-of-sample เท่าไหร่?
เริ่มต้นด้วย 3:1 (เช่น 6 เดือน IS / 2 เดือน OOS) หากกลยุทธ์ของคุณเทรดบ่อย (หลาย deal ต่อวัน) คุณสามารถใช้หน้าต่างที่สั้นกว่าได้ (3 เดือน IS / 1 เดือน OOS) หากเทรดน้อย (ไม่กี่ deal ต่อเดือน) ให้ใช้หน้าต่างที่ยาวกว่า (12 เดือน IS / 4 เดือน OOS) ข้อจำกัดสำคัญ: แต่ละหน้าต่าง OOS ควรมีการเทรดอย่างน้อย 8-10 ครั้ง เพื่อให้ผลลัพธ์มีความหมายในระดับขั้นต่ำ
ผลลัพธ์ walk-forward ของฉันแย่กว่า backtest — ฉันควรเลิกกลยุทธ์นี้หรือไม่?
ไม่จำเป็น ผลลัพธ์ walk-forward จะแย่กว่าผลลัพธ์ backtest เสมอ — นั่นเป็นเรื่องปกติและคาดได้ คำถามคือ แย่กว่ามากแค่ไหน หากผลตอบแทน WFA อยู่ที่ 25-50% ของผลตอบแทน backtest กลยุทธ์ก็น่าจะมีความได้เปรียบที่แท้จริง หากผลตอบแทน WFA ต่ำกว่า 10% ของผลตอบแทน backtest (เช่น backtest แสดง 50%, WFA แสดง 4%) กลยุทธ์ก็ overfit อย่างหนักและควรถูกออกแบบใหม่หรือทิ้งไป
ฉันต้องการกี่รอบ walk-forward?
ขั้นต่ำ 4-5 รอบสำหรับความน่าเชื่อถือพื้นฐาน ตามอุดมคติคือ 8-12 รอบสำหรับข้อสรุปที่ทนทาน รอบที่มากขึ้นหมายถึงจุดข้อมูล out-of-sample มากขึ้น ซึ่งทำให้ช่วงความเชื่อมั่นของคุณแคบลง ด้วยรอบที่น้อยกว่า 4 ผลรวม out-of-sample ของคุณอาจถูกบิดเบือนด้วยช่วง OOS ช่วงเดียวที่ดีหรือแย่ผิดปกติ
ฉันสามารถใช้ walk-forward analysis กับ grid bot หรือกลยุทธ์ที่ไม่ใช่ DCA อื่นๆ ได้หรือไม่?
ได้ WFA เป็นกลางต่อกลยุทธ์ (strategy-agnostic) — มันใช้ได้กับกลยุทธ์เทรดแบบมีพารามิเตอร์ใดๆ Grid bot, กลยุทธ์ mean-reversion, กลยุทธ์ momentum และแม้แต่ระบบเข้าตามสัญญาณ ล้วนได้ประโยชน์จากการตรวจสอบความถูกต้องแบบ walk-forward ระเบียบวิธีเหมือนกัน: optimize พารามิเตอร์บนข้อมูล in-sample, ทดสอบบนข้อมูล out-of-sample, เลื่อนไปข้างหน้า, ทำซ้ำ
จะเกิดอะไรขึ้นหากพารามิเตอร์ที่เหมาะสมที่สุดของฉันเปลี่ยนแปลงอย่างมากระหว่างรอบ WFA?
การเลื่อนพารามิเตอร์ครั้งใหญ่ระหว่างรอบบ่งชี้สองสิ่ง: (1) สภาวะตลาดเปลี่ยนแปลงอย่างมีนัยสำคัญระหว่างช่วง (ซึ่งเป็นข้อมูลจริงและสำคัญ) หรือ (2) ปริภูมิพารามิเตอร์ของคุณมีจุดที่เหมาะสมเฉพาะที่ (local optima) หลายจุดที่มีผลการดำเนินงานใกล้เคียงกัน (optimizer กระโดดไปมาระหว่างจุดเหล่านั้นแบบสุ่ม) เพื่อแยกแยะ ให้ตรวจสอบว่า ทิศทาง ของการเลื่อนสอดคล้องกันหรือไม่ หาก take profit เพิ่มขึ้นเรื่อยๆ ตามเวลา แสดงว่าตลาดกำลังมีแนวโน้มไปสู่ความผันผวนที่ต่ำลง หากมันแกว่งไปมาแบบสุ่ม พารามิเตอร์นั้นอาจไม่สำคัญมากนัก — ซึ่งที่จริงเป็นสัญญาณที่ดีสำหรับความทนทาน
