7 เทคนิคพัฒนาระบบเทรด(อัตโนมัติ)ให้ได้กำไรอย่างยั่งยืน
7 เทคนิคพัฒนาระบบเทรด(อัตโนมัติ)ให้ได้กำไรอย่างยั่งยืน ไม่ใช่แค่กำไรใน backtest
ประโยชน์ของการส่งคำสั่ง (อัตโนมัติ) ผ่านการเขียนโปรแกรม
บางคนอาจจะคิดว่ามันมีเพียง
- ไม่ต้องเฝ้าจอ
- ไร้อารมณ์ ไม่ bias
แต่จริงๆแล้ว มันสำคัญมาก ไม่ว่าจะเทรดมือ หรือเทรดอัตโนมัติ
ที่เราจะสามารถสร้างกลยุทธ์ที่ซับซ้อนขึ้น … ซึ่งเราจะรู้ได้ว่าดี หรือไม่ดี ก็จะต้องสามารถทดสอบระบบที่คิดขึ้นก่อนเทรดจริง รู้ว่าจะกำไร หรือขาดทุน (backtest)
แต่ การ backtest ทดสอบระบบนี้เอง กลายเป็นปัญหาคลาสสิกที่หลายคนร้องยี้ กับบริการระบบเทรดต่างๆ Algorithmic Trading เพราะทำกำไรได้ไม่เหมือนที่คุยไว้ และบางครั้งมันดูเป็นปัญหาไข่ กับไก่ อะไรเกิดก่อนกัน
ไก่: ระบบได้กำไรดี เพราะ cherry pick เลือกที่รัก มักที่ชัง ช่วงเวลา backtest ที่เลือกมา
ไข่: ปรับจูน parameter setting ต่างๆของระบบ ให้เข้ากับช่วงเวลาที่นำมาทดสอบ (backtest period) ให้ได้ผลลัพธ์ที่ดีที่สุด
แต่ไม่ว่าจะแบบไหน ในศาสตร์ของ Data Science เรามองว่ามันคือการ Overfit
Overfit อธิบายง่ายๆ คือการที่เราพยายามปรับจูนทำให้ algorithm หรือ model ของเรา แม่นที่สุด บนชุดข้อมูลที่เรานำมาให้โมเดลเรียนรู้ ซึ่งในที่นี้ก็คือการปรับ parameter setting ต่างๆ หรือ train model (กรณีใช้ machine learning) ให้ได้กำไรมากที่สุด บนช่วงเวลาที่เราเลือกมา
ส่วนนักพัฒนาระบบเองที่มีประสบการณ์หน่อย อาจจะไม่ต้องการให้เกิดปัญหานั้น จึง backtest ในช่วงเวลาที่ยาวขึ้นมากๆ ให้ครอบคลุม blackswan (ปรากฎการณ์ที่เราไม่คาดคิดว่ามันจะเกิดขึ้น และเมื่อเกิดขึ้นแล้วจะส่งผลกระทบรุนแรง) แต่นั่นก็มักส่งผลให้ underfit โมเดลเปิดได้ตลอดเวลา แต่ได้กำไรน้อย
ดังนั้น ในบทความนี้จะมาสอนวิธีการเอาตัวรอด กัน โดย 7 เทคนิคนี้
3 เทคนิคแรกจะเป็นเรื่องเบสิกๆที่คุณควรทำ แต่หลายคนไม่ได้ทำ ก่อนจะไปแคร์เรื่อง overfit underfit
- ดู เครื่องมือและวิธี backtest ของคุณก่อน ว่ามันซื้อตอนปิดแท่งเทียน หรือว่าซื้อตอนเริ่มเทียนถัดไป และต้องระวังหากเป็น intraday trade จะต้องเผื่อ slippage กว่าบอทจะได้ data กว่าจะประมวลผล กว่าจะยิงส่งคำสั่ง
- คัดเลือก asset ที่มีสภาพคล่อง เข้าหลักทรัพย์ในขอบเขตการลงทุน (universe) ในกรณีที่ซื้อขายภายในวัน (intraday) อย่าลืมดู bid offer และ volume ประกอบ
ปัญหาของ asset สภาพคล่องต่ำ เคยเห็นบริษัทหลักทรัพย์แห่งหนึ่งพยายามแก้ด้วยการใช้ให้เข้าซื้อตอน ATO และ ATC เพื่อให้ง่ายต่อการ backtest และ forward test โดยอิงตามจริงหมด แต่พอมีคนใช้บริการมากๆ ยอดเงินที่สูงๆ ไปใส่ในช่วง ATO ก็ทำให้มีปริมาณที่มากเกินไปได้ ส่งผลให้กลยุทธ์นั้น จากผลทดสอบ backtest โชว์กำไรหลัก 30% ต่อปี สุดท้ายก็กลายเป็นขาดทุน 30% - ดูผลลัพธ์ ระบบเทรด ว่าไม่ได้ฟลุ๊ก ได้กำไรเยอะๆมาครั้งเดียว ที่เหลือแทบไม่กำไร ต้องเน้นดู avg profit และ avg loss ให้ดีครับ และอย่าลืมใส่ค่าธรรมเนียมเข้าไปนะครับ
จากประสบการณ์ที่เคยๆพลาดมาก่อน และจากที่สังเกตว่า หลายๆคนมองระบบเทรดแบบนั้นแบบนี้กำไรดี โดยถูกโซเชียลหลอก ด้วยการนำเสนอเฉพาะตอนกำไร (โดยเฉพาะการดูกราฟ หรือดูTF ที่ยาวหน่อย เช่น 1 วันขึ้นไป) มักพลาดที่ข้อ 3 ครับ ส่วนข้อ 1,2 นั้นมันจะตอดๆกำไรออกไปทีละนิด ยิ่งระบบมีการซื้อขายมากยิ่งโดนตอดมาก
ข้อ 4-6 จะเป็นเทคนิคลดปัญหา overfit/underfit ใช้ได้ทั้ง rule based algorithm และ machine learning ซึ่งพูดง่ายแต่ทำยาก - ใช้หลักการของการทำ Machine Learning Model คือแบ่ง ชุดข้อมูลสำหรับ backtest เพื่อ ปรับจูน ระบบเทรดของคุณ (train data) และ ลองทดสอบระบบบนอีกชุดข้อมูล (test data) อย่างที่เล่าไปตอนแรก ลองทดสอบในช่วงตลาดขาขึ้น และขาลง
เช่น ฝึกอบรมข้อมูล (Train) ด้วยการ backtest parameter setting ต่างๆในปี 2021 ว่าแบบไหนให้ผลตอบแทนดีที่สุด และนำมาทดสอบ (test)ในปี 2022 ในไตรมาสแรก ในทาง Data Science อาจจะดูโอเค (ยิ่งพวก intraday ทดสอบอยู่ 5 วัน)
แต่แบบนี้รอวันเจ๊งอย่างเดียว เพราะโลกของการลงทุน มันต้องใช้ช่วงเวลาที่ยาวกว่านั้น เพราะมี blackswan มาคอยทำลายระบบ รวมถึงตลาดขาขึ้น กับขาลง มันไปกันคนละแบบครับ - ลองทำทดลองบนช่วงเวลาวิกฤต หรือช่วงที่ขาดทุนหนักๆดู เรียกง่ายๆกันว่า stress test แล้วดูว่าระบบของเรา รอดหรือไม่รอด หลายคน backtest 1ปี 3ปี บทเจอจังหวะวิกฤต วันเดียว -30% บอทก็ไปไม่เป็น
- อย่าลืมทำบริหารหน้าตักพอร์ตของคุณให้ดี money management (MM) : ไม่ว่าจะเป็นกำหนดขนาดหน้าตัก การเข้าซื้อขาย หรือมีระบบ cutloss เผื่อไว้ (cut loss ไวไป โมเดลจะ underfit แต่ว่า ระบบไม่พัง ดีที่สุด) หรือบางคนอาจจะใช้วิธี หยุดระบบกันไปเลย
ข้อสุดท้าย แต่ถ้าคุณทำมันได้ดี ผลลัพธ์จะดีที่สุด คือการพัฒนาระบบเทรดของคุณ คือ รู้ว่าเมื่อไหร่ ใช้กลยุทธ์อะไร เมื่อไหร่ควรหยุด หรือควรเปิด
- ตัวแปรควบคุม: โลกนี้ไม่มีหรอกโมเดลที่ทำกำไรได้ทุกสภาวะตลาด สิ่งที่คุณจะหนีไม่ได้เลย ก็คือ ตัวคุม … ตัวคุมที่ว่า มีได้ตั้งแต่ ดูว่าจะเปิดหรือปิดโมเดล หรือจะ สลับไปใช้โมเดลไหน (โลกนี้ไม่ได้กำหนดว่าคุณต้องมีแค่กลยุทธ์เดียว) คุณอาจจะคิดก่อนว่าตอนนี้ตลาด swing หรือ มี trend ทิศทางที่ชัดเจน ค่อยเลือกระบบเทรด ที่นิยมจะเป็นตอนนี้ขาขึ้น หรือขาลง
ตัวอย่าง ฉบับง่าย คือไม่ต้องรู้หรอก ตลาดมันขาขึ้นหรือลง แต่เราตั้งเงื่อนไขขึ้นเอง เราเรียกว่ามีตัว filter condition ซ้อนไปอีกขั้น เช่น ต้องเป็น trend ขาขึ้นนะ (เช่นวัดจาก EMA 12 > EMA 26) เราจึงจะ action ว่าราคาปิดยืนเหนือ EMA 12 ค่อยซื้อ
มันเป็นเรื่องที่ปกติมากๆ กรณีที่ บอท ของคุณ อาจจะทำงานได้ดีตอนกลางวัน แต่กลางคืนไม่กำไร เพราะกลางวันตลาด ผันผวนกว่า มีทิศทาง มี trend มากกว่า
เรื่องกลางวันกลางคืนนี้ จากประสบการณ์ที่เคยทดสอบกลยุทธ์ MACD ทื่อๆ ตรงๆ เลยบนฟอเร็กซ์ เมื่อครั้งยังแบเบาะ ก็ค้นพบว่า ปิดบอทช่วงกลางคืนทิ้งไป หลังตี 2 ถึงบ่าย 8 โมง ให้ผลตอบแทนต่างกันถึงเกือบ 7% ภายใน 1 สัปดาห์ (มี leveraged และคงเป็นเรื่องของโชคเข้าข้างด้วย) (ชาวเน็ตบอกเฉลี่ย 11% ต่อปี)
ฉบับยาก คือการพยายามหาว่านี่เป็นตลาดขาขึ้น หรือขาลง หรือเป็นแพทเทิร์นแบบไหน
อ่านถึงตรงนี้ บางคนอาจจะเริ่มเห็นแนวทางทำกำไรมากขึ้น หรือบ้างอาจจะคันมือ เพราะมีกลยุทธ์ที่ใช้เทรดมืออยู่แล้ว แต่อยากทำดูบ้าง ก็ต้องบอกว่ายุคนี้ นักลงทุนรายย่อยเชื่อมต่อระบบเทรดกับ SET ได้ง่ายมากครับ เพราะมี SET Open API ซึ่งเป็นการเชื่อมต่อ ส่งซื้อคำสั่ง - Python
- MetaTrader 4
- MetaTrader 5
และยังมีช่องทางอื่นๆอีกเช่น Amibroker และ VBA
ทั้ง 3 อย่างแตกต่างกันอย่างไร แล้วควรเลือกอะไรดี?? อยู่ที่ชอบครับ
Python → ทำได้ทั้งแบบมือใหม่ถึงเซียน ครบวงจร ภาษาสากล ไม่มีสำเร็จรูป แต่ต้องทำเองหมดหรือหา code ตัวอย่าง
Python นั้นเป็นภาษาเขียนโปรแกรม open source ใช้ฟรี และสามารถ customized ได้สูงที่สุด เพราะเราเขียนขึ้นเองจาก 0 หรือหา code ที่คนเขียนเอาไว้ได้ เพราะมี community เยอะ โดยเราเองก็เป็นผู้ผลักดัน community สำหรับนักลงทุนไทยที่ใช้ Python
จุดเด่น : ปรับแต่ง ทดสอบระบบ ได้ตามใจชอบ ซับซ้อนแค่ไหนก็ได้ อยู่ที่ฝีมือคนเขียน + ใช้ AI ML ได้
จุดด้อย : ต้องเรียนกันเยอะ กว่าจะทำได้ครบทั้ง 7 เทคนิค หากต้องการรันบน cloud ต้องศึกษาเรื่อง deploy ระบบเทรดเพิ่มอีก
เหมาะกับผู้ที่มีเวลาศึกษาเยอะ ต้องทำเยอะ และยังต่อยอดไปด้านอื่นได้
หากคุณต้องการความง่าย รวดเร็ว
MetaTrader 4 ,5→ ทำได้แบบมือใหม่ถึงปานกลาง มีสำเร็จรูปเยอะ
ใช้ภาษา MQL ซึ่งเป็นภาษาเฉพาะของ MetaTrader จัดว่าง่าย ไม่วุ่นวาย ไม่ต้องมีความรู้อื่นใด และมีโค้ดตัวอย่างเยอะ รวมถึงมีระบบ EA ขายกันเต็มไปหมด
MQL5 จะเร็วกว่า MQL4 ประมาณ 20 เท่า แต่ว่า community ของ MQL4 นั้นใหญ่กว่ามาก โดยทั้งสองภาษาอิงจาก C++ ซึ่งยากกว่า python แต่ก็รวดเร็วกว่า
จุดเด่น : ง่ายกว่าในการสร้างระบบเทรดที่ไม่ซับซ้อน platform พร้อม มีระบบขายเยอะ
จุดด้อย : จัดการ backtest ที่ซับซ้อนไม่ได้ และใช้ AI ML ไม่ได้ (แต่มีเทคนิคไปเรียกของ Python มาใส่ได้)
สำหรับใครสนใจลงทุนในตลาดหุ้นไทยจาก Robot Trade ผู้ลงทุนสามารถตรวจสอบโบรกผู้ให้บริการได้ที่ https://setga.page.link/njP1M8ttE6pC5M5XA
สำหรับคนที่อยากลองใช้แล้ว อ่าน SET Open API กันได้เพิ่มเติมที่ https://developer.settrade.com/open-api/