วันเสาร์ที่ 31 สิงหาคม พ.ศ. 2556

+++ Back แปลว่า กลับ Test แปลว่า ทดสอบ ว่าด้วยเรื่องของการทำ Back Test :

เกริ่นไว้หน่อยหนึ่ง

Back test = การทดสอบย้อนกลับ (มันจะมี forward test ด้วยนะ คือทดสอบแบบสุ่มไปข้างหน้า) จากตัวเลข ที่มาจาก indicator หรือ model ที่เราเลือกใช้ โดยจะทำการทดสอบจากช่วงเวลาที่กำหนดย้อนกลับ โดยอ้างอิงราคาเปิดปิด เก่าๆ ที่ผ่านมา เพื่อจะดูว่า จะได้กำไรกี่ % ขาดทุนกี่ % โอกาสชนะกี่ % แพ้กี่ % drawdown กี่ %

Optimize = ถ้าจากช่วงเวลาที่กำหนด ค่าของตัวเแปร หรือเงื่อนไขที่ใช้ ตัวเลขไหนจะดีที่สุด จะได้กำไรมากสุดน้อยสุด % ขาดทุนมากสุดน้อยสุดกี่ % โอกาสชนะมากสุดน้อยสุดกี่ % แพ้มากสุดน้อยสุดกี่ % drawdown มากสุดน้อยสุดกี่ %

ยกตัวอย่าง เช่นทุกวันนี้คนส่วนใหญ่ใช่ MACD ค่าคือ 12,26,9 คำถามคือ ถ้าเอาค่านี้ มาเทรดกับ SET หรือหุ้นกลุ่มใดกลุ่มหนึ่ง ตั้งแต่ต้นปี มาถึงวันนี้ จะได้กำไร หรือเงือ่นไขอื่น ๆ เท่าไหร่ ...อันนี่คือ back test

