Philosophy of Systematic and Quantitative Trading Systems

Philosophy ปรัชญาการลงทุนด้วยระบบเทรดหุ้น

ThaiQuants ขออนุญาติเสนอแนะแนวคิดและแนวปฎิบัติ สำหรับผู้สนใจและมือใหม่ ในการพัฒนา ทดสอบ และเทรด ด้วยระบบเทรดหุ้นเชิงปริมาณ Systematic and Quantitative Trading Systems ซึ่งมีลักษณะพิเศษของตัวมันเอง และเพื่อเป็นจุดเริ่มต้นในการเรียนรู้และนำไปใช้ให้ก่อเกิดกำไรสูงสุดในการลงทุนด้วยระบบเทรดหุ้น

Philosophy of Systematic and Quantitative Trading

About Philosophy of Systematic and Quantitative Trading

ThaiQuants หวังว่าบทความนี้จะช่วยชี้นำแนวทางให้ผู้สนใจและมือใหม่ ให้มีทัศนคติ มุมมอง และการปฎิบัติที่เหมาะสม โดยเฉพาะอย่างยิ่งในตอนเริ่มต้นพัฒนาและเทรดหุ้นด้วยระบบ ก่อนที่จะสามารถหาหนทางและปรับเปลี่ยนปรัญชาเหล่านี้ให้เข้ากับตนเองต่อไปในอนาคต โดย ThaiQuants ขอแนะนำให้นักพัฒนา ค่อยๆทำการเรียนรู้และเก็บรายละเอียดต่างๆ อย่างค่อยๆเป็นค่อยๆไป ไม่มีความจำเป็นต้องทำให้ได้ทั้งหมดในวันนี้ เพราะรายละเอียดค่อนข้างมาก แต่ขอเพียงแค่ให้รู้และเข้าใจมุมมองจากปรัชญาเหล่านี้ไว้ก่อน จากสรุปสั้นๆดังนี้

หมายเหตุ: ปรัชญาการลงทุนด้วยระบบเทรดเหล่านี้ ถูกเขียนขึ้นจากประสบการณ์และความเชื่อส่วนตัวของ ThaiQuants ผู้อ่านควรใช้วิจารณญาณและเหตุผลในการตีความ รวมถึงการนำไปใช้

