Philosophy ปรัชญาการลงทุนด้วยระบบเทรดหุ้น
ThaiQuants ขออนุญาติเสนอแนะแนวคิดและแนวปฎิบัติ สำหรับผู้สนใจและมือใหม่ ในการพัฒนา ทดสอบ และเทรด ด้วยระบบเทรดหุ้นเชิงปริมาณ Systematic and Quantitative Trading Systems ซึ่งมีลักษณะพิเศษของตัวมันเอง และเพื่อเป็นจุดเริ่มต้นในการเรียนรู้และนำไปใช้ให้ก่อเกิดกำไรสูงสุดในการลงทุนด้วยระบบเทรดหุ้น
About Philosophy of Systematic and Quantitative Trading
ThaiQuants หวังว่าบทความนี้จะช่วยชี้นำแนวทางให้ผู้สนใจและมือใหม่ ให้มีทัศนคติ มุมมอง และการปฎิบัติที่เหมาะสม โดยเฉพาะอย่างยิ่งในตอนเริ่มต้นพัฒนาและเทรดหุ้นด้วยระบบ ก่อนที่จะสามารถหาหนทางและปรับเปลี่ยนปรัญชาเหล่านี้ให้เข้ากับตนเองต่อไปในอนาคต โดย ThaiQuants ขอแนะนำให้นักพัฒนา ค่อยๆทำการเรียนรู้และเก็บรายละเอียดต่างๆ อย่างค่อยๆเป็นค่อยๆไป ไม่มีความจำเป็นต้องทำให้ได้ทั้งหมดในวันนี้ เพราะรายละเอียดค่อนข้างมาก แต่ขอเพียงแค่ให้รู้และเข้าใจมุมมองจากปรัชญาเหล่านี้ไว้ก่อน จากสรุปสั้นๆดังนี้
หมายเหตุ: ปรัชญาการลงทุนด้วยระบบเทรดเหล่านี้ ถูกเขียนขึ้นจากประสบการณ์และความเชื่อส่วนตัวของ ThaiQuants ผู้อ่านควรใช้วิจารณญาณและเหตุผลในการตีความ รวมถึงการนำไปใช้
สรุป Philosophy ปรัชญาการลงทุนด้วยระบบเทรด
- โค้ดไม่เป็น เทสไม่ผ่าน ไม่ต้องเทรด: โค้ดเงื่อนไข และใส่ตัวเลขให้ชัดเจน อย่าให้มีความคลุมเครือหลงเหลืออยู่ในระบบ และอย่าคาดหวังอะไร ใดๆ ทั้งสิ้นกับสิ่งที่ไม่ได้โค้ดออกมา แล้วทดสอบด้วยตนเอง
- ลงทุนในตลาดที่เอื้ออำนวยต่อกลยุทธ์: แทนที่จะลงทุนตลอดเวลา นักพัฒนาระบบควรทดสอบกลยุทธ์ต่อประเภทตลาดต่างๆ ว่าสภาพแบบไหนที่มีข้อได้เปรียบและมีความน่าจะเป็นในการทำกำไรต่อขาดทุนสูงสุด
- รู้จักระบบเทรดของตนเอง และรู้จักตนเอง: เลือกใช้ระบบที่เหมาะสมกับลักษณะนิสัยของตนเอง ระบบใคร ระบบมัน ความเชื่อมั่นต้องถูกพิสูจน์มาจากการทดสอบด้วยตนเอง และหลีกเลี่ยงการใช้ระบบของคนอื่นที่ตนเองไม่เข้าใจ
- ชื่นชมความเรียบง่าย เกลียดชังความซับซ้อน: ระบบที่ดีต้องเทรดได้จริง ไม่ใช่แค่ทดสอบได้ในคอมพิวเตอร์ หลีกเลี่ยงระบบที่ซับซ้อน ไม่ว่าจะเป็น เงื่อนไขซื้อขายและการคัดลอส และวิธีการบริหารพอร์ตและความเสี่ยง
- ความผันผวนในตลาด และช่วงทรุดของระบบ เป็นสิ่งที่หลีกเลี่ยงไม่ได้: ต้องเข้าใจว่าเป็นสัจธรรม และต้องรู้จักระบบและตลาดของตนเองให้ดี จากการออกแบบและทดสอบที่ถูกต้องและครบถ้วน เพื่อที่จะทำการผ่านช่วงวิกฤตต่างๆไปให้ได้
- ไม่กลัว ไม่โลภ ว่าไปตามความน่าจะเป็น: ความลำเอียงในการลงทุนทางจิตใจไม่ควรเป็นส่วนหนึ่งของการเทรดด้วยระบบ ถ้ายังกลัว ยังโลภ แสดงว่าไม่ได้เทรดด้วยระบบ ที่ถูกต้องคือเทรดตามความน่าจะเป็นตามระบบนั้นๆ ที่ซึ่งผ่านการทดสอบและยอมรับโดยนักพัฒนาระบบ
- เทรดตามระบบ ไม่เทรดความคิดเห็น: ใช้เวลาและความตั้งใจในการเทรดตามระบบให้ดีที่สุด อย่าไปเสียเวลาแสดงความคิดเห็นหรือไปชักจูงนักลงทุนคนอื่น สุดท้ายแล้วความคิดเห็นใครถูกผิดไม่สำคัญ สำคัญที่ใครทำเงิน
- คำนวณความเสี่ยงเชิงตัวเลขเสมอ: คนส่วนมากไม่รู้ว่าตัวเองกำลังเสี่ยงอยู่เท่าไหร่ ทำให้การลงทุนนั้นๆขาดปัจจัยด้านความเสี่ยงในการบริหารพอร์ต นักพัฒนาระบบควรต้องคำนวณความเสี่ยงออกมาเป็นตัวเลขที่ชัดเจน
- หมั่นเรียนรู้ สะสมทุน และอดทนรอ: สามสิ่งนี้เป็นสิ่งที่จะทวีคูณความสำเร็จให้กับนักพัฒนาระบบเทรดในระยะยาว จากความรู้ที่เพิ่มขึ้น เงินทุนที่มากขึ้น และการอดทนรอที่มีวินัยมากขึ้น เพื่อโอกาสที่มีความน่าจะเป็นสูงขึ้นที่จะเข้ามาในอนาคต
- กฏ 10% การได้มาซึ่งกลยุทธ์ที่ทำกำไร: นักพัฒนาระบบที่ดีต้องรู้จักการปฏิเสธกลยุทธ์ที่ไม่ผ่านมาตราฐาน หรือให้ผลลัพท์ที่แย่กว่ากลยุทธ์อื่นที่ใช้อยู่ รวมถึงการตั้งมาตราฐานขั้นต่ำต่างๆ เช่น CAR 10% และ Initial Equity 10% โดยเฉพาะในตอนเริ่มต้นการพัฒนาระบบ และเริ่มต้นเทรดระบบจริงๆ
- ทารุณระบบและข้อมูล จนมันสารภาพ: การทดสอบระบบและข้อมูลในช่วงที่ตลาดผันผวนและในช่วงที่ระบบทรุดนั้นสำคัญมาก เพื่อที่นักพัฒนาระบบจะพร้อมรับมือกับผลกระทบทั้งทางด้านเงินทุนและจิตใจที่จะเกิดขึ้น
- ตรวจสอบและพัฒนาระบบอย่างต่อเนื่อง: ไม่ใช่ทดสอบผ่านแล้วก็จบ เพื่อให้ผลลัพธ์จากการเทรดจริงใกล้เคียงกับผลการทดสอบที่สุด นักพัฒนาระบบจำเป็นต้องคอยตรวจสอบและเปรียบเทียบระหว่างผลลัพธ์ทั้งคู่อยู่เสมอ และอัปเดทสมมุติฐานต่างๆทางตัวเลขที่ระบุไว้ในโค้ดอย่างต่อเนื่อง
ปรัชญาข้อ 1: โค้ดไม่เป็น เทสไม่ผ่าน ไม่ต้องเทรด
การโค้ด (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 ประเภท
- Market Filter (Basic) โดยการใช้ Index หลักๆของตลาดนั้นๆ (เช่น SET Index) เป็นตัววัดสภาพของตลาดว่ากำลังอยู่ใน ขาขึ้น (Uptrend) ออกข้าง (Sideways) หรือว่าขาลง (Downtrend)
- Market Classification (Intermediate-Advanced) เป็นการแบ่งสภาพตลาดอย่างละเอียดออกเป็น “คลาส” เพื่อทำการเพิ่มผลกำไรเมื่อตลาดเอื้ออำนวย และลดการลงทุนพร้อมความเสี่ยงเมื่อตลาดไม่เอื้ออำนวย
- 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: รู้จักระบบเทรดของตนเอง และรู้จักตนเอง
ในการพัฒนากลยุทธ์เพื่อนำไปเทรดได้จริงนั้น ผู้พัฒนาจะต้องสร้างระบบที่เข้ากับลักษณะบุคคิลของตนเอง ไม่ว่าจะเป็นเรื่อง
- ระยะเวลาในการลงทุน ว่าเป็นระยะสั้น กลาง ยาว ในการเข้าถือหุ้นนั้นๆ
- แนวทางการลงทุน ว่าเป็นเทคนิคคอล หรือมูลค่าพื้นฐาน ซึ่งสามารถวิเคราะห์เชิงตัวเลขได้จริง
- มูลค่าเงินลงทุนต่อความเสี่ยง ว่าอยู่ในระดับที่ยอมรับได้ ไม่เสี่ยงจนก่อเกิดความเครียด
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: ทารุณระบบและข้อมูล จนมันสารภาพ
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’ AmiBroker AFL Template
- การวิเคราะห์สภาพตลาดแบบต่างๆ
- ตลาดหุ้นเหมือนทะเล ส่วนหุ้นก็เหมือนเรือ
- การพัฒนาตนเองสู่ Quant
- กระบวนการพัฒนาระบบเทรดหุ้น
- การทดสอบระบบแบบ Trade Shuffling และ Trade Simulating
- การทดสอบระบบด้วย Walk Forward Analysis
- การจัดการบริหารพอร์ตและความเสี่ยงแบบต่างๆ
ด้วยความปรารถนาดี
ThaiQuants