แต่ถ้าต้องการรู้ว่า จากช่วงเวลาที่ผ่านมา ถ้าจะเปลี่ยน 12,26,9 เป็นตัวเลขอื่น .... จะทำให้มีกำไรมากขึ้นไหม น้อยลงแค่ไหน เสี่ยงแค่ไหน ...อันนี้เรียก Optimize

   หลังจากที่ได้ทำการทดสอบ model ที่ออกแบบมา 2 วันแหละ ก็คือว่าทำให้การเทรดของเราเป็นระบบมากขึ้น แต่ยังไม่สามารถอ่านค่าช่วงที่ตลาดแรง ๆ คือช่วงบ่าย 2 กับ ทุ่มกว่า ๆ ที่แบบตลาดมีความผันผวนสูงมาก และเอะใจกับ indicator ตัวหนึ่งที่เคยเอามาใช้นานแล้ว 

   จุดหนึ่งที่สังเกตุคือ Price pattern ของ Forex อ่านง่าย ดูง่าย และมีแนวโน้มชัดเจนมากกว่าหุ้นไทยมาก ของหุ้นไทยหลายๆ ครั้งโดนเจ้ามือหักกราฟ สร้างกราฟ เปลี่ยนกราฟได้ (ประสบการณ์ตัวเองก็เคยลองทำกับหุ้นตัวเล็ก ๆ ที่มี volume ไม่เยอะ เพื่อทดสอบว่าเขาทำไรยังไง และเราก็ได้เห็นว่า ...เออจริงว่ะ มันทำได้ไม่ยากนี่หว่า ใช้เงินไม่ต้องเยอะ แต่ต้องรอจังหวะดี ๆ ประกอบหน่อย) 

     การทำ Back Test คืออะไร ก็คือการที่เราคิดหรือสร้าง model หรือ indicator ตัวหนึ่งขึ้นมาแล้วก็บอกว่าถ้า เกิดเหตุการณ์ หรือ เงื่อนไข แบบ ที่เราต้องการให้ทำการซื้อ ...หรือ ให้ทำการขาย สรุปก็คือจะมี ซื้อกับขาย อย่างเช่น ที่ได้ยินบ่อย ๆ คือ MACD ตัด Signal ขึ้นเหนือ 0 ซื้อ ตัดลงให้ขาย เป็นต้น

    ที่นี้เราอาจจะสงสัยว่า ถ้าเอาเงื่อนไขนี้ไปใช้จริงๆ มันจะ work ไหม ...แน่นอน อนาคตเราไม่รู้ แต่อดีตคือสิ่งที่เกิดขึ้นแล้ว เราก็เลยคิดว่า เอางี้ ลองเอา สิ่งที่คิดไปทดสอบย้อนหลังกับข้อมูลที่เกิดขึ้นแล้วมันจะเป็นยังไง

     ตอนี้ ผมทำเป็นแค่ Amibroker นะเลยเอามาเขียนไว้ก่อน เป้าหมายต่อไปคือ MT4 และนี่คือ Indicator หรือ Model ที่ผมสนใจ คือมันจะมีจุดเข้า ออก เมื่อ Trend เปลี่ยนหรือไม่ผ่านแนวรับแนวต้าน 











    กรณีนี้ผมเอา model ที่ผมสงสัยมา ตัดเอา code ในส่วนที่ มันเป็นจุดเข้า ออก แล้วก็เติมคำสั่ง Buy = &^%*&^%^  และ Sell = &^%&^%$ หรือจะใช้ Cover, Short ก็ได้  ปกติผมใช้ Cover, Short แต่บางทีมันก็ฟ้องว่าให้ใช้ Buy, Sell แล้วบางทีใช้ Buy, Sell มันก็บอกให้ใส่ Cover ผมเลยใส่มันทั้งคู่เลย มันก็เลยเลิกฟ้อง




























 พอได้สูตรแล้ว ก็มาหน้าจอสำหรับใช้ทำ Back test ของ Amibroker (หน้าจอเดียวกับ scan แต่จะใช้เมนูข้าง ๆ Scan (Explore) 



















     จากนั้นก็มาเลือกช่วงเวลา ว่าจะเริ่มทำการ Back Test จากวันไหน ถึงวันไหน กรณีนี้ผมมี Data ไม่เกิน 60 วัน  ก็เลยเลือก 2 เดือนนี่แหละ และเริ่มทำการทดสอบว่า ถ้าเราใช้ Time Frame 1 นาทีผลจะออกมาเป็นแบบไหน แล้วไล่  Time Frame ไปเรื่อยๆ จาก 1 minute, 15 minute, 30 minute, 60 minute, 120 minute, 240 minute และสุดท้าย Daily ...ผมทดสอบได้แค่ daily เพราะ data ไม่พอที่จะ ทดสอบมากกว่านี้แหละ 

พอเลือกแล้วก็กด Back Test มันก็จะ run ออกมา 
ตัวอย่าง หน้าจอ หลังจากการทำ Back test แต่ละ Time frame  มันก็จะมีตารางออกมาว่า ถ้า Model หรือสูตรที่เรากำหนดนั้น วัน เวลาไหน หุ้นหรือคู่เงินตัวไหน ต้องทำการ Long หรือ Short เวลาไหน ราคาเท่าไหร่ ออกหรือปิด order วันไหน % chage เท่าไหร่ และกำไรเท่าไหร่ต่อรอบการเข้า ออก นั้น ๆ และ % Profit ที่ได้แต่ละรอบเป็นเท่าไหร่ มันก็จะออกมาเป็นตารางประมาณนี้ 



























สำหรับผม ผมก็เลือกเอา % Profit แต่ละ Time Frame ออกมา แล้วเอามาใส่ Excel ต่อ 

     จากนั้นเราก็มาคิดต่อ ว่า model ที่เราคิดไว้ ผลมันเป็นไง จะหาจำนวนรอบที่ต้องเทรด เฉลี่ย % กำไร ขาดทุน ไรยังไง แล้วเราจะเลือกไรยังไง

















แนวคิดของผมที่ได้จากการทำ Back Test 

     ข้อมูลอาจจะออกมาดูดี แต่เวลาเอาไปใช้จริง ๆ ยังไงเราก็คงต้องติดตาม ดู เพราะส่วนตัวผมคิดว่า ไม่มี Model ไหน เข้าใจความโลภ ความกลัว ของคนได้แม่นยำทุกครั้ง

     Model หรือแนวคิดแต่ละสูตร ใช้ไม่ได้กับทุกหุ้น หรือ คู่เงินหรืออื่น ๆ ทุกอย่าง จะต้องมีการปรับเปลี่ยน ปรับแต่ง  ... อ้อ ลืมบอก Amibroker มี Function ที่เรียกว่า Optimize เพื่อใช้ในการคำนวณหาค่า ของตัวแปล ที่เราสนใจว่าจะใช้ค่าไหน แล้วจะทำกำไรได้มากสุด ไว้จะมาแชร์ให้ตอนหลังนะครับ อย่างเช่นที่เขาพูดกันว่า MACD ใช้ 12,26,9 """" แต่ถ้าเราเปลี่ยน products หรือเปลี่ยน time frame แล้วค่าที่ดีที่สุด ควรจะเป็นเท่าไหร่... Amibroker สามารถคำนวณมาแสดงผลให้เราได้

ท้ายสุดและสุดท้าย

     ไม่มีอะไรในโลกแน่นอน – ถึงแม้ระบบเทรดจะถูกท า Back Test มานับครั้งไม่ถ้วน แต่มันก็แค่อ้างอิงจากสถิติย้อนหลังที่ เราเชื่อว่ายิ่งยาวก็ยิ่งดี แต่ในอนาคตปัจจัยที่กระทบภาวะตลาดนั้นแตกต่างออกไปเรื่อยๆตลอดเวลา


ข้อมูลกรณีศึกษา แนวคิดการทำ Back Test และการทำ Back Test ของ MT4 นะครับ

http://www.mangmaoclub.com/jim-simon-and-backtesting/
     “เราคือองค์กรที่ให้ความสำคัญต่อการวิจัยอย่างสูง เราจ้างพนักงานเพื่อให้พวกเขาสร้างโมเดลทางคณิตศาสตร์สำหรับตลาดที่เราจะทำการลงทุน … เรามองหาบุคคลที่มีความสามารถในการที่จะทำการวิจัยเชิงวิทยาศาสตร์ได้เป็นอย่างดี หรือไม่พวกเขาก็ต้องเป็นนักวิทยาศาสตร์คอมพิวเตอร์ที่มีทักษะในการเขียนโปรแกรมได้เป็นอย่างดี …

… เราจะทดสอบแนวคิดทุกอย่างของเรากับข้อมูลของตลาดต่างๆในอดีต เพราะอดีตคือกุญแจที่ยอดเยี่ยมในการเข้าใจอนาคต แน่นอนว่าไม่ได้สมบูรณ์แบบ! แต่ความเป็นมนุษย์ของพวกเราคือพลังที่ขับเคลื่อนตลาด และมันก็ไม่ใช่สิ่งที่จะเปลี่ยนแปลงภายในข้ามคืน ดังนั้นแล้วยิ่งคุณสามารถที่จะเข้าใจอดีตได้ดีเท่าไหร่ มันก็มีความเป็นไปได้อย่างสูงว่าคุณจะมีข้อมูลที่สำคัญมากๆในการที่จะเข้าใจถึงอนาคตที่กำลังจะเกิดขึ้น”

James Simon เจ้าพ่อแห่งวงการ Hedge Funds


http://forextrader.igetweb.com/index.php?mo=3&art=41942147

http://www.bloggang.com/viewdiary.php?id=mikas&month=04-2013&date=28&group=9&gblog=10

หวังว่าคงเป็นประโยชน์กับคนอื่่นๆ นะครับ

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

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