สรุป Philosophy ปรัชญาการลงทุนด้วยระบบเทรด

  1. โค้ดไม่เป็น เทสไม่ผ่าน ไม่ต้องเทรด: โค้ดเงื่อนไข และใส่ตัวเลขให้ชัดเจน อย่าให้มีความคลุมเครือหลงเหลืออยู่ในระบบ และอย่าคาดหวังอะไร ใดๆ ทั้งสิ้นกับสิ่งที่ไม่ได้โค้ดออกมา แล้วทดสอบด้วยตนเอง
  2. ลงทุนในตลาดที่เอื้ออำนวยต่อกลยุทธ์: แทนที่จะลงทุนตลอดเวลา นักพัฒนาระบบควรทดสอบกลยุทธ์ต่อประเภทตลาดต่างๆ ว่าสภาพแบบไหนที่มีข้อได้เปรียบและมีความน่าจะเป็นในการทำกำไรต่อขาดทุนสูงสุด
  3. รู้จักระบบเทรดของตนเอง และรู้จักตนเอง: เลือกใช้ระบบที่เหมาะสมกับลักษณะนิสัยของตนเอง ระบบใคร ระบบมัน ความเชื่อมั่นต้องถูกพิสูจน์มาจากการทดสอบด้วยตนเอง และหลีกเลี่ยงการใช้ระบบของคนอื่นที่ตนเองไม่เข้าใจ
  4. ชื่นชมความเรียบง่าย เกลียดชังความซับซ้อน: ระบบที่ดีต้องเทรดได้จริง ไม่ใช่แค่ทดสอบได้ในคอมพิวเตอร์ หลีกเลี่ยงระบบที่ซับซ้อน ไม่ว่าจะเป็น เงื่อนไขซื้อขายและการคัดลอส และวิธีการบริหารพอร์ตและความเสี่ยง
  5. ความผันผวนในตลาด และช่วงทรุดของระบบ เป็นสิ่งที่หลีกเลี่ยงไม่ได้: ต้องเข้าใจว่าเป็นสัจธรรม และต้องรู้จักระบบและตลาดของตนเองให้ดี จากการออกแบบและทดสอบที่ถูกต้องและครบถ้วน เพื่อที่จะทำการผ่านช่วงวิกฤตต่างๆไปให้ได้
  6. ไม่กลัว ไม่โลภ ว่าไปตามความน่าจะเป็น: ความลำเอียงในการลงทุนทางจิตใจไม่ควรเป็นส่วนหนึ่งของการเทรดด้วยระบบ ถ้ายังกลัว ยังโลภ แสดงว่าไม่ได้เทรดด้วยระบบ ที่ถูกต้องคือเทรดตามความน่าจะเป็นตามระบบนั้นๆ ที่ซึ่งผ่านการทดสอบและยอมรับโดยนักพัฒนาระบบ
  7. เทรดตามระบบ ไม่เทรดความคิดเห็น: ใช้เวลาและความตั้งใจในการเทรดตามระบบให้ดีที่สุด อย่าไปเสียเวลาแสดงความคิดเห็นหรือไปชักจูงนักลงทุนคนอื่น สุดท้ายแล้วความคิดเห็นใครถูกผิดไม่สำคัญ สำคัญที่ใครทำเงิน
  8. คำนวณความเสี่ยงเชิงตัวเลขเสมอ: คนส่วนมากไม่รู้ว่าตัวเองกำลังเสี่ยงอยู่เท่าไหร่ ทำให้การลงทุนนั้นๆขาดปัจจัยด้านความเสี่ยงในการบริหารพอร์ต นักพัฒนาระบบควรต้องคำนวณความเสี่ยงออกมาเป็นตัวเลขที่ชัดเจน
  9. หมั่นเรียนรู้ สะสมทุน และอดทนรอ: สามสิ่งนี้เป็นสิ่งที่จะทวีคูณความสำเร็จให้กับนักพัฒนาระบบเทรดในระยะยาว จากความรู้ที่เพิ่มขึ้น เงินทุนที่มากขึ้น และการอดทนรอที่มีวินัยมากขึ้น เพื่อโอกาสที่มีความน่าจะเป็นสูงขึ้นที่จะเข้ามาในอนาคต
  10. กฏ 10% การได้มาซึ่งกลยุทธ์ที่ทำกำไร: นักพัฒนาระบบที่ดีต้องรู้จักการปฏิเสธกลยุทธ์ที่ไม่ผ่านมาตราฐาน หรือให้ผลลัพท์ที่แย่กว่ากลยุทธ์อื่นที่ใช้อยู่ รวมถึงการตั้งมาตราฐานขั้นต่ำต่างๆ เช่น CAR 10% และ Initial Equity 10% โดยเฉพาะในตอนเริ่มต้นการพัฒนาระบบ และเริ่มต้นเทรดระบบจริงๆ
  11. ทารุณระบบและข้อมูล จนมันสารภาพ: การทดสอบระบบและข้อมูลในช่วงที่ตลาดผันผวนและในช่วงที่ระบบทรุดนั้นสำคัญมาก เพื่อที่นักพัฒนาระบบจะพร้อมรับมือกับผลกระทบทั้งทางด้านเงินทุนและจิตใจที่จะเกิดขึ้น
  12. ตรวจสอบและพัฒนาระบบอย่างต่อเนื่อง: ไม่ใช่ทดสอบผ่านแล้วก็จบ เพื่อให้ผลลัพธ์จากการเทรดจริงใกล้เคียงกับผลการทดสอบที่สุด นักพัฒนาระบบจำเป็นต้องคอยตรวจสอบและเปรียบเทียบระหว่างผลลัพธ์ทั้งคู่อยู่เสมอ และอัปเดทสมมุติฐานต่างๆทางตัวเลขที่ระบุไว้ในโค้ดอย่างต่อเนื่อง

ปรัชญาข้อ 1: โค้ดไม่เป็น เทสไม่ผ่าน ไม่ต้องเทรด

โค้ดไม่เป็น เทสไม่ผ่าน ไม่ต้องเทรด No Code; No Test; Don't Trade

การโค้ด (Coding) ถือเป็นองค์ประกอบหนึ่งที่สำคัญต่อสายควอนท (Quant) มาก เพราะมันเป็นการบังคับให้นักพัฒนาระบบทำการบรรยายเงื่อนไขต่างๆออกมาอย่างชัดเจนเจาะจง ไม่ว่าจะเป็นเงื่อนไขสัญญานการซื้อขาย (Buy and Sell Signals) หรือเงื่อนไขการบริหารเงิน (Position Sizing Strategies) และอีกสิ่งสำคัญที่ได้จากการโค้ด คือ ความสามารถในการทดสอบระบบเทรดหุ้น

To Quant is To Code.
อยากควอนท ต้องโค้ด

การแบ็คเทส (Backtesting) เป็นข้อแตกต่างที่ชัดเจนระหว่างนักลงทุนสายควอนทเชิงปริมาณ (Quants) และนักลงทุนสายเทคนิคคอลเชิงกราฟ (Technicians) ซึ่ง:

  • ทั้ง Quants และ Technicians ส่วนใหญ่ต่างเป็น Systematic Traders
  • Quants ใช้โค้ดและเงื่อนไขเชิงตัวเลขในการทดสอบระบบด้วยโปรแกรม
  • Technicians ใช้กราฟ ประสบการณ์ และดุลยพินิจในการทดสอบระบบ
  • เพราะ Quants ใช้โปรแกรมทดสอบระบบ จึงสามารถทดสอบย้อนหลังเป็นปีๆ
  • Quants ยังสามารถทดสอบ Scenario ต่างๆกันเพื่อวิเคราะห์ความเสี่ยงได้อย่างละเอียด

