Origin of DQ-BT (DeepQuant Backtesting)

ผมขอเล่านิดนึงครับ ผมเริ่มออกแบบ trading system สำหรับเทรดมือในปี 2014 แล้วเริ่มพัฒนา algorithmic trading & robot ในปี 2015 โดยเริ่มพัฒนาด้วยการเขียนโค้ด บน Excel ด้วยภาษาโปรแกรมชื่อ VBA (Visual Basic for Application) และได้พัฒนาระบบ backtesting บน Excel ใช้เอง โดยนำความรู้จากการทำ paper trading ตอนเทรดมือมาใช้ ต่อมาผมเปลี่ยนมาพัฒนา algorithmic trading & robot และระบบ backtesting ด้วยภาษา Java ซึ่งถนัดกว่าและ advance กว่า

จนกระทั่งปี 2017 ผมได้เปลี่ยนมาใช้ภาษา Python ซึ่งเขียนง่ายกว่า และเห็นว่าเหมาะกับผู้เรียนในกลุ่ม Deep Quant มากกว่า ซึ่งในช่วงแรกผมและสมาชิกใน Deep Quant ทำโมเดลเริ่มต้นและ backtest ในโปรแกรม Amibroker และ MetaTrader แล้วค่อยนำโมเดลไปใช้ร่วมกับบอทที่พัฒนาด้วย Python แต่พบว่าทั้ง Amibroker และ MetaTrader เป็นระบบปิด และไม่ยืดหยุ่นต่อการใช้ร่วมกับ AI, Machine Learning และการ integration กับเทคโนโลยีอื่นๆ

เราจึงสำรวจระบบและเฟรมเวิร์กด้าน backtesting ต่างๆ หลายตัว แต่ไม่เจอตัวที่ถูกใจในแง่ความยืดหยุ่น (High Modifiability) แต่ละตัวไม่เหมาะกับการทำบอทจำนวนมากๆ และไม่เหมาะกับการทำบอทที่มีความซับซ้อนมากๆ เช่น ในการเทรดในสเกลระดับกองทุนขนาดใหญ่ได้ และผมไปอ่านพบว่าใน quant fund ใหญ่ๆ เขาพัฒนาระบบ backtesting และเทคโนโลยีต่างๆ ใช้กันภายในเองทั้งนั้น ผมจึงได้แรงบันดาลใจ

เนื่องจากเป้าหมายระยะยาวของผมคือการเทรดด้วยบอทในสเกลขนาดใหญ่ สุดท้ายจึงตัดสินใจพัฒนาระบบ backtesting ใช้เองอีกครั้ง!!!

และเนื่องจากปกติในงานไอทีที่ผมทำอยู่ ผมสอนและเป็นที่ปรึกษาด้านการออกแบบ test case สำหรับทดสอบคุณภาพระบบมากว่า 10 ปี อยู่ในแวดวง software testing มาพอสมควร ดังนั้นโดยส่วนตัวจึงตระหนักถึงความสำคัญของการทดสอบระบบ (โมเดล) มาก

หากเราเขียนโค้ดพัฒนาระบบ backtesting ใช้เอง ก็จะมีความยืดหยุ่น และคุมจุดคำนวณและจุดประมวลผลต่างๆ ได้ และสามารถปรับให้ใช้ทดสอบกลยุทธ์ของตนเองได้เต็มที่

ผมตั้งชื่อระบบ backtesting นี้ว่า DQ-BT มาจาก ‘Deep Quant Backtesting’ ระบบนี้ไม่ใช่ระบบ backtesting ที่ดีที่สุด แต่เป็นระบบที่ตอบโจทย์แนวทางการพัฒนาโมเดลและบอทของผมและของกลุ่ม Deep Quant ที่สามารถ backtest trade model ที่ใช้ rule based, ML, RL ได้สะดวก และผมแชร์โค้ดทั้งหมดให้สมาชิกในกลุ่ม ทำให้ทุกคนสามารถศึกษาและพัฒนาต่อยอดได้เต็มที่

นอกจากนี้เพื่อตอบโจทย์ความต้องการของผมเองด้วย ที่ต้องการระบบ backtesting ที่สามารถ backtest หลาย trade model พร้อมกันและแชร์เงินลงทุนร่วมกันได้ เป็นการ backtest แบบ parallel backtesting

เพราะ…ไม่มีระบบ backtesting ใดในโลกที่ backtest ทุกกลยุทธ์ได้ เนื่องจากกลยุทธ์การเทรดมีความหลากหลายมากๆๆๆ ดังนั้นลองศึกษาและฝึกใช้ DQ-BT เพื่อใช้ backtest เพื่อสร้างบอทไปเทรด แล้วค่อยหาเวลาว่างๆ ศึกษาการพัฒนาระบบ backtesting ในแบบฉบับของตนเองดูนะครับ ปรึกษาผมได้เต็มที่เลย ^^

ข้อสำคัญสำหรับการใช้เทมเพลตโค้ดกลุ่ม Deep Quant:

  1. 1 trade model เทียบเท่า trade bot 1 ตัว ดังนั้นอาจใช้ 2 คำนี้สลับกันไปมาได้
  2. 1 trade model เทรดกับสินค้าหลักแค่ 1 symbol เหตุผลที่ผมกำหนดแบบนี้เพื่อให้โค้ดและกลยุทธ์เรียบง่าย ไม่ซับซ้อนจนเขียนโค้ดยากและทดสอบยาก เพราะสมาชิก Deep Quant ส่วนใหญ่ไม่ใช่สายไอที จึงไม่อยากให้ทำบอทซับซ้อนไป มันเหนื่อย ไม่อยากให้โฟกัสที่บอทตัวเดียว แต่อยากให้ทำบอทหลายตัวแล้วเทรดแบบ portfolio เพราะมีความเป็น systematic ดีกว่า
  3. 1 trade model ณ เวลาหนึ่งถือแค่ 1 position เท่านั้น
  4. หากต้องการเทรดสินค้า (symbol) เดียวกันแล้วให้ถือ 2 position ในเวลาเดียวกันได้ ก็ต้องทำบอท (trade model) 2 ตัว เช่น blackpink_gold_1 กับ blackpink_gold_2 ซึ่งทั้ง 2 ตัวนี้อาจมีบางจังหวะที่ถือ position คนละฝั่งพร้อมกันได้ หรือทำบอท 2 ตัวเช่น blackpink_gold_long กับ blackpink_gold_short โดยให้แต่ละตัวเทรดแค่ฝั่งเดียว การเทรด symbol เดียวกันแล้วถือ position 2 ฝั่งพร้อมกัน บางโบรกเกอร์หรือบางตลาดไม่อนุญาติให้ทำ เช่น ตลาด TFEX ดังนั้นให้ตรวจสอบให้ดีก่อนนะครับ มีวิธีแก้อีกแบบคือ เปิดบัญชีเทรด 2 บัญชีไปเลย ^^

Leave a Reply

Discover more from

Subscribe now to keep reading and get access to the full archive.

Continue reading