วันจันทร์ที่ 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

วันอังคารที่ 7 มกราคม พ.ศ. 2557

ความสำคัญของ EA (Expert Advisors) (ระบบการซื้อขายอัตโนมัติ) ตอนที่1

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


การที่จะทำเงินในตลาดเกร็งกำไรค่าเงินหรือ Forex ได้นั้น จำเป็นต้องมีโมเดลหรือระบบที่คิดค้นขึ้นเองหรือนำระบบที่น่าสนใจต่างๆ มาทำการเทรดด้วยกันทั้งสิ้น ระบบที่นำมาอาจเกิดจาก Fundamental Analysis (การวิเคราะห์ปัจจัยพื้นฐาน) และ Technical Analysis (การวิเคราะห์ทางเทคนิค) ซึ่งในที่นี้จะเน้นระบบที่ได้มาจาก Technical Analysis เป็นหลัก เนื่องจากระบบ Fundamental จะนำมาจำลองการเทรดด้วย EA หรือ Back Test ได้ยาก เพราะไม่ได้มีรูปแบบที่ตายตัว แต่ก็อาจนำระบบ Fundamental+Technical มาใส่ใน EA ในรูปแบบการ Forward Test คือทดสอบกับตลาดจริงนั่นเองเช่น การเทรดข่าวหรือเลี่ยงข่าว เป็นต้น  


เนื่องจากระบบต่างๆ ที่สร้างขึ้นเป็นการนำสถิติและความน่าจะเป็นของพฤติกรรมของราคาซื้อขายในอดีต ดังนั้นเราจะทราบได้อย่างไรว่าระบบที่เราจะนำมาเทรดนั้นทำกำไรได้จริงและในระยะยาว ดังนั้นจึงมีความจำเป็นอย่างมากที่จะทำการจำลองระบบการเทรดด้วยการ Back Test ด้วย EA เพื่อนำมาวิเคราะห์ว่าระบบนั้นๆสามารถทำกำไรได้มากน้อยเพียงใด ซึ่งผลจากการ Back Test จะมีค่าสถิติที่สำคัญหลายตัวที่ใช้ประกอบการพิจารณา เช่น Profit Factor, Drawdown, Profit Trade(win rate%),  Consecutive Win/Loss เป็นต้น

        - Profit Factor(PF.) คือสัดส่วนของ Gross Profit และ Gross Loss ซึ่งถ้ามีค่ามากกว่า 1 คือระบบนี้ได้กำไร ถ้าน้อยกว่า 1 คือขาดทุน แต่ระบบที่ดีควรมีสัดส่วน PF อย่างน้อย 2 หรืออาจรับได้น้อยที่สุดที่ 1.5 ทั้งนี้ต้องดูค่าอื่นๆ ประกอบด้วย

       - Drawdown(DD.) หมายถึง การขาดทุนต่อเนื่องหรือการโดนลากพอร์ตติดลบ (ยังไม่ได้ปิดออเดอร์) ที่กี่ % ของ balance จะมีค่า DD อยู่ 2 แบบ คือ Maximal Drawdown (Max DD.) กับ Relative Drawdown (RDD.),   Max DD. คือจุดขาดทุนต่อเนื่องสูงสุด นับจากจุดที่ขึ้นไปสูงสุดและต่ำสุดจากการเทส (ซึ่งเหมาะจะบอกในภาพรวมของการเทส) ส่วน RDD. จะหมายถึง จุดขาดทุนต่อเนื่องสูงสุด ณ จุดๆหนึ่งของ balance ซึ่งเราจะดูค่า RDD. เป็นหลักเพราะจะเป็นตัวบอกว่า ณ จุดๆหนึ่งของการเทส จะมีการขาดทุนต่อเนื่องได้ กี่ % ของ balance ณ ขณะนั้น เช่น RDD.=  20% หมายถึง จะมีช่วงใดช่วงหนึ่งที่ระบบของเราจะขาดทุนติดต่อกันถึง 20% ถ้าเราเข้าเทรดช่วงตลาดหรือระบบเกิดการ Drawdown ณ เวลานั้น ถ้ามีทุนอยู่ 1000 เหรียญ ก็อาจถูกลากพอร์ตติดลบหรือขาดทุนติดต่อกันได้ ถึง 200 เหรียญ เป็นต้น ค่า RDD. ยิ่งมีค่าน้อยเท่าไหร่ยิ่งดี ค่าที่แนะนำคือ ไม่ควรเกิน 20% รับได้ไม่เกิน 30% ถ้าเล่นหลายคู่ ไม่ควรเกินคู่ละ 10-12 % เพราะเมื่อถึงเวลาเทรดจริง ถ้าติดลบมาก เช่น 20% แล้ว จะมีความรู้สึกไม่มั่นใจว่า จะมีคำถามเกิดขึ้นว่าระบบที่ใช้จะยังใช้ได้ดีหรือเปล่าตลาดกำลังจะเปลี่ยนหรือเปล่า การ recover ทุนจากการติดลบมากๆก็อาจจะต้องใช้เวลาพอสมควรกว่าจะได้ทุนคืน

        - Profit Trade(win rate%) หมายถึง ระบบที่ test จะมีอัตราการชนะจากการเทรดหรือการเปิดออเดอร์กี่ % แนะนำว่าควรมากกว่า 80% (ยิ่งมีค่า%มากยิ่งดี) ทั้งนี้ถ้า Profit trade น้อยกว่า  80% อาจต้องมาดู Profit Factor กับ RIsk Reward(RR) ถ้าสัดส่วน PF มากกว่า 2 และ RR มากว่า 1:1.5 (stoploss:takeprofit ) ขึ้นไป ก็อาจจะยังเป็นทางเลือกของระบบที่ดี

        - Consecutive win/loss หมายถึง มีออเดอร์ที่เปิดเทรดแล้วได้กำไรหรือขาดทุนติดต่อกันกี่ออเดอร์ แน่นอนยิ่งมี Consecutive win มากเท่าไหร่ยิ่งดี เพราะในเวลาเทรดจริง ถ้าเราเห็นการปิดออเดอร์แต่ละออเดอร์ของเราปิดบวก ความรู้สึกดีหรือสบายใจย่อมเกิดขึ้น แต่ก็เป็นปัจจัยประกอบหนึ่งเท่านั้น