จากข้างต้นจะเห็นว่าในขณะที่ Technicians มักมีข้อจำกัดในด้านจำนวนการทดสอบที่เหมาะสม ในขณะที่ สาย Quants สามารถตั้งเงื่อนไขในการเทสผ่านของระบบตนเองได้อีกด้วย รวมถึงการกำจัดความลำเอียงต่างๆ (ฺBiases) ออกจากการทดสอบระบบ ดังนั้น สาย Quants ต้องตระหนักไว้ว่า

No Code; No Test; No Trade.
ไม่โค้ด ไม่เทส ไม่ต้องเทรด

ปรัชญาข้อ 2: ลงทุนในตลาดที่เอื้ออำนวยต่อกลยุทธ์

เพื่อลดความเสี่ยงในการลงทุน ผู้พัฒนาระบบจำเป็นต้องทำการวิเคราะห์หาสภาพตลาด (Market Analysis) ที่เอื้ออำนวยต่อกลยุทธ์การเทรดนั้นๆ ซึ่งจะมีช่วงที่เอื้ออำนวยเป็นช่วงๆ ต่อตัวระบบเทรดนั้นๆ ที่สามารถนำมาใช้ในการลดความเสี่ยง ในขณะที่ผลกำไรยังคงเป็นที่น่าพอใจ

Invest in Markets favorable to Your Strategy.
จงลงทุนเฉพาะในตลาดที่เอื้ออำนวย

ThaiQuants แบ่งการวิเคราะห์ตลาดด้วยโปรแกรม AmiBroker ออกเป็น 3 ประเภท

  1. Market Filter (Basic) โดยการใช้ Index หลักๆของตลาดนั้นๆ (เช่น SET Index) เป็นตัววัดสภาพของตลาดว่ากำลังอยู่ใน ขาขึ้น (Uptrend) ออกข้าง (Sideways) หรือว่าขาลง (Downtrend)
  2. Market Classification (Intermediate-Advanced) เป็นการแบ่งสภาพตลาดอย่างละเอียดออกเป็น “คลาส” เพื่อทำการเพิ่มผลกำไรเมื่อตลาดเอื้ออำนวย และลดการลงทุนพร้อมความเสี่ยงเมื่อตลาดไม่เอื้ออำนวย
  3. Market Breadth (Advanced) เป็นการสร้าง Customized Index ขึ้นมาเองพร้อมการทดสอบอย่างละเอียด ก่อนที่ถูกนำไปใช้ใน Market Filter หรือ Market Classification โดยที่ Customized Index นี้มักจะมีการถ่วงน้ำหนักแบบเท่าเทียมกัน (Equally-Weighted Index) เพื่อให้เห็นอีกมุมมองหนึ่งของตลาด โดยเฉพาะช่วงเปลี่ยนเทรน (Trend Reversals) ในขณะที่ Index หลักๆของตลาดนั้น มักถูกถ่วงน้ำหนักด้วยขนาดของบริษัท (Capitalization-Weighted Index)

จากที่กล่าวคร่าวๆข้างต้น จะเห็นได้ว่ามีการวิเคราะห์ตลาดที่หลากหลายและส่งผลกระทบต่อระบบเทรดอย่างยิ่ง

Who knows his Market knows his Profit.
ผู้ใดรู้จักตลาด ผู้นั้นรู้จักผลกำไร

ปรัชญาข้อ 3: รู้จักระบบเทรดของตนเอง และรู้จักตนเอง

รู้จักระบบเทรดของตนเอง และรู้จักตนเอง Know your System. Know Yourself

ในการพัฒนากลยุทธ์เพื่อนำไปเทรดได้จริงนั้น ผู้พัฒนาจะต้องสร้างระบบที่เข้ากับลักษณะบุคคิลของตนเอง ไม่ว่าจะเป็นเรื่อง

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

Develop a strategy/system that fits your personality.
พัฒนาระบบเทรดที่เข้ากับลักษณะนิสัยของตนเอง

โดยที่ผู้พัฒนาต้องทำการทดสอบระบบให้หนักแล้วพิจารณาจากผลการทดสอบว่า สามารถทนสภาพต่างๆที่อาจจะเกิดขึ้นกับพอร์ตของตนเองเพราะระบบนั้นๆได้หรือไม่ เช่น

  • Max Drawdown 50% ถ้าพอร์ตมูลค่าหายไปครึ่งหนึ่ง ทั้งในกรณีระยะสั้นและระยะยาว จะยังรับได้มั้ย?
  • Max Drawdown Period 2 ปี ถ้าพอร์ตติดลบ อาจจะต้องรอถึง 2 ปี เพื่อจะกลับมาเท่าทุน จะยังรอได้มั้ย?
  • Max Consecutive Loss 20 ครั้ง คืออาจมีการขาดทุนซ้ำๆติดต่อกันถึง 20 ครั้ง จะยังรับไหวมั้ย?
  • Extreme Exposure 80% คือ การลงทุนอย่างหนักในช่วงที่ตลาดไม่เป็นใจ จะยังรับความเสี่ยงไหวมั้ย?

Know your System, Know Yourself.
จงรู้จักระบบของตนเอง และรู้จักตนเอง

ปรัชญาข้อ 4: ชื่นชมความเรียบง่าย เกลียดชังความซับซ้อน

นักพัฒนาระบบเทรดส่วนมากตอนเริ่มต้นมักเชื่อว่า ระบบที่ดูซับซ้อนจะได้ผลลัพธ์ที่ดีกว่าระบบที่เรียบง่าย ซึ่งถ้ามองโดยผิวเผินก็ควรจะเป็นเช่นนั้น แต่ในความเป็นจริงระบบที่ซับซ้อนไม่เพียงแต่ยากต่อการทดสอบ อีกทั้งยังยากในการนำไปเทรดจริง เงื่อนไขการซื้อขายและเงื่อนไขการคัทลอส อาจส่งผลให้ผู้พัฒนาไม่สามารถทำตามระบบได้จริง และสิ่งที่พบบ่อยคือ ซับซ้อนเกินความสามารถของนักพัฒนาในการโค้ดออกมาได้จริงแล้วนำไปทดสอบจริง นักพัฒนามือใหม่เหล่านี้จึงล่ะ เงื่อนไขบางส่วนไว้ในฐานที่เข้าใจ โดยหวังว่าตอนเทรดจริง จะทำตามเงื่อนไขเหล่านี้ด้วยตนเอง ซึ่งขัดกับ Philosophy 1

Keep it Simple, Specific, and Straightforward.
รักษาความเรียบง่าย เจาะจง และตรงไปตรงมา

เพราะฉะนั้น เพื่อที่จะไม่ให้เกิดปัญาหาข้างต้น …

  • Simple: เรียบง่าย เช่น เงื่อนไขซื้อขายเรียบง่าย ทั้งในส่วนของ Method และ Market รวมถึงการคัทลอส…
  • Specific: เจาะจง เช่น กลยุทธ์ที่มีตัวเลขเจาะจง ตามระยะเวลาการลงทุนต่อ Position โดยไม่พึ่ง Optimization…
  • Straightforward: ตรงไป ตรงมา  เช่น ในระบบๆหนึ่ง ควรใช้แค่ 1 กลยุทธ์ (1 AFL File: 1 Strategy) ไม่ควรเขียนระบบให้ทำงานสลับไปมาระหว่างกลยุทธ์เพราะตรวจสอบยาก พัฒนาต่อยาก และถ้าเกิดปัญหาจะวุ่นวายในการหาข้อผิดพลาด

Admire Simplicity. Despise Complexity.
ชื่นชมความเรียบง่าย เกลียดชังความซับซ้อน

ปรัชญาข้อ 5: ความผันผวนในตลาด และช่วงทรุดของระบบ เป็นสิ่งที่หลีกเลี่ยงไม่ได้

ถ้าอยู่ในตลาดนานพอ ก็จะทราบว่ายังไงๆก็ต้องเจอช่วงที่ตลาดไม่เอื้ออำนวย และช่วงที่ระบบเทรดมีอาการทรุด (Drawdown) ไม่ทำกำไรในช่วงเวลาหนึ่ง ซึ่งอาจส่งผลต่อสภาวะจิตใจและความมั่นใจในระบบเทรดของนักลงทุน ทั้งนี้ทั้งนั้น ไม่ว่าจะเป็นเพราะตลาดหรือเป็นเพราะระบบเทรด ความเข้าใจในสัจจะธรรมข้อนี้และความมั่นใจในระบบมีความจำเป็นอย่างยิ่ง ที่จะทำให้นักพัฒนาระบบฝ่าฟันช่วงที่ยากลำบาก เพื่อไปพบกับวันที่ตลาดเอื้ออำนวยและระบบกลับมาทำกำไรตามปรกติ

Market Fluctuation and System Drawdown are Inevitable.
ความผันผวนในตลาดและระบบทรุด เป็นสิ่งที่หลีกเลี่ยงไม่ได้

เพราะฉะนั้น นักพัฒนาระบบต้องทำการทดสอบระบบเทรดภายใต้ตลาดต่างๆแล้ววิเคราะห์สิ่งที่อาจจะเกิดขึ้น เพื่อพร้อมเตรียมการรับมือทั้งทางด้านการเงิน และทางด้านจิตใจ ภายใต้ความเชื่อมั่นในระบบเทรดของตนเองที่ได้ผ่านการทดสอบแล้วมาเป็นอย่างดี

To survive both, you need Confidence in your Well-Backtested System, and Patience.
ระบบที่ดีจะอยู่รอดในตลาดได้ นักพัฒนาต้องมีความั่นใจในระบบนั้นๆ และความอดทน

ปรัชญาข้อ 6: ไม่กลัว ไม่โลภ ว่าไปตามความน่าจะเป็น

ความโลภและความกลัว มักเป็นสาเหตุที่ทำให้นักลงทุนขาดสติ ทำการตัดสินใจอย่างไม่เหมาะสมต่อสิ่งที่เกิดขึ้นในตลาด ณ เวลานั้นๆ ซึ่งตลาดที่ไร้เหตุผลนี่แหล่ะที่ควรเป็นโอกาสของนักลงทุนด้วยระบบเทรดหุ้นอย่างยิ่ง ที่จะฉวยโอกาสในการวิเคราะห์และการทำกำไร ก่อนที่คนหมู่มากจะตื่นขึ้นมาจากความโลภและความกลัว

ความน่าจะเป็น (Probability) ที่นักพัฒนาระบบควรทดสอบอย่างถูกต้องและครบถ้วน สามารถบอกข้อมูลเชิงตัวเลขใน:

  • วิเคราะห์ตลาด
  • วิเคราะห์กลยุทธ์
  • วิเคราะห์ความเสี่ยง

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

No Greed. No Fear. Just Probability.
ไม่โลภ ไม่กลัว ว่าไปตามความน่าจะเป็น

ปรัชญาข้อ 7: เทรดตามระบบ ไม่เทรดความคิดเห็น

ต่างคน ต่างมี ทัศนะคติความคิดเห็นต่างๆนานากับตลาดหุ้นและการลงทุน ซึ่งอาจจะถูกหรือผิดก็ได้ แต่สิ่งที่สำคัญคือ นักพัฒนาระบบต้องเข้าใจว่า ทัศนะคติความคิดเห็นที่ถูกต้องทำกำไรสำหรับคนๆหนึ่ง อาจจะส่งผลให้ขาดทุนเมื่ออีกคนนำไปใช้ก็ได้ ในฐานะนักพัฒนาระบบ เรามีหน้าที่เทรดระบบที่เราสร้างและทดสอบขึ้นมาเองเท่านั้น เราจะไม่ใช้ระบบของคนอื่น และเราจะไม่เทรดทัศนะคติความคิดเห็นต่อตลาดหุ้นใดๆกับใครทั้งนั้น

Trade your System, not your Opinions.
เทรดตามระบบ ไม่เทรดความคิดเห็น

ชีวิตการลงทุนของนักพัฒนาระบบเทรดจะเรียบง่ายขึ้นมาก ถ้าเราตั้งมั่นอยู่บนระบบเทรดของตนเองที่มีการทดสอบมาแล้วอย่างดี และรู้จักระบบของตนเองอย่างถึงแก่น โดยที่ต้องเข้าใจว่า เราลงทุนเพื่อเงิน เราลงทุนเพื่อกำไร ไม่ใช่เพื่อบอกว่า ทัศนะคติความคิดของเรานั้นถูกต้อง

Being Right or Making Money.
อยากคิดถูก หรืออยากทำกำไร

ปรัชญาข้อ 8: คำนวณความเสี่ยงเชิงตัวเลขเสมอ

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

Always Quantify your Risk.
คำนวณความเสี่ยงเชิงตัวเลขเสมอ

ประเภทของความเสี่ยงที่นักพัฒนาระบบเทรดหุ้นควรทำการคำนวณ เพื่อทำการทดสอบระบบและเพื่อบริหารระบบตอนเทรดจริงได้แก่

  • Position Risk เป็นความเสี่ยงของหุ้นตัวนั้นๆ ซึ่งอาจคำนวณจาก ค่า Stop Loss ที่ตั้งไว้ หรือค่าความผันผวน Volatility หรือค่าอื่นๆ โดยที่นักพัฒนาระบบต้องพิจารณาเลือกใช้ในเหมาะสมกับกลยุทธ์นั้นๆ โดย ความเสี่ยงจากหุ้นนั้นๆ จะมีผลโดยตรงต่อการเลือกเข้าซื้อหุ้นเข้าพอร์ต (Initial Position Risk) เพราะ หุ้นที่เสี่ยงมากๆ อาจถูกยกเว้นจากการเข้าซื้อ ถึงแม้หุ้นตัวนั้นจะผ่านเงื่อนไขการซื้อ (Buy Conditions) เนื่องจากจะทำให้ ความเสี่ยงของพอร์ต (Portfolio Risk) ในปัจจุบันสูงเกินกว่าที่นักพัฒนาระบบได้ออกแบบไว้
  • Portfolio Risk หรือเรียกอีกอย่างว่า Portfolio Heat ซึ่งเป็นความเสี่ยงของทั้งพอร์ต ที่คำนวณมาจาก ผลรวมของความเสี่ยง ณ ปัจจุบัน (Current Position Risks) ของหุ้นทุกตัวที่อยู่ในพอร์ต โดยทีั่ค่าผลรวมนี้ หรือความเสี่ยงของทั้งพอร์ต ไม่ควรมีค่าเกินกว่าที่ระบบได้ทำการออกแบบและทดสอบไว้
  • Periodic Loss & Risk เป็นความเสียหายและความเสี่ยงของพอร์ตในแค่ช่วงเวลาสั้นๆ เช่น 20 วันล่าสุด ขาดทุนเท่าไหร่และมีค่าความเสี่ยงในปัจจุบันเท่าไหร่ เพื่อใช้ในการบรรเทา False Signals และผลจากสภาวะตลาดออกข้าง (Sideways Market) โดยผู้สนใจสามารถหาอ่านได้จาก 2% & 6% Rules by Dr. Alexander Elder
  • Market Risk เป็นการคำนวณความเสี่ยงของทั้งตลาดว่าอาจมีการปรับตัว (Correction) ได้ที่เท่าไหร่ จากผลการวิเคราะห์ข้อมูลย้อนหลัง เพื่อนำมาใช้ในการควบคุมความเสี่ยงของพอร์ตและกลยุทธ์ภายใต้ประเภทสภาพตลาดนั้นๆ นักพัฒนาระบบควรรู้เสมอว่า กลยุทธ์นั้นๆของตนเองอาจถูกผลกระทบจากสภาพตลาดต่างๆเป็นตัวเลขเชิงปริมาณเท่าไหร่

