Engineering a Multi-Asset Backtest Framework from Scratch
ตอนนี้คือเริ่มเพลิน คือ หลังจากที่ผมพัฒนาระบบเทรดให้รองรับการเทรด Spread และจัดการคู่เงินจำนวนมากได้แล้ว ขั้นตอนถัดมาที่สำคัญที่สุดคือการพิสูจน์สมมติฐานผ่านการทำ Backtesting แม้ปัจจุบันจะมี Library สำหรับงานนี้อยู่มากมาย แต่ผมตัดสินใจเขียน Backtest Engine ขึ้นเองทั้งหมดด้วยเหตุผลสองประการ
หนึ่งคือความต้องการเรียนรู้โครงสร้างภายในอย่างละเอียด และสองคือความจำเป็นด้านสถาปัตยกรรม เนื่องจาก Library ของผมมีลักษณะเป็น Multi-asset โดยธรรมชาติ ซึ่งแตกต่างจาก Framework ทั่วไปที่มักออกแบบมาเพื่อทดสอบสัญญาณจากสินทรัพย์ตัวเดียวเป็นหลัก
The Core Components of Backtesting
การสร้างระบบ Backtest ที่เชื่อถือได้ประกอบด้วยจิ๊กซอว์หลายส่วน ตั้งแต่การรวบรวมข้อมูล (Data Collection) ไปจนถึงการจำลองสภาพแวดล้อม (Environment Simulation) ซึ่งเป็นงานเชิง Coding Technical ที่ผู้อ่านอาจจะไม่อยากอ่านเท่าไหร่นัก (ฮา..)
อย่างไรก็ตาม ส่วนที่น่าจะน่าอ่านมากที่สุด คือการวัดผล (Measurement of Results) เพื่อตอบคำถามที่ดูเหมือนจะง่ายแต่ตอบยากที่สุดว่า "กลยุทธ์นี้ใช้งานได้จริงหรือไม่?"
Defining a 'Good Strategy'
การนิยามว่ากลยุทธ์ไหนดีจำเป็นต้องมีตัววัด (Metrics) ที่ชัดเจน ซึ่งมีให้เลือกหลากหลายมิติ:
- PnL per Trade: กำไรขาดทุนต่อครั้ง ทั้งในรูปแบบตัวเงินและสัดส่วนความเสี่ยง (R-Multiple)
- Win Rate: อัตราการชนะ
- Sharpe & Sortino Ratio: การวัดผลตอบแทนเทียบกับความเสี่ยงและความผันผวน
- Max Drawdown: จุดที่พอร์ตติดลบหนักที่สุดจากจุดสูงสุด
ในเบื้องต้นผมเลือกใช้ Sharpe Ratio ควบคู่กับ Max Drawdown เป็นตัววัดหลักเพื่อประเมินประสิทธิภาพของกลยุทธ์ แม้ผมจะพบจุดอ่อนในมาตรวัดเหล่านี้อยู่บ้าง แต่เอาไว้มาเจาะลึกกันต่อไปในอนาคต
The Addiction and The Pitfalls
การสร้างและทดสอบระบบด้วยตัวเองเป็นสิ่งที่ทำให้ผมเสพติดได้ง่ายมาก การได้ลองเปลี่ยน Parameter และเห็นกราฟผลตอบแทนขยับไปมาเป็นเรื่องสนุก แต่ในความสนุกนั้นมีกับดักสำคัญคือการ Overfitting หรือการพยายามปรับจูนระบบให้เข้ากับข้อมูลในอดีตจนเกินไปจนใช้งานจริงไม่ได้
บทเรียนสำคัญที่ผมได้รับคือ การทำ Backtest ไม่ใช่แค่การรันตัวเลขให้ดูดี แต่ต้องทำภายใต้ Framework ที่เข้มงวดเพื่อป้องกันความลำเอียงของตัวผู้พัฒนาเอง ในอนาคต เรามาพูดถึงวิธีการจัดการกับปัญหานี้และแนวทางการทำ Backtest ที่เป็นระบบมากขึ้น
สามารถดู Implementation ของระบบ Backtest ในช่วงเริ่มต้นได้ที่ binance_bot