สรุป EA มีความจำเป็นที่จะนำมาจำลองระบบเทรดว่าระบบนั้นๆมีประสิทธิภาพมากน้อยเพียงใด แต่ผลที่ได้จากการ Back Test  พอเอาเข้าจริงแล้วอาจจะให้น้ำหนักได้เพียง 50-60% เท่านั้น เป็นเพียงการบอกแนวโน้มว่า ระบบที่เทสน่าจะทำกำไร ส่วนอีก 40-50% ที่เหลือจะได้มาจากการ Forward Test กับตลาดจริงและเทสกับบัญชีจริง เพราะการเทสกับ demo อาจไม่ได้ราคาจริงจากตลาดและจะไม่โดน slippage หรือ spread ที่มากตอนเข้าออเดอร์เหมือนบัญชีจริง โดยเฉพาะช่วงเวลาที่ข่าวออกหรือมีการซื้อขายในตลาดในปริมาณมากซึ่งจะทำให้ได้ราคาไม่ดีเหมือน demo ที่ไม่มี slippage หรือการเข้าออเดอร์ที่ช้าจนได้ราคาไม่ดี โดยเฉพาะอย่างยิ่งถ้าระบบนั้นๆเป็นระบบเล่นสั้นยิ่งจะมีผลมากเพราะการเก็บจุดน้อยๆเพื่อหวังผลใหญ่(กำไรมาก) ก็จะได้กำไรน้อยตามไปด้วยหรือทำให้ขาดทุนด้วยซ้ำ

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