ผ่านการทดสอบ 5 กลุ่ม, สถานะจริงคือ 1 ชิ้น――สิ่งที่การทดสอบย้อนหลัง 129 ครั้งสอนเรา
บทความนี้สามารถเข้าใจได้
- ก่อนหมุน backtest ให้กำหนดวิธี “ค้นหา” และ “เงื่อนไขการคัดเลือก” ให้แน่น
- การตรวจสอบ 129 รอบพบว่าสิ้นสุดที่ 5 บนจริงๆ แล้วเป็นปรากฏการณ์เดียวกัน
- เหตุผลที่ไม่เลือกกฎที่ได้คะแนนดีที่สุด
บทนำ: ก่อนจะค้นหา ให้กำหนดวิธีการค้นหา
เมื่อค้นหากฎของ EA หลายคนจะทำซ้ำๆ ว่า “ลองดู ถ้าเป็นไปได้ดีก็เสริมเงื่อนไขและลองใหม่” ฉันเคยเป็นแบบนั้นด้วย แต่วิธีนี้มีข้อบกพร่องคือยิ่งลองมาก โอกาสที่จะเข้าใจผิดว่ากฎที่ทำได้ดีจริงๆ เป็นของจริงก็จะสูงขึ้น
ดังนั้นคราวนี้จึงทำให้ลำดับเป็นกลับ ในก่อนที่จะหมุน backtest ครั้งแรกทั้งหมดได้วางเอกสารทุกอย่างไว้และกำหนดให้เป็นค่าแน่นอน
- เลือกคู่สินทรัพย์และกรอบเวลาที่จะค้นหา
- เลือกแบบกลยุทธ์ที่จะลอง
- ลองค่าพารามิเตอร์ในหลายวิธีกี่วิธี
- เงื่อนไขใดที่หากครบถึงจะนำไปใช้
- สิ่งที่ไม่ควรทำอะไร
สิ่งนี้เรียกว่า “การประกาศล่วงหน้า” ในบทความนี้จะเล่าเรื่องผลลัพธ์หลังทำการตรวจสอบ 129 รอบว่า 5 บันทึกที่ผ่านจริงๆ แล้วเป็นปรากฏการณ์เดียวกัน
ขอบเขตการค้นหาจะถูกกำหนดล่วงหน้า
ขอบเขตการค้นหาที่กำหนดไว้มีดังนี้
| รายการ | เนื้อหาที่กำหนดไว้ |
|---|---|
| คู่เงิน | คู่เงินหลัก 2 คู่ |
| กรอบเวลา | 15 นาทีและ 30 นาที (คู่แรก), 1 ชั่วโมง (คู่ที่สอง) |
| แบบกลยุทธ์ | 8 แบบ (Breakout แนวทรง, mean reversion, bias บริเวณเวลา ฯลฯ) |
| พารามิเตอร์ | สูงสุด 12 วิธีต่อแต่ละแบบ |
| Stop loss / Take profit | Stop loss 2 เท่า ATR, take profit 2 เท่าของขนาด stop loss (ไม่ค้นหา) |
| วิธีแบ่งระยะเวลา | ก่อนวันที่จะเรียนรู้ สำหรับการตรวจสอบภายหลัง |
ตั้งแต่ช่วงเวลา 5 นาทีลงไปถูกตัดออกตั้งแต่ต้น เพราะเมื่อคำนวณต้นทุนจริงๆ แล้ว ค่าความสูญเสียไม่ว่าจะขนาดไหน จะกินกำไรที่มีอยู่จนไม่สามารถทำกำไรได้
มีจุดหนึ่งที่สงสัยระหว่างทาง ตอนพัฒนาฉันคิดอยากลองกว้างขึ้นว่า“อยากลองหลายรูปแบบของขนาดความต่างระหว่าง stop loss กับ take profit” จึงเริ่มเขียนเวอร์ชันนั้น แต่เมื่อคิดจำนวนรวมของการตรวจสอบจะมี 516 วิธี ซึ่งเกินขีดจำกัดที่ประกาศไว้ 288 วิธี จึงกลับไปยึดการประกาศล่วงหน้าและกำหนดจำนวนใหม่ให้ครบ 129 วิธีในที่สุด
เงื่อนไขการคัดเลือกก็ต้องกำหนล่วงหน้า
เงื่อนไขการคัดเลือกมี 7 ข้อ และจะให้เฉพาะสิ่งที่ครบถ้วนทั้งหมดไปยังขั้นตอนถัดไป (การสังเกตการณ์โดยไม่ใช้งบจริง)
| # | เงื่อนไข | เป้าหมาย |
|---|---|---|
| 1 | Profit factor ในระยะทดสอบมากกว่า 1.2 | เส้นพื้นฐานสำหรับการนำไปใช้งาน |
| 2 | จำนวนการเทรดในระยะทดสอบมากกว่า 30 รายการ | ขจัดการบังเอิญจากจำนวนที่น้อย |
| 3 | ความถี่อย่างน้อย 10 รายการต่อเดือน | ถ้าการตัดสินใจใช้เวลานานกว่าจะได้ผล ไม่เลือกตั้งแต่ต้น |
| 4 | กำไรเฉลี่ยมากกว่าเวลาค่าสูงกว่า 3 เท่า | ตัดความเสียเปรียบของต้นทุนออกล่วงหน้า |
| 5 | Profit factor ของช่วงการเรียนรู้มากกว่า 1.0 | หากช่วงเรียนรู้ขาดทุน ก็ควรสงสัยผลในระยะทดสอบที่เป็นสีดำ |
| 6 | ค่าเฉลี่ยยังบวกอย่างน้อย 1 รายการเมื่อยกเว้น 1 รายการ | ไม่พึ่งพิงการชนะครั้งใหญ่เพียงครั้งเดียว |
| 7 | Profit factor มากกว่า 1.0 ในกรอบเวลาถัดไปหรือสินทรัพย์คู่ถัดไป | ขจัดอิทธิพลของการตรวจสอบหลายรายการจากเหตุบังเอิญ |
โดยเฉพาะข้อ 7 คือกุญแจสำคัญของครั้งนี้ หากลอง 129 รอบ จะมีอยู่เสมอวิธีที่ไม่สำเร็จหรือไม่มีข้อได้เปรียบใดๆ ที่ตรงกับเงื่อนไข 1-6 แต่จะพบวิธีที่ผ่านเงื่อนไขเหล่านั้นอยู่บ่อยครั้ง จึงกำหนดให้เปลี่ยนเงื่อนไขเล็กน้อยเพื่อพิจารณาความอยู่รอด
นอกจากนี้ยังตัดสินใจสิ่งที่ไม่ทำอีกด้วย ไม่เพิ่มรูปแบบกลยุทธ์หลังดูผลลัพธ์ ไม่เคลื่อนค่ามาตรฐานของเงื่อนไข และไม่เลือก candidate ที่ตกลงไปจากข้อ 7 โดยหากไม่ผ่านเลยสักตัว ก็บันทึกเป็นผลลัพธ์ว่า “ขอบเขตนี้ไม่มีข้อได้เปรียบ”
ผลลัพธ์: ผ่าน 5 บันทึก แต่ภายในมี 1 ปรากฏการณ์
ใน 129 รอบที่ตรวจสอบ เงื่อนไข 1-6 ผ่าน 5 บันทึก และทั้ง 5 บันทึกนั้นผ่านข้อ 7 ด้วย
| # | กรอบเวลา | พารามิเตอร์ | PF ระยะทดสอบ | จำนวนเทรด | PF ระยะเรียนรู้ |
|---|---|---|---|---|---|
| 1 | 15 นาที | อ้างอิง 4 บท/ขีดจำกัด 0.8 | 1.58 | 65 | 1.23 |
| 2 | 30 นาที | อ้างอิง 4 บท/ขีดจำกัด 0.5 | 1.48 | 67 | 1.10 |
| 3 | 15 นาที | อ้างอิง 8 บท/ขีดจำกัด 0.8 | 1.44 | 72 | 1.09 |
| 4 | 30 นาที | อ้างอิง 8 บท/ขีดจำกัด 0.8 | 1.35 | 56 | 1.06 |
| 5 | 30 นาที | อ้างอิง 4 บท/ขีดจำกัด 0.8 | 1.34 | 58 | 1.10 |
เมื่อดูเนื้อหาของ 5 บันทึกแล้ว พบว่าเป็นการใช้งานในคู่สกุลเงินเดียวกันและตลาดเดียวกันในช่วงเวลาที่ตลาดเปิด โดยทำตามทิศทางของจำนวนบันทูล่าสุดก่อนหน้า ทั้งสองแบบมีชื่อแตกต่างกัน แต่การทำงานจริงแทบจะเหมือนกัน ในคู่เงินอีกคู่นึงผล PF ของแนวคิดเดียวกันอยู่ระหว่าง 0.86–0.98 จึงไม่ผ่าน
กล่าวคือ การค้นพบอิสระ 1 ปรากฏการณ์ที่พบในการตรวจสอบ 129 รอบแท้จริงแล้วเป็นเพียง 1 ปรากฏการณ์เท่านั้น
นี่ไม่ใช่ข่าวร้าย หากมีปรากฏการณ์ไม่เกี่ยวกันหลายตัวกระจายอยู่ จะต้องสงสัยว่าแต่ละตัวเป็นการบังเอิญ แต่ปรากฏการณ์เดียวกันที่ปรากฏในกรอบเวลาสองกรอบและความแตกต่างของพารามิเตอร์ ไม่ใช่การบังเอิญ เป็นส่วนสำคัญที่ชัดเจนว่าเป็นปรากฏการณ์เฉพาะของคู่เงินบางคู่ในช่วงเวลาบางช่วง ซึ่งไม่ใช่กฎที่ทั่วไป
จะเลือกบันทึกไหน: ไม่เลือกที่ดีที่สุดด้านประสิทธิภาพ
จาก 5 บันทึกที่ผ่าน การเลือกไม่ใช่บันทึกที่มี PF สูงที่สุดคือข้อ 1 แต่เป็นข้อ 3
เหตุผลคือความมั่นคงของประสิทธิภาพเมื่อเปลี่ยนกรอบเวลา การตั้งค่าอ้างอิง 8 บทใน 15 นาทีได้ 1.44, ใน 30 นาทีได้ 1.35 ต่างกัน 0.09 ขณะที่การตั้งค่าอ้างอิง 4 บทได้ 1.58 และ 1.34 ต่างกัน 0.24 และเมื่อเปลี่ยนกรอบเวลา ความสามารถในการรักษาประสิทธิภาพไม่พังลงมากนักจึงคิดว่าน่าจะเป็นของจริงมากกว่า
ทางสถิติยังไม่ยุติ
หลังจากเลือกนำไปใช้งานแล้ว ได้ตรวจความมั่นคงด้วย bootstrap (การเรียกข้อมูลซ้ำ 10,000 รอบ) ปรากฏว่า 5 บันทึกทั้งหมดไม่แตกต่างจากศูนย์
| # | ช่วงความเชื่อมั่นของกำไรเฉลี่ย 95% (R) | ความน่าจะเป็นที่ค่าเฉลี่ยจะเป็นบวก |
|---|---|---|
| 1 | −0.042 ~ +0.679 | 96% |
| 2 | −0.082 ~ +0.635 | 95% |
| 3(ที่นำไปใช้) | −0.074 ~ +0.593 | 94% |
| 4 | −0.165 ~ +0.585 | 83% |
| 5 | −0.171 ~ +0.581 | 85% |
※R คือผลกำไร/ขาดทุนโดยใช้ขนาดการขาดทุนหนึ่งครั้งเป็นหน่วย
อย่างไรก็ตามเหตุผลคือจำนวนการเทรดน้อย ไม่ใช่การพึ่งพาผลลัพธ์ผิดปกติ คู่แข่งทุกตัวถึงแม้จะยกเว้นการชนะสูง 5 อันดับบนก็ยังไม่ส่งผลให้สัญลักษณ์รวมเปลี่ยนไป การที่ข้อ 3 ผ่านเพื่อสร้างช่วงความไว้วางใจที่ต่ำกว่าใกล้เคียงศูนย์ จะต้องมีรันจำนวนประมาณ 118 เคส ซึ่งในตอนนี้มี 72 เคส
สิ่งสำคัญอย่างหนึ่งคือ การตรวจสอบความมั่นคงนี้ถูกสร้างขึ้นหลังจากเลือกตัวเองเพื่อใช้งาน การดูผลพบว่า บันทึกที่ 1 ใกล้เคียงที่สุดกับการตัดสินใจ แต่การเปลี่ยนใจหลังดูผลจะเป็นการเลือกหลังเรียนรู้ผล ดังนั้นจึงไม่เปลี่ยนการคัดเลือก และบันทึกครั้งนี้ถือเป็นข้อมูลอ้างอิงเท่านั้น ในการค้นหาครั้งถัดไปจะรวมการตรวจสอบนี้ไว้ตั้งแต่ต้นเป็นส่วนหนึ่งของการประกาศล่วงหน้า
ข้อมูลเพิ่มขึ้น 2 วัน ทำให้ตัวเลือกลดลง
还有อีกข้อที่อยากบันทึก เมื่อรอบแรกมี 7 ตัวเลือก แต่เมื่อเพิ่มข้อมูล 2 วันที่เหลือกลับลดเหลือ 5 ตัว
สองวันลดไป 2 บันทึกแสดงว่าการค้นหานี้อยู่ในขอบเขตที่เงื่อนไขการคัดเลือกใกล้จะสำเร็จ ส่วนที่ผ่านข้อ 3 เหลืออยู่ทั้งสองกรอบเวลาก็ยังคงอยู่ แต่ “ผ่านเงื่อนไข” ไม่ได้หมายถึงมีข้อได้เปรียบ เพียงเป็นสภาวะที่มีความเป็นไปได้
สมมติฐานต้นทุนผิดพลาด
สุดท้าย เป็นบันทึกความล้มเหลว ค่าใช้จ่ายในการเทรดยังไม่รวมค่าธรรมเนียมที่แท้จริง เพราะตอนทดสอบต้นทุนเป็น 600 เยนต่อ 1 ล็อต แต่เมื่อดูเอกสารของผู้ให้บริการจริงๆ พบว่าเป็น 900 เยน
เมื่อปรับค่าใช้จ่าย ค่าใช้จ่ายจริงของคู่เงินที่ใช้อ้างอิงสูงขึ้นจาก 0.38 pips เป็น 0.621 pips เพิ่มขึ้นประมาณ 64% ด้วย สิ่งที่ผ่าน 1 บันทึกเมื่อปรับค่าใช้จ่ายยังคงมีแนวโน้มผ่านเงื่อนไขข้อ 4 แต่ความสามารถในการกินออกเพิ่มลดลงจาก 2.7 เป็น 1.7 เท่า ค่าธรรมเนียมจึงไม่ควรสรุปแบบไม่ได้ข้อมูลจากแหล่งข้อมูลต้นฉบับ
สรุป: 5 การตรวจสอบที่มีการทดสอบหลายครั้ง ค้นพบปรากฏการณ์ 1 ชนิด
- กำหนดขอบเขตค้นหา จำนวนการลอง ทำเงื่อนไขการคัดเลือก ก่อนหมุน backtest
- กำหนดขีดสูงสุดการลอง และหากเกินให้ลดขอบเขตการค้นหา
- ให้เงื่อนไขอยู่ยั้งและยังคงสภาพเมื่อผ่านการทดสอบ
- นับจำนวน “ประเภทปรากฏการณ์” ที่ผ่านมากกว่ามีบันทึก
- การตรวจสอบที่ทำภายหลังไม่ควรเปลี่ยนการคัดเลือกเดิม
เมื่อทดสอบ 129 รอบ พบว่าเหลืออยู่ 1 ปรากฏการณ์เท่านั้น ปรากฏการณ์นี้อาจเป็นจริงหรือไม่ยังไม่ทราบ ต้องดูต่อเมื่อมีข้อมูลเพียงพอสำหรับการทดลองโดยไม่ใช้งบจริง ในครั้งหน้า จะเขียนเรื่องรฎที่ผ่านทุกเงื่อนไขแต่ละสำเร็จและยังไม่ได้เลื่อนขั้นขึ้น
※บทความนี้เป็นการนำเสนอวิธีการตรวจสอบของผู้เขียนเอง ไม่ใช่การส่งเสริมหรือแนะนำการซื้อขายของคู่เงิน เทคนิค หรือ EA ใดๆ ผลการตรวจสอบที่ผ่านมาไม่ใช่การรับประกันผลงานในอนาคต