Risk-Free Investment doesn’t exist, unless one doesn’t know what he is doing.
ไม่มีการลงทุนใดที่ปราศจากความเสี่ยง ยกเว้นแต่ว่านักลงทุนไม่รู้ว่ากำลังทำอะไรอยู่

ปรัชญาข้อ 9: หมั่นเรียนรู้ สะสมทุน และอดทนรอโอกาส

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

  • Education เรียนรู้ตลาดในปัจจุบันและหากลยุทธ์และแนวทางการลงทุนใหม่ๆให้กับตนเอง รวมประวัติศาสตร์ของตลาดทุน ซึ่งทุกสิ่งทุกอย่างที่เกิดขึ้นในวันนี้ล้วนเคยเกิดขึ้นหรือใกล้เคียงกับในอดีตมาแล้วทั้งนั้น เพียงอาจต่างกันแค่ วัน เวลา สถานที่ ตลาด ประเภททรัพย์สิน (Ray Dalio)
  • Saving สะสมทุนเพื่อรอโอกาสที่มีความน่าจะเป็นในการทำกำไรสูงมากๆ โดยเฉพาะในช่วง ตลาดหมี (Bear Market) ที่จะผ่านเข้ามาใช้ชีวิตการลงทุนของนักพัฒนาระบบทุกๆ 5-10 ปี (Charlie Munger)
  • Patience อดทนรออย่างมีวินัยและฝึกให้เป็นธรรมชาติ ไม่รู้สึกอึดอัด และไม่คันมือคันไม้อยากจะเทรด เพราะรู้ว่ายังไม่ถึงเวลา และยังไม่มีสัญญาณจากระบบเทรด

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

Be Educated, Be Funded, and Be Patient.
หมั่นเรียนรู้ สะสมทุน อดทนรอ

ปรัชญาข้อ 10: กฎ 10% การได้มาซึ่งกลยุทธ์ที่ทำกำไร

กฏ 10% นี้มีจุดประสงค์หลัก คือ การเตือนไม่ให้นักพัฒนาระบบ ประมาทในการสร้างระบบและการเทรดด้วยระบบ โดยนักพัฒนาระบบต้องมีความคาดหวังเหมาะสม ในการได้มาซึ่งกลยุทธ์ที่ทำกำไร และความมีวินัยทั้งในการเลือกสรรกลยุทธ์ที่จะนำไปเทรด และในการทยอยทำการลงทุน (Paper Trade) เพื่อทดสอบกลยุทธ์ในสนามจริง โดย ThaiQuants ขอแนะนำ กฏ 10% ต่างๆ ดังนี้

  • 10% ของจำนวนกลยุทธ์ หมายความว่า จาก 10 กลยุทธ์ อาจจะมีแค่เพียง 1 กลยุทธ์เท่านั้น ที่ควรเริ่มไปลองเทรดก่อน โดยเฉพาะมือใหม่
  • 10% ของจำนวนเงินทั้งหมด หมายความว่า จากเงินทั้งหมดที่ต้องการลงทุน ในตอนเริ่มเทรดจริง ควรเริ่มใช้เพียงแค่ 10% ก่อน เพื่อทำ Paper Trade
  • 10% ของกำไรต่อปี หมายความว่า ไม่ควรนำกลยุทธ์ที่ให้ผลกำไรเฉลี่ยต่อปี ต่ำกว่า 10% ซึ่งค่าสถิติผลตอบแทนเฉลี่ยของตลาดจริงในระยะยาว
  • 10% ของความน่าจะเป็นในการทำกำไร หมายความว่า ไม่ควรนำกลยุทธ์ที่ให้ผล Cumulative CAR ที่ 10 percentile ต่ำกว่า ศูนย์
  • 10% อื่นๆ… ที่นักพัฒนาระบบอาจตั้งขึ้นมาเอง อย่างเหมาะสมในเชิงตัวเลข เช่น Max Drawdown, #Max Consecutive Loss, Loss per 20 days, …

From 10 Strategies passing backtested; Choose only 1 to trade.
จาก 10 กลยุทธ์ที่ผ่านการทดสอบ ให้เลือกมาเพียงแค่ 1 กลยุทธ์

สำหรับนักพัฒนาระบบเทรดหุ้น ที่เป็นมือใหม่ ข้อแนะนำ “10% ของจำนวนกลยุทธ์” ถือว่าสำคัญมากเพราะว่าในตอนเริ่มต้น นักพัฒนาส่วนมากมักมีความคาดหวังการได้มาซึ่งกลยุทธ์ที่ทำกำไรได้จริงเร็วเกินไป และมีจำนวนกลยุทธ์สำหรับเพื่อใช้ในการเปรียบเทียบคัดสรรน้อยเกินไป ในตอนที่ยังมีประสบการณ์ไม่มาก ซึ่งในข้อนี้ ThaiQuants อยากให้ใจเย็นสักนิด เข้าใจว่าทุกอย่างต้องใช้เวลาในการเรียนรู้และเก็บประสบการณ์ ไม่ใช่เรียนวันนี้ ทำวันนี้ เทรดพรุ่งนี้แล้วจะกำไรได้เลย

อีกข้อที่สำคัญ สำหรับกลยุทธ์ที่กำลังจะถูกนำไปเทรดจริง คือ ข้อแนะนำ “10% ของเงินจำนวนทั้งหมด” เพราะนักพัฒนาระบบมือใหม่ อาจไม่ได้ตระหนักถืงความเสี่ยงและความจริงที่ว่า ไม่มีการทดสอบใดที่สมจริงไปกว่า การเทรดจริงในตลาดจริง ดังนั้นนักพัฒนาระบบไม่ควรประมาท หรือเชื่อผลลัพธ์จากการทดสอบ (Backtest) อย่างไม่มีเหตุผลหรือไม่มีหลักฐานจากการเทรดจริง

แล้วหลังจากที่นักพัฒนาระบบ มีประสบการณ์จริงเพิ่มพูนขึ้นเรื่อยๆ ปรัชญา 10% นี้ ก็ควรถูกปรับเปลี่ยนในมีมาตราฐานสูงขึ้นตามไปด้วย เช่น กลายเป็น กฏ 20% ในการได้มาซึ่งกลยุทธ์ที่ทำกำไร หรือแม้กระทั่ง 50% โดย ThaiQuants ขอแนะนำว่าควรใช้เวลา 2-5 ปี ขึ้นไป

The Best Backtesting is The Actual Trading.
การทดสอบที่ดีทีสุด คือ การเทรดจริงในตลาดจริง

ปรัชญาข้อ 11: ทารุณระบบและข้อมูล จนมันสารภาพ

ระบบที่ไม่ได้ผ่านการทดสอบอย่างถูกต้องและครบถ้วน นั้นแทบจะไม่มีทางทำกำไรอย่างต่อเนื่องในระยะยาวได้เลย และถือว่าเป็นการไม่รับผิดชอบในหน้าที่ของนักพัฒนาระบบนั้นๆ ถ้าเพียงแค่กดปุ่ม Backtest เป็น แล้วเรียกว่าทดสอบระบบเป็น ทุกคนคงรวยกันไปหมดแล้ว
Torture your system and data enough, they will confess.
ทารุณระบบและข้อมูล จนมันสารภาพทุกอย่างออกมา
การทดสอบระบบ คือหนึ่งในปราการหลักในสงครามการลงทุน ก่อนที่ระบบหนึ่งๆจะถูกนำไปใช้เทรดจริง ด้วยเงินจริง เพราะฉะนั้น นักพัฒนาระบบต้องทำให้แน่ใจว่า ได้มีการทดสอบระบบอย่างถูกต้องและครบถ้วนซ้ำแล้วซ้ำเหล่า เปรียบดัง การทารุณระบบและข้อมูล จนมันสารภาพทุกอย่างออกมา
การทารุณระบบ
  • Simulation Backtesting แบบ Trade Simulating ไม่ใช่ Trade Shuffling ที่เป็น default ใน AmiBroker ซึ่ง Trade Simulating ถือเป็นวิธีการทดสอบพื้นฐานที่ต้องนำไปต่อยอดในการทดสอบแบบต่างๆ ข้างล้างนี้
  • Monkey Tests ทดสอบแข่งกันระหว่างระบบของเรา กับระบบซื้อขายแบบสุ่ม (Random) แต่ให้เปรียบเทียบค่า Cumulative Distribution ที่ percentile ต่างกัน เช่น @90 ของ Money Test กับ @50 percentile ของระบบเรา ไม่ว่าจะเป็น CAR หรือ MDD
  • Walk Forward Analysis เพื่อทดสอบย้อนหลังเป็นช่วงๆ เช่น 1, 2, และ 4 ปี โดยจะเข้าที่จ้นปีและกลางปี แล้วทดสอบจนจบช่วงนั้นๆ แล้วพิจารณา Cumulative Distribution ที่ 10-15 percentile ว่าระบบให้ผลลัพท์เป็นที่หน้าพึงพอใจหรือไม่
  • Random Walk Forward Analysis จะคล้ายๆ Walk Forward Analysis แต่จะสุ่มเข้าที่วันไหนของปีก็ได้ (ไม่จำเป็นต้องเข้าต้นปี หรือ กลางปี) แล้วจึงทดสอบจนจบช่วงนั้นๆ เช่น 1, 2, และ 4 ปี
การทารุณข้อมูล
  • ข้อมูลต้องถูกเลือกใช้อย่างมีเหตุผล และตัองแบ่งออกเป็น 2 ส่วน โดยห้ามใช้ข้อมูลทั้งหมดอย่างเด็ดขาด และในตอนเริ่มต้นห้ามทดสอบกับข้อมูลเป็น 10 ปี
  • In-Sample Data (IS) เป็นข้อมูลที่ใช้คู่การตอนเขียนโค้ด ออกแบบระบบ และทดสอบในเบื้องต้น จำง่ายๆว่า ถ้ายังจะมีการแก้ไขโค้ดอยู่ นักพัฒนาระบบควรใช้แต่ IS Data ที่เตรียมไว้ ซึ่งควรมีระยะเวลา 4-5 ปี และครอบคลุมสภาพตลาดต่างๆทั้งหมด ทั้งขาขึ้น ขาลง และออกข้าง
  • Out-Of-Sameple Data (OOS) เป็นข้อมูลส่วนที่เหลือจาก IS ซึ่งถูกเก็บไว้ใช้เพื่อทดสอบระบบอย่างหนัก ว่าระบบนี้จะผ่านมาตราฐานของนักพัฒนาหรือไม่ ซึ่งถ้าเกิดมีการแก้ไขโค้ดในตอนทดสอบ OOS Data จะส่งผลเสียที่ทำให้ระบบเข้าใกล้ Overfit และ OOS Data ชุดนี้ ก็จะกลายเป็นกึ่งๆ IS Data

Choose Data Wisely to Backtest: IS Data and OOS Data
เลือกและจัดแบ่งข้อมูลอย่างฉลาดในการทดสอบ IS Data และ OOS Data

ปรัชญาข้อ 12: ตรวจสอบและพัฒนาระบบอย่างต่อเนื่อง

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

  • ใช้ข้อมูลในอดีตซึ่งโครงสร้างและผู้เล่นในตลาดอาจมีการเปลี่ยนแปลง
  • อนุโลมเบื้องต้นว่าสามารถเทรดได้จริงตามการทดสอบ 100%
  • ตัวแปรต่างๆ ในเบื้องต้น ที่อาจแตกต่างจากความเป็นจริง เช่น Slippage และ Missing Trades
  • สมมุติฐานอื่นๆ ..

Done with Backtesting, yet not with Improving
ทดสอบจบแต่หน้าที่ของนักพัฒนาระบบเทรดยังไม่จบ

เพื่อลดความแตกต่างระหว่างเทรดจริงกับการทดสอบ นักพัฒนาระบบเทรดหุ้นมีหน้าที่หลักๆ ในช่วงเทรดจริง ดังนี้

  • ตรวจสอบผล
  • อัฟเดทสมมุติฐาน
  • ทดสอบใหม่

Continuously Monitor and Improve the Process
หมั่นตรวจสอบและพัฒนาระบบเทรดอย่างต่อเนื่อง

ทิ้งท้าย Philosophy ปรัชญาการลงทุนด้วยระบบเทรด

สำหรับนักพัฒนาระบบเทรดหุ้นที่ได้อ่าน Philosophy of Systematic and Quantitative Trading Systems ถึงตรงนี้ คงจะมีข้อสงสัยและคำถามมากมาย ซึ่งเป็นหน้าที่ๆต้องค่อยๆเก็บรายละเอียดและหาความรู้เพิ่มเติม ตามที่บอกในข้างต้นว่า ไม่จำเป็นที่ต้องเข้าใจหรือทำได้ทุกอย่างทั้งหมดในวันนี้ เพียงแค่อย่าหยุดลงทุนในตนเองและอย่าหยุดเรียนรู้ตนเอง

Never stop Investing in yourself and Learning about yourself
อย่าหยุดลงทุนในตนเอง และอย่าหยุดเรียนรู้ตัวเอง

ลิงค์ความรู้เพิ่มเติมที่เกี่ยวข้องกับการพัฒนาและทดสอบระบบเทรดหุ้น

ด้วยความปรารถนาดี
ThaiQuants