Petch's Investing Blog

Back to Home
codingPublished 2022-03-06

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

Petch's Investing Blog

Back to Home
Petch (Jakrapat Sangskul)

Petch

Jakrapat Sangskul

Born 1991 • Songkhla

Background

Ex-PTTEP Scholarhip & Well Engineer.

MWIT Alum. Petroleum Engineering at Chula.

Focus

Full-time investor since 2011. Navigating equity markets across Thailand, US, Japan, Turkey, and Vietnam.

jakrpat5@gmail.com

+66 86 959 0430

Lifelong Learning — Dedicated to Research