วันจันทร์ที่ 13 มกราคม พ.ศ. 2557

ความน่าเชื่อถือจากผล Back Test

.....เขียนโดยหมอกอล์ฟ (TDP Group)

จากบทความที่แล้วได้พูดถึงความสำคัญและประโยชน์ของ Expert Advisors(EA) หรือโปรแกรมการซื้อขายอัตโนมัติใน Platform Metatrader4(MT4)  เราเองคงอยากรู้มากขึ้นว่าผลการ Back Test ที่หน้าเชื่อถือ เราควรจะดูตรงไหนบ้าง


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

ปัจจัยที่จะทำให้ผล back test แตกต่างจากการ forward test(การนำมาใช้เทรดจริง) ซึ่งอาจส่งผลให้เกิดการขาดทุนหรืออาจได้กำไรมากกว่าคือ

1. จากการเขียนโปรแกรมเงื่อนไขการเข้าออเดอร์จาก EA เอง คือระบบการเข้าออเดอร์ของ EA ย่อมมีแตกต่างกันจากระบบที่ต่างกัน แต่การสร้างเงื่อนไขในการซื่้อขายบางประการจากผู้เขียนโปรแกรม อาจทำให้การซื้อขายจริงหรือการเปิดออเดอร์ได้ราคาต่างจากที่  back test ซึ่งจุดนี้จะทำให้ผลกำไรที่ออกมานั้นแตกต่างกันอยู่มาก อาจมากเป็นเท่าตัว คือมา  forward test จริงอาจขาดทุนทั้งๆที่ผล back test ออกมาดีได้กำไร ดังนั้นการ forward test กับ demo ในช่วงแรกเพื่อดูการเข้าออกออเดอร์ว่าเป็นไปตามระบบที่เราต้องการจึงมีความสำคัญ

2. มีค่า Mismatched charts errors คือมีค่าตั้งแต่ 1 ขึ้นไป เป็นค่าผิดพลาดที่เกิดขึ้นจากการใส่ History Data ลงใน MT4 หรือการ Convert period ซึ่งปกติเราจะใช้ Minute Data (M1) ในการ back test เพื่อให้ได้ข้อมูลที่มีความละเอียดที่สุด ดังนั้นถ้าเราต้องการ test ที่ Time Frame อื่น จึงจำเป็นต้อง Convert Period ให้เป็น Period หรือ Time Frame ที่เราต้องการ back test ก่อนเสมอ ไม่อย่างนั้นก็จะทำให้เกิด Charts errors ดังภาพด้านล่าง


ซึ่งผลที่ออกมานอกจากจะไม่ถูกต้องกับเวลานำไป forward test จริงแล้ว อาจจะโดนหลอกว่าได้กำไรมากมาย อย่างในภาพด้านล่าง

ตัวอย่างกราฟที่อาจเกิดขึ้นได้จากการมี Mismatched charts errors

3.  Spread(Ask-Bid) ที่สูงกว่าปกติ เช่น ในช่วงเวลาปิดเปิดตลาด ซึ่งจะมีผลต่อการ test  ถ้าระบบที่เราเล่นไม่ได้เล่นตามช่วงเวลา คือเล่นแบบ 24 ชม. ก็อาจจะมีการเปิดออเดอร์ตอน spread สูงได้ ซึ่งถ้าระบบเล่นสั้น stop loss สั้นๆ อาจถูก stop loss จาก spread ที่สูง ณ ช่วงเวลาดังกล่าวจนขาดทุนได้
หรือช่วงที่มีการซื้อขายในปริมาณมากช่วงข่าวออกก็มักจะมี spread ที่สูง ทำให้การเข้าออเดอร์ได้ราคาไกลจากที่เราต้องการหรือที่จุดที่เรา pending order ไว้ โดยเฉพาะช่วง Non-Farm employment change ของคู่ USD ราคาเปิดอาจกระโดดไปไกลมากจาก spread หรือ Ask-Bid ที่ห่างกันมาก ตรงนี้แนะนำควรใส่ Function Maximum spread  เพื่อการป้องกันไว้ด้วย (ขึ้นอยู่กับระบบที่เล่น)
และเนื่องจากการ back test จะเป็นแบบ Fixed spread คือ สเปรดจะเท่ากันหมดขณะ back test แต่ในความเป็นจริงจะมี spread มากน้อยเป็นแบบ variable (คือ spread ไม่คงที่) ทำให้การเข้าออเดอร์อาจได้ราคาที่แตกต่างกันไป ซึ่งตรงจุดนี้จะค่อนข้างมีผลมากกับระบบเล่นสั้น   spread ที่ต่างกันเพียงไม่กี่จุดก็อาจเปลี่ยนจากกำไรเป็นขาดทุน (ขึ้นอยู่กับรูปแบบบัญชีของโบรกเกอร์ บางโบรกเกอร์รูปแบบบัญชีอาจเป็นแบบ Fixed spread)

4. ระยะเวลาในการ back test  เนื่องจากการ back test เป็นการจำลองการเทรดของราคาในอดีต ดังนั้นถ้าเรา test ย้อนหลังไปไกลมากเช่น 2 ปีขึ้นไป โดยรวมอาจได้กำไร แต่ไม่ได้มาลองเทสช่วง 6 เดือนสุดท้าย  ก็อาจจะไม่ทราบว่า กำไรโดยรวมช่วง 6 เดือน อาจเริ่มที่จะเป็นขาลง คือไม่ค่อยได้กำไรเหมือนปีก่อนๆ เนื่องจากการซื้อขายในตลาดมีรูปแบบที่เปลี่ยนไป แต่จะมีผลกระทบต่อระบบที่เล่นมากน้อยแค่ไหน ก็จะขึ้นอยู่กับระบบที่เราเล่นนั้นๆ  ส่วนตัวจะดูผลเทสที่ 1 ปี กับ 6 เดือนเป็นหลัก คือจะไม่สนใจผลที่มากกว่า 1 ปี เพราะอาจไม่ได้ช่วยอะไรจากตลาดที่อาจเปลี่ยนไปแล้ว


สรุป การ back test มีปัจจัยหลายอย่างที่อาจทำให้การ forward test ไม่ได้ผลตามที่คาดหวัง ดังนั้นเมื่อได้ผล test ที่น่าพอใจทุกครั้ง จึงจำเป็นที่ต้องนำไป  forward test ก่อนเสมอ อาจนำไป test กับ demo สัก 2 สัปดาห์ ตามด้วยบัญชีจริงอีก 2 สัปดาห์ นั่นจะทำให้เรามั่นใจได้มาก และยังมีปัจจัยอื่นๆเข้ามาเสริมอีก เช่น ทางด้านจิตวิทยาของเทรดเดอร์เอง ความไม่มั่นใจในระบบ ความไม่เข้าใจว่าทุกระบบย่อมต้องมี drawdown  ซึ่งเป็นสิ่งจำเป็นที่เทรดเดอร์ต้องเรียนรู้ทำความเข้าใจไปพร้อมๆกับการพัฒนาระบบเทรดหรือ EA ให้ดียิ่งๆขึ้น


TDP Group FB page: https://www.facebook.com/LuminaryJournal

ไม่มีความคิดเห็น:

แสดงความคิดเห็น