Stop Bleeding Systems

หยุดการขาดทุน… เลือดไหล เลือดสาด  นักลงทุนที่จะอยู่ทำกำไรในตลาดนานๆได้ ไม่เพียงแต่จะต้องรู้จักการคัทลอส (Cut Loss) แต่ยังต้องรู้ว่า เมื่อไหร่ควรจะหยุดซื้อหุ้นเพิ่ม เพื่อไม่ให้ขาดทุนหนักกว่าเดิม โดย ThaiQuants เรียกระบบส่วนนี้ว่า Stop-Bleeding Systems ซึ่งเป็นส่วนหนึ่งของระบบเทรดทั้งหมด (Trading System) ที่จะทำหน้าที่เป็นอีกปราการ ป้องกันการขาดทุนอย่างต่อเนื่อง หลังจากที่มีการคัทลอสบ่อยๆ และมีความเสี่ยง (Risk) ในพอร์ตเพิ่มขึ้น ซึ่งไอเดียนี้ได้นำมาจาก Dr. Alexander Elder 6% Rule แล้วมีการต่อยอดให้เหมาะสมกับ Trading System

โดยปรกติ Trading System จะมีการตั้งค่า Stop ประเภทต่างๆอยู่ (ApplyStop ใน AmiBroker) เช่น

  • Stop Loss หยุดขาดทุน “เงินต้น”
  • Stop Trailing หยุดขาดทุน “กำไร” หรือหยุดกลับมาขาดทุน “เงินต้น”

ทั้งกระนั้น เมื่อตลาดไม่เอื้ออำนวย หรือไม่ทำเทรน (Market Trend) อย่างชัดเจน จะส่งผลให้เกิดสัญญาณผิดๆ (False Signals) สิ่งที่มักจะตามมาคือ ระบบเทรดทำการ Stop Loss ซ้ำๆ ขาดทุนอย่างต่อเนื่อง ในหุ้นหลายๆตัวในพอร์ตของนักลงทุน

เมื่อมีการ Stop Loss ถี่ๆ ระบบจะต้องหยุดซื้อหุ้นเพิ่ม
เพราะซื้อเข้ามาใหม่ ก็ถูก Stop Loss อยู่ดี

สรุปสั้นๆ คือ ระบบเทรดควรมีการหยุดขาดทุน 2 ระดับ (2 Layers) อย่างต่ำ

  1. Stop Loss หรือการคัทลอส
  2. Stop-Bleeding Systems

นลท จะเห็นว่า Sell Signals ไม่ได้อยู่ใน 2 Layers ข้างต้น เพราะ Sell Signals อาจพิจารณาขายที่ Maximum Profit กำไรสูงสุดก็เป็นได้ และในโพสนี้จะเน้นเรื่องการขาดทุนและความเสี่ยงเป็นหลัก ทั้งกระนั้น สำหรับ นลท สาย Quant อีกหนึ่งระดับที่ควรพิจารณานำมาเสริมอย่างยิ่งคือ Market Analysis เมื่อวิเคราะห์ตรวจสอบได้ว่าตลาดเริ่มหรืออยู่ในสภาวะที่ไม่เอื้ออำนวยต่อการลงทุนของระบบเทรดที่ใช้อยู่ (Unfavorable Market Condition) ซึ่งการวิเคราะห์มีตั้งแต่ Market Filter, Market Classification, และ Market Breadth

Dr. Alexander Elder 6% Rule

หลักการคร่าวๆ Dr. Elder 6% Rule จะไม่ให้ทำการซื้อหุ้นเพิ่มเมื่อในเดือนนั้นๆ มี 1. การขาดทุน บวกกับ 2. ความเสี่ยงเกิน 6% ของมูลค่าพอร์ต ณ ต้นเดือนนั้นๆ โดยที่

  1. การขาดทุน จะคำนวณจากหุ้นที่ถูกขายทิ้งไปแล้วในเดือนนั้น (Close Position) เช่น ซื้อ 4,000 หุ้นที่ 10 บาท แต่ขายทิ้ง 8 บาท ก็แสดงว่าขาดทุน (10-8) x 4,000 = 8,000 บาท
  2. ความเสี่ยง จะคำนวณจากหุ้นที่ถืออยู่ในมือ (Open Position) ว่าเสี่ยงเท่าไหร่ เช่น ซื้อ 100,000 หุ้น ที่ 5 บาท แล้วตั้ง Stop Loss ที่ 4 บาท หุ้น position นี้จะมีความเสี่ยงที่ (5-4) x 100,000 = 100,000 บาท แต่ถ้าราคาขึ้นมาเป็น 6 บาท แล้วยก Stop Loss มาที่ 5 บาท แสดงว่า Position นี้ ไม่มีความเสี่ยงแล้ว (จริงๆสามารถคิดได้หลายแบบ แล้วแต่จะออกแบบการคำนวณ On-going risk)
  3. เปรียบเทียบกับพอร์ต โดยนำข้อ 1 และ 2 รวมกัน แล้วนำไปเทียบกับมูลค่าพอร์ต ณ ต้นเดือน ว่าเกิน 6% มั้ย
    1. ถ้าไม่เกิน จะอนุญาติให้ซื้อหุ้นเพิ่มได้ โดยจำนวนที่ซื้อเพิ่มต้องไม่ทำให้ความเสี่ยงตัวใหม่ บวกข้อ 1 และ 2 ในเดือนนั้นเกิน 6%
    2. ถ้าเกิน ไม่ให้ซื้อหุ้นเพิ่ม หรือมิเช่นนั้น ให้ทำการขายหุ้นที่ถืออยู่ออกไปเพื่อลดความเสี่ยงลง แล้วถึงซื้อหุ้นที่ต้องการได้ โดยต้องเช็คกับข้อ 3.1 อีกครั้ง

The New Trading for a Living

จากคำอธิบายข้างต้น ThaiQuants ขอชี้แจงว่า Dr. Elder ได้พยายามทำให้การตรวจสอบนั้นไม่ซับซ้อน เข้าใจง่าย และนักลงทุนทั่วไปสามารถทำได้จริง ทั้งกระนั้น สำหรับ นลท สาย Quant ควรจะพิจารณา ต่อยอดไอเดียนี้ให้มีประสิทธิภาพมากยิ่งขึ้น และสอดคล้องกับ Trading System ที่ตนเองใช้อยู่ ตัวอย่างไอเดียการพัฒนา เช่น

  • แทนที่จะมอง การขาดทุน จากต้นเดือน แต่ให้มองเป็นย้อนหลังไป 20 วัน (N Days ซึ่งจะได้ได้ค่าที่ถูกต้องกว่า)
  • แทนที่จะมอง มูลค่าพอร์ต จากต้นเดือน แต่ให้มอง ณ วันปัจจุบัน (รายละเอียดต่างกันระดับหนึ่งเลย)
  • แทนที่จะมองค่าต่างๆตามระยะเวลา ต้นเดือนหรือปัจจุบัน ให้มองเป็น จำนวนเทรด (N Trades) ย้อนหลัง
  • พิจารณา Win Rate, Winning Trades, … และอื่นๆ

ถ้านักลงทุนสนใจใน Stop-Bleeding System ข้างต้นหรืออยากลองฟังไอเดียเพิ่มเติม ให้ลองดู 2 วิดีโอข้างล่างครับ

วิดีโอ Stop-Bleeding Systems

Description

X308-0 Introduction to Stop-Bleeding Systems สวัสดีครับ ในวิดีโอชุดนี้นะครับจะมาพูดถึง Stop-Bleeding Systems, Stop-Bleeding Systems เนี่ยเป็นการที่เราเขียน Mechanism นะครับเข้าไปใน Strategy เราเพื่อพยายามจะหยุดการขาดทุน โอเคมั๊ยครับนักศึกษา อ่า..หยุดการขาดทุนนะครับ คือว่า Bleeding คือเลือดมันไหลออกมานี่ เราจะหยุดยังไงนี่ซึ่งความจริงเนี่ยตั้งแต่บทเรื่องของ CBI (Custom Backtester Interface) นะครับจนมาถึงบทที่3เนี่ย Advance Risk & Money Analyses (ARMA) เนี่ยเราก็มีการพูดถึงหรือเกริ่นหรือแม้กระทั่งเขียนstrategyพวกนี้กันมาแล้ว โอเคมั๊ยครับ คราวเนี้ยเราจะมาเก็บรายละเอียดกันโดยที่ Previously เนี่ย from CBI to ARMA เนี่ยน่ะครับ เรามีพูดถึง PosSize เนี่ยby Drawdown เนี่ย, by maEquity, Max Entries per Day นี่ พวกนี้เนี่ยนักศึกษาควรจะทำให้เป็นนะครับ ทำให้คล่องนะครับนี่ นี่..เรามี Reject signals ด้วยการใช้อะไรครับ ? avgPosScore นี่..เปรียบเทียบ TotalEquityกับCash Equityนี่ พวกนี้นี่เข้ามาช่วยได้หมดนะครับ Scale in/Out นี่, Force exit นี่ non-performing open positions ถืออยู่นี่ไม่performนะครับ หุ้นไม่ไปไหนซะทีนี่เอาออกได้ไหม, Reduce ieRuin นะครับจาก Risk of Ruin นี่, Portfolio Risk Control นี่ ทั้งหมดเนี่ยก็เป็นส่วนนึงที่สามารถนำมาประกอบใช้ใน Stop-Bleeding Systems SBS ได้นะครับ คราวนี้เนี่ยในวิดีโอชุดนี้เนี่ย อ่า..ผมก็จะมาเก็บรายละเอียดซึ่งอาจจะไม่ได้อยู่ในทั้งหมดนี้ในส่วนนี้ซะทีเดียวครับ มาเก็บรายละเอียดต่างๆนานา ซึ่งถ้านักศึกษาไปโค้ดเองอาจจะยังเห็นภาพไม่ชัดหรืออาจจะโค้ดไม่ได้ โอเคมั๊ยครับ ก็เลยกลับมาชี้แจงรายละเอียดด้วยว่าจะทำอะไรได้บ้าง นี่นะครับ Stop-Bleeding Systems (SBS) อันแรกเนี่ยวิดีโอชุดนี้นะครับ จะมีหลายวิดีโอใช่มั๊ยครับเป็น Elaborating details นี่บอกถึงรายละเอียดที่นักศึกษาจะต้องทำการstudy จะต้องคิด โอเคมั๊ยครับ “ นี่..เรียนรู้โค้ด เรียนรู้ไอเดียdetailsนะครับ จะต้องคิด และก็ backtest ดูว่าเกิดอะไรขึ้น ทำไมละ..ทำไมมันถึงได้ค่าออกมาเป็นอย่างนี้ เอ้อ..เหตุผลเพราะอะไร จะปรับเปลี่ยนยังไง ” ถัดมานี่จะ Focusing coding and debugging, “ debugging นี่สำคัญนะครับ..เออ เราจะได้make sure ว่าไอที่เราคิดอ่ะ เอ้อ..ตัวเลขที่มันออกมาเนี่ยเป็นจริงตามที่เราคิด โอเคมั๊ยครับ เพราะฉะนั้นมีส่วนของ coding กับ debugging นี่ที่จะต้องมาเน้นนะครับในส่วนของ Stop-Bleeding Systems ” to cover various aspects of ARMA นะครับที่ยังไม่ได้พูดถึง โอเคมั๊ยครับ โดยที่ทั้งนี้ทั้งนั้นเนี่ย นักศึกษาจะต้องเข้าใจนะครับว่า Stop-Bleeding Systemsเนี่ยมันไม่ใช่ Holy Grail คือมันไม่ใช่จอกศักดิ์สิทธิ์อะไรทั้งสิ้นนะครับ และก็ไม่มี One-Size Fit All โอเคมั๊ยครับ มันขึ้นอยู่กับstrategyนั้นๆและก็SBSที่นักศึกษาจะเอามาใช้หรือเอามาดัดแปลงปรับเปลี่ยน โอเคมั๊ยครับ อย่าลืมนะครับว่านี่ เรายิงพื้นฐานมาตั้งแต่ CBI จนมาถึง Portfolio Risk Control นี่วิดีโอเซทชุดที่แล้วใช่มั๊ยครับ นี่..แล้วมาถึงตรงนี้ อันนี้ก็ยังเหมือนเดิมนะครับ ขอเน้นนะครับว่าพยายาม keep it simple วิดีโอเซทเนี้ยจะแนะนำนักศึกษาเนี่ย SBS เนี่ยอยู่ประมาณ 7 ตัว นักศึกษาโอเคมั๊ยครับ 7 ตัวเนี่ยนักศึกษาต้องเข้าใจอย่างนึงนะครับว่า ยิ่งsystemไหนที่มันsimpleเนี่ย มันมีโอกาสที่จะสามารถนำไปใช้กับstrategy ต่างๆได้มากกว่า ถ้าSBS ตัวไหนเนี่ยที่มันspecificเจาะจงหรือค่อนข้างadvanceหรือยากหน่อยเนี่ยมันอาจจะเหมาะสมกับstrategyบางstrategy หรือกับ strategyบางตัวที่มีการderive position sizing ออกมา คือการหา position sizing ใช่มั๊ยครับ อย่างเช่น ตัวที่เราอาจจะพูดถึงเรื่องของ Risk อย่างเงี้ย ในส่วนของ SBS เงี้ย ตัวเนี้ยก็อาจจะเหมาะสมกับอะไร ? กับ strategy ที่ใช้ position sizing by risk ไม่ได้ by value โอเคมั๊ยครับ ซึ่งพวกนี้นักศึกษาจะต้องไปเขียนโค้ด debug แล้วก็ลองทดสอบเองว่า อันไหนเหมาะสมกับอันไหน แต่อย่างน้อยเนี่ยให้นักศึกษามีไอเดียคร่าวๆนี่อยู่ประมาณ 7 ตัว แต่นับจริงๆมีอยู่ประมาณแค่ 3-4 ตัวนะครับ แค่นั้นเองใน SBS ตัวนี้นะครับ อันแรกก็เป็น SBS by Drawdown นี่..ปกติ Drawdown เท่าไหร่นี่ให้หยุดเทรดนี่หรือลด position sizing ลง นี่..reject trade reject signal ต่อไปก็เอา Profit Run เข้ามานี่..ตอนนี้อันนี้ Drawdown ก็คือ Equity เราลงใช่มั๊ยครับ ถึงจุดๆนึงนี่..หยุดก่อนดีมั๊ย อ่า..อันนี้ Profit Run คือขึ้นมาเยอะๆแล้ว..หยุดก่อนดีมั๊ย ต่อไปก็ต่อยอดง่ายๆนะครับ อันนี้ก็คือความจริงก็เหมือนตัวที่สองนะครับ เพียงแต่ว่าเป็น 2-Level ก็คือ Drawdown เนี่ยมีสองระดับ Profit Run มีสองระดับ อ่า..ลองไปเทสดู พอดีอันนี้มันมี Cash หรือมันมีองค์ประกอบที่นักศึกษาจะต้องพิจารณาดู เดี๋ยวนักศึกษาจะพลาด ผมเลยมาชี้แจงให้ดูว่า เราจะไล่ยังไงนี่ ถ้าเราจะต้องทำการอะไรครับ ? เช็คทั้ง Drawdown และ Profit Run เป็นยังไง อันที่สี่นี่ lookbackNDays นะครับนี่ อ่า..อันนี้คือ สมมติเราเทรดวันนี้ใช่มั๊ยครับ เราอยากมองย้อนหลังไป 20 วัน หรือ 40 วันนี่ โอเคมั๊ยครับ แล้วดูว่า20 วัน หรือ 40 วันย้อนหลังกลับไปเนี่ย เรามีclosed trade เทรดที่ปิดไปแล้วอ่ะกำไรขาดทุนเป็นเท่าไหร่ โอเคมั๊ยครับ แล้วเรามี open positions ตอนเนี้ยกำไรขาดทุนเท่าไหร่ เพื่อจะได้ไปบริหารจัดการ position sizing จะ reject signals ทั้งหมดหรือเปล่า หรือจะ reduce position sizing ลง อันนี้ก็แล้วแต่นักศึกษา โดยที่ตัวเนี้ยจะใช้ฟังก์ชันสองตัวคือเรียกว่า DateTime นะครับ กับ.. ไอที่หารๆ( /(60x60x24) ) นี่คือกลัวผมลืมนะครับ การหารนี่คือ DateTimeDiff เนี่ยเปรียบเทียบระหว่างสองวัน โอเคมั๊ยครับ “ วันปัจจุบันนี่แล้วก็นับย้อนหลังไปกี่วันก็ตามเนี่ย ต้องได้ค่าออกมาเป็น second เป็นวินาที จากวินาทีนี่เราก็เลยจับหาร 60 ก่อนเป็นนาที หาร60อีกเป็นชั่วโมง นี่แล้วหาร 24 นี่เป็นวัน จะได้รู้ว่าอะไรครับ? ว่าไอclosed trade ที่ปิดไปแล้วอ่ะมันอยู่ภายใน20 วัน หรือ 40 วันย้อนหลังหรือเปล่า ” โอเคมั๊ยครับ แล้วเราจะได้อะไรครับ ? เราจะได้เอาget Profit rateมาคำนวณหรือแม้กระทั่ง Winning rate ก็ตาม อันนี้ก็มีเป็น Sum Closed Trades นะครับ อ่า..ที่ปิดไปแล้วก็ใช้ lookbackNDays นั่นแหละ แต่เราจะเพิ่มนี่Open Position Risks เข้ามาด้วย อันนี้ก็มี Cash เหมือนกันว่า จะต้องระวังว่าอย่าคำนวณอะไรผิด เดี๋ยวจะมาชี้แจงให้ดูนะครับว่าเป็นอะไร ถัดมาเป็น SBS by Win Rate, Loss Rate, Winning Trades จำนวนเทรดที่กำไร และจำนวนเทรดที่ขาดทุน อันนี้หมายความว่าอะไรครับ ? อันนี้ต้องเป็นอะไรครับ ? เป็น closed trade เทรดที่ปิดไปแล้ว ก็ใช้เหมือนกันนะครับ lookbackNDays จะมองว่าหลังไป 30 วันหรือ 50 วัน โอเคมั๊ยครับ นักศึกษาต้องเข้าใจนะครับว่า สมมติเราเทรดวันนี้ใช่มั๊ยครับ เรามองย้อนหลังไป 20 วันนี่ปรากฎว่า let sayว่า losing trade เราเยอะมาก เราเลยไม่เข้า signal ใหม่ ใช่มั๊ยครับ แต่พอจากวันเนี้ยไปข้างหน้า 1วัน 2วัน 3วัน ไปสัก 10 วันเนี้ย หลังจากที่เราไม่ได้เข้ามานานๆเนี่ย จะทำให้ losing trade เราภายในระยะเวลา 20วัน หรือ40วัน เนี่ยลดลง ทำให้เรากลับมาเทรดใหม่ได้ โอเคมั๊ยครับ ไม่เช่นนั้นเนี่ยถ้านักศึกษา reject trade หรือบอกว่าไม่เทรดแล้วเนี่ย แล้วนักศึกษาไม่มีการเลื่อน..เลื่อนไอ20วันเนี่ยตามมาเรื่อยๆ..ตามมาเป็นตัวข้างหน้าเนี่ยน่ะครับ กลายเป็นพอขาดทุนถึงจุดๆนึงปุ๊บไม่มีเทรดอีกเลย เห็นมั๊ย แสดงว่าตัวเนี้ย (Losing Trades) จะต้องมีย้อนหลังไป 20วันแล้วขยับตามbar ณ ปัจจุบันไปเรื่อยๆ เดี๋ยวไว้ดูโค้ดนะครับนักศึกษาจะได้เข้าใจเอง สุดท้ายก็เป็น lookbackNTrades อันนี้นี่ต่างจากนี่ NDays นะครับ อันนี้บอกว่าเราจะมองย้อนหลังไปนี่จำนวน 30 เทรดที่ปิดไปแล้ว 40 เทรดที่ปิดไปแล้ว อ่า..แล้วมาคำนวณดูว่าผลเป็นยังไงนี่ จาก..สมมติ let say ว่า มองย้อนหลังไป 40 วันนี่น่ะครับ กำไรเราต่ำมากเลยหรือขาดทุนเยอะเนี่ยน่ะครับ เราบอกงั้นหยุดก่อนดีมั๊ย ตอนนี้ตลาดอาจจะไม่เอื้ออำนวย มี false signal หรือเปล่า โอเคมั๊ยครับ เราจะได้ทำการอะไรครับ ? Stop Bleeding Systems เอ้อ..ทำการหยุดก่อน มาพิจารณาใหม่หรืออะไรก็ว่ากันไปนะครับ ซึ่งพวกนี้จะมีรายละเอียดบอกตลอดนะครับว่า Drawdown น่ะผมพิจารณามาจากอะไร Profit Run ผมพิจารณามาจากอะไร 2-Level ต้องระวังอะไรนะครับ lookbackNDays ต้องเช็คอะไร Open Position Risks นี่บวกกับ closed trades อันนี้ closed tradesเป็นบวกลบเป็นกำไรหรือขาดทุนใช่มั๊ยครับ กำไรเป็นบวกขาดทุนเป็นลบใช่มั๊ย ..แล้ว Open Position Risks น่ะเอามาบวกเลยโดยตรงได้มั๊ย เห็นมั๊ยครับเนี่ยมันมี tricks มันมี Cash อยู่ที่จะต้องระวัง อย่างที่บอกนะครับ เอ้อ..No Holy Grail นะครับ No One-Size Fit All พยายาม Keep it simple, strategies พวกเนี้ย ตัวไหนยิ่งsimpleเนี่ย อย่างเงี้ย 3 ตัวแรกเนี่ยสามารถลองนำไปเทสนำไปใช้ได้กับเกือบทุกstrategy แต่ตัวไหนที่ค่อนข้างcomplicatedหน่อย อย่างนี้ ตัว 5 ก็ได้ ถ้าเราเป็นอะไรครับ ? คำนวณ Open Position Risks อย่างเงี้ย คำว่าRisks เนี่ยหมายความว่าอะไร ? หมายความว่าตอน position sizing ของเราเนี่ยอาจจะต้องคำนวณมาจาก position sizing by risk ถึงจะ effective โอเคมั๊ยครับ อ่า..อันนี้นักศึกษาก็ลองไปค่อยๆเทสค่อยๆทดสอบดูนะครับ แล้วเดี๋ยววิดีโอชุดหน้าเนี่ยเราจะมาเริ่มตัว SBS Drawdown เลยนะครับ แต่ก่อนอื่นผมจะต้องเอาตัวอย่างโค้ดให้นักศึกษาก่อน อ่ะ..โอเคนะครับ นี่..มีแค่นี้เอง เราจะเริ่มต้นจากตัวนี้ นี่..00 SBS Example เราจะใช้ตัวนี้ตลอดนะครับ ไม่มีการเปลี่ยนแปลงอะไรในนี้เลย ณ Phase 1 เอ่อ..ยกเว้นตัว Open Position Risks นะครับในPhase 1จะมีการเปลี่ยนแปลง แต่ตัวอื่นๆนะครับ..นี่ถึงนี่ๆจะไม่มีการเปลี่ยนแปลงโค้ดชุดนี้เลย อ่ะ..นักศึกษาก็ปริ้นท์สกรีนออกมานะครับแล้วก็พิมพ์ลงโค้ดไปว่าเป็น 00 SBS Example นี่ ผมเอามาเรียงไว้หมดแล้ว ผมอยากจะพยายามเน้นเรื่องไอเดียมากกว่า คงจะไม่มาเขียนโค้ดหรือbacktestให้ดูนะครับ แล้วก็ เอ่อ..จะเน้นเรื่องdebugging อย่างที่บอกเนี่ยนะฮะ จะไปเน้นเรื่อง debugging หน่อย เพราะโค้ดก็มีให้ดูอยู่แล้ว อ่า..นักศึกษาลองปริ้นท์สกรีนนะครับแล้วก็พิมพ์โค้ดชุดนี้มาก่อน ลองbacktestดูก่อนว่าตอนเนี้ย CAR นักศึกษาเป็นเท่าไหร่ MDD เป็นเท่าไหร่ เอาเป็นbaseขึ้นมาก่อนนักศึกษา ..อันนี้เข้าใจว่านักศึกษาต้องไปเปลี่ยนเป็น..อันเนี้ยต้องเปลี่ยนเป็น 100 นะครับ (_simRuns) เอ้อ..หรือไม่ถ้านักศึกษาใช้ TQUApp อันนี้ก็ ตัว Application มันก็จัดการให้โดยอัตโนมัติอยู่แล้ว โอเคครับ เดี๋ยววิดีโอชุดหน้านี่จะมาเจอกันนี่นะครับ 01 SBS by Drawdown ขอบคุณครับ

Description

X308-1 SBS by Drawdown สวัสดีครับ ในวิดีโอชุดนี้นะครับจะเป็น Stop Bleeding Systems (SBS) นะครับ by Drawdown อันนี้เป็นbasic สุดเลยนะครับ ความจริงนี่เราทำadvanceไปกว่าตัว strategy / systemนี้เยอะแล้ว ก็มาทวนง่ายๆแล้วกันนะครับจะได้ไปต่อยอดนี่ ในตัวที่สองกับสาม อ่ะ..มาดูโค้ดนะครับ นี่..อันนี้ผมเปลี่ยนมาที่นี้แล้ว 01 SBS by Drawdown นะครับโดยที่ข้างบนนี้เหมือนเดิมหมดนักศึกษา อย่างที่บอกนะครับถ้าไม่ใช้ TQUApps นี่ต้องเปลี่ยนเป็น 100 ก่อนถึงจะbacktestได้นะครับ อ่ะแค่นี้ก่อนเอาแค่เห็นภาพพอ นี่..แล้วก็มาส่วนของนี่ Phase 2 เป็นส่วนของ CBI ใช่มั๊ยครับ อันแรกก็พี่BO นี่ GetBacktesterObject(); ก่อน เดี๋ยวผมขออนุญาติทวนก่อนนะครับนี่ เดี๋ยววิดีโอหลังๆจะไม่ทวนแล้ว พวกนี้เป็นเรื่องปกตินี่ ..และก็ bo.PreProcess(); อันนี้เป็น Mid-Level CBI โอเคมั๊ยครับ แล้วเราก็ต้องมาทำการวนloopนี่ เลี่ยงไม่ได้ก็ต้องมีการวนloop …ตัวนี้เนี่ย TotalEquityนี่ = bo.Equity; อันนี้เป็นปกติ โอเคมั๊ยครับ คราวนี้เนี่ยมันมีความจำเป็นที่เราจะต้องสร้างTotalEquityArray[bar] ขึ้นมา แล้วเอาค่า Equity นี่มาเก็บไว้ในแต่ละbar เพื่ออะไรครับ ? เพื่อเราจะได้เช็คว่าตอนเนี้ย highest high value Equity (hhvEquity) เท่ากับเท่าไหร่ โอเคมั๊ยครับ มองย้อนหลังไป ..ส่วนนี้เป็นบอกอะไรครับ ? lookbackNDays = period; นั้นๆ ไอตัวนี้เนี่ย..อันนี้เป็นตัวง่ายนะครับ อันนี้ N lookback period ที่เป็น bar นักศึกษา อันนี้จะต่างจาก..เข้าใจว่าเป็นตัวstrategy / system ที่สี่ ตัวที่สี่เนี่ยเป็น DATE นะครับคนละอย่างกัน อันนี้เป็น bar นะครับ “ผมเลยไม่ได้เขียนว่าเป็น lookback N days system เอ้อ..เป็น bar นี่ bar ตัวนี้ ” นี่..lookback เค้าบอกว่านี่ เมื่อ bar ปัจจุบันเนี่ย มากกว่าหรือเท่ากับ lookbackNDays เมื่อไหร่ ? อันนี้เป็น 60 นะครับ เอ้อ..bar ปัจจุบันนี่มีระยะเวลามาแล้ว 60 วันเมื่อไหร่เนี่ย ให้ทำการหา hhvEquity โดยเราจะต้องทำการอะไรครับ ? นี่..วนloop ย้อนหลัง ..อันนี้เป็น iBar นะครับนี่ จาก bar ปัจจุบันนี่ ลบ lookbackNDays; สมมติ bar ปัจจุบันเป็น 60 วันใช่มั๊ยครับ อ่า..60เดี๋ยวจะไม่พอ อ่ะ bar ปัจจุบันเป็น 100 นี่… lookbackNDays เป็น 60 โอเคมั๊ยครับนี่ เราก็จะเช็คอะไรครับ ? เช็คตั้งแต่ 100 นี่barปัจจุบันย้อนหลังไปถึงวันที่60 แล้วดูว่าอะไรครับ ? hhvEquity เราเนี่ย< totalEquityArray[iBar] นี่ “ นี่คือ loop ของ ibar นะครับย้อนหลังกลับไปว่าน้อยกว่าไหม ” ถ้าน้อยกว่าจะต้องอัพเดท hhvEquity นี่ = totalEquityArray[iBar]; ของ iBar นั้นๆ นี่..อย่างนี้นะครับ แล้วเสร็จปุ๊บเราก็บอก Drawdown นี่ เท่ากับอะไรครับ ? totalEquity ณ วันปัจจุบัน ..อันนี้เวลาผมเขียน totalEquity เฉยๆเนี่ยคือวันปัจจุบันของbarนั้นๆนะครับ ลบด้วย hhvEquity หารด้วย hhvEquity คือเทียบจากอะไร ? จากพีค..สมมตินี้เป็นพีคใช่มั๊ยครับแล้วก็ลงมาเรื่อยๆนี่ ลงมาเรื่อยๆแล้วดูว่าอะไรครับ ? นี่..น้อยกว่า 6%หรือยัง “เห็นมั๊ยครับอันนี้..ลบด้วย hhv แล้วหารนี่ทำให้เป็นอะไรครับ ? เป็น% of Equity ของ hhvEquity นะครับ ” ถ้าน้อยกว่านี่..หมายความว่าอะไร ? อย่างเช่นถ้าเป็น -7, -8 อย่างเงี้ย position size จะเป็น / เท่ากับ 0 คือ reject ทั้งหมดโอเคมั๊ยครับ อันนี้เนี่ยนักศึกษาไม่จำเป็นจะต้องใช้เป็น sig.Price = -1 ไม่จำเป็นเพราะอะไร ? เมื่อไหร่ก็ตามเนี่ย อันนี้มันคือทั้งพอร์ทโฟลิโอใช่มั๊ยครับ เอ่อ..ว่าทั้งพอร์ทโฟลิโอเราเนี่ย totalEquity ณ วันนี้เนี่ยมัน drawdown ไปแล้ว -6 ทำให้ถ้าเกิดตัวแรก reject เนี่ย ตัวที่สอง reject หมด เราเลยต้องใช้เป็นอะไรครับ ? sig.PosSize = 0 ทำอย่างนี้ไป ซึ่ง sig.PosSize = 0 เนี่ยผมมาวางไว้ที่ตรงนี้ โอเคมั๊ยครับ เอ้อ..เดี๋ยวนักศึกษาจะได้เห็นภาพนะครับ แล้วถ้าตรงนี้เป็นแค่ -3 ล่ะ …ถ้าเป็นแค่ -3 ยังไม่ถึง -6 ใช่มั๊ยครับ เราก็ใช้ PosSize เท่ากับเท่าไหร่ ? นี่ -100 หารด้วย TQMOP, TQMOP นี่มีค่าเป็น 25 นะครับ อันนี้มาจากอะไร…นี่ TQMOP เท่ากับ 25 โอเคมั๊ยครับ ซึ่งจริงๆแล้วเนี่ย อ่า..อันนี้ผมพยายามเขียนแยกออกมา นักศึกษา แยกออกมาจากส่วนนี้นะครับ ไม่งั้นความจริงเนี่ยนักศึกษามาเขียนไว้ในส่วนนี้ก็ได้ แต่ผมอยากแยกแยะให้ออกว่าโอเค drawdown นี่คำนวณเท่าไหร่ และถ้า drawdown เป็นเท่านี้ปุ๊บนี่..position size จะเป็นเท่าไหร่ โดยมีการตั้งค่านี่ initialize นี่ตัวนี้ไว้ โอเคมั๊ยครับ นักศึกษาอาจจะลองเอาก้อนนี้ทั้งหมดหลังจากได้drawdownแล้วนะครับ ทั้งหมดเนี่ยมาแอดไว้ในนี้เลยก็ได้ นี่..มาแอดไว้ในนี้เลยก็ได้ ว่าอะไร ? ว่าถ้าน้อยกว่า -6ใช่มั๊ยครับ ให้เป็น 0 นี่..เป็น 0 ..else นักศึกษาไม่ต้องทำอะไรก็ได้ นี่../*Do Nothing*/ อย่างนี้ ตรงนี้นักศึกษาก็เอาออกเลย นักศึกษาก็ไม่ต้องมีตัวแปรชื่อ posSize เลยด้วยซ้ำ..เห็นมั๊ยครับนี่อยู่ตรงนี้แล้ว อ่ะ..อันนี้ไม่ซีเรียส เดี๋ยวผมเปลี่ยนกลับใหม่ แต่ที่ซีเรียสก็คือว่าอะไรครับ ? นักศึกษาเนี่ยไม่ควรจะ..ตั้งแต่วิดีโอชุดนี้นะครับจนถึงsystemตัวที่เจ็ดเนี่ย..นักศึกษาไม่ควรจะทึกทักเอง โอเคมั๊ยครับว่า เอ..โค้ดที่เราพิมพ์ไปเนี่ยมันจะได้ค่าอย่างที่เราต้องการ เพราะฉะนั้นเนี่ยนักศึกษาควรจะมีการdebugหรือการใช้ trace ตลอดเวลาอย่างเช่น นี่..อันนี้พอเข้า bar ใหม่ใช่มั๊ยครับ “ พอเข้าbarใหม่ปุ๊บ แถวๆนี้นักศึกษาบอกไหน trace bar ซิ ว่าตอนนี้เป็น bar ที่เท่าไหร่ (_TRACE(“bar”); แล้วลอง traceซิ ว่ามีค่า hhv เป็นเท่าไหร่ (_TRACE(“>>> hhvEquity: ” + hhvEquity); นี่..อันนี้คือถ้า hhyEquity < totalEquity ใช่มั๊ยครับ อ่ะ..ไว้ในนี้ได้มั๊ย หรือจะมาไว้หลังที่…นี่วนloop iBar เรียบร้อยแล้ว โอเคมั๊ยครับ แล้วค่อยมาปริ๊นท์ทีเดียว มาtrace out ทีเดียวเลยว่าเป็นยังไง และก็ดูซิว่า ไอiBarเนี่ยมันวนถูกป่าว เอ้อ.. _TRACE(“iBar: ” +iBar); นักศึกษา ว่ามันวนถูกรึป่าว ที่ผมมาเตือนเพราะว่าผมแอบไปวนผิดมานักศึกษา โอเคมั๊ยครับ เอ้อ..วนผิดมา ผมก็เลยบอกว่านี่ “ bar ณ ปัจจุบันนี่ ลบ NlookbackBars (lookbackNDays) ย้อนหลังไปก่อน นี่..แสดงว่า อันนี้ก็เริ่มต้นจากที่สมมติ 61 ล่ะกันนะครับ แล้วก็มา 62 นี่ 63 นี่…คร่าวๆนะครับ จะเป็นอย่างนี้ไป เพราะฉะนั้น Bar คือ (100 – Nlookback), 60? อ่า..อันนี้ไม่ใช่สิ แสดงว่าต้องเริ่มจาก 41 นี่ เออ..มาเรื่อยๆ ? …อ๋อ เริ่มต้นจาก 40 41 42 นี่…มาเรื่อยๆ ” ตราบใดที่มันยังน้อยกว่านี่ ยังไงครับ ? iBar ยังน้อยกว่า bar อยู่ ก็จากวันนี่ย้อนหลัง 40 แล้วก็วิ่งขึ้นมาเรื่อยๆถึงวันที่ 100 แล้วก็หยุดแค่นั้นเอง โดยที่ iBar++ โอเคมั๊ยครับ ประเด็นก็คือจะต้อง trace พวกนี้ไว้นะครับ อย่าassumeเองว่าตัวโค้ดที่เขียนนี่ถูกต้องนะครับ traceออกมาดีกว่า แม้กระทั่ง drawdown นี่ก็ต้อง trace ออกมาดูซิ เอ๊ะ..ผมtrace Drawdown ยัง..เอ้อยัง ไหนออกมาดูซิว่าเป็นยังไง มีอะไรแปลกๆรึป่าว มีอะไรที่เราไม่ได้คิดถึงรึเปล่า _TRACE(“drawdown: ” + drawdown); โอเคมั๊ยครับ คราวนี้มาดูที่นี่ดีกว่า ตัวdrawdownนะครับน้อยกว่า –6, -6 มาจากไหนอ่ะนักศึกษา ทำไมไม่เป็น -5 เอ้อ..ตัวนี้เนี่ย ถ้าน้อยกว่า -5 …เอ่อน้อยกว่า -6 แล้วแต่กรณีแล้วกัน ไม่ซีเรียสนะครับ เอ้อ..posSize เป็น 0 posSizeมาtakeตรงนี้ เพื่ออะไรครับ ? reject signal หลังจากที่ drawdown น้อยกว่า –6, ตัวdrawdownเนี่ยจะเป็น -6 นักศึกษาต้องเข้าใจนะครับว่าอันเนี้ยเป็น drawdown แค่ temporary ช่วงเวลานึงเท่านั้น โอเคมั๊ยครับ เพราะว่าอะไร ? เดี๋ยวพอเรารันไปเรื่อยๆเนี่ย เอ้อ..ตัวนี้ก็จะมีการเปลี่ยนแปลงใช่มั๊ยครับ ว่าเป็นอะไรนี่ เอ้อ..ลองดูแล้วกันนักศึกษา ลองไปเทสดู ให้get sense ดู แต่ตัวเนี้ย..ตัวdrawdownเนี่ยปกติผมจะมาจากการbacktest ตัวdrawdownนะครับว่าจะมาจากการbacktest แล้วเดี๋ยวพอในส่วนของ profit run นี่ ตัวนั้นน่ะ เดี๋ยวอีกวิดีโอหน้านะครับ อันนั้นจะมาจาก Market Analysis อ่ะ..นักศึกษาลองไปเทสดูละกันว่าจะต้องปรับเปลี่ยนนี่หรือแก้ไขอะไร อย่าลืมนะครับว่า iBar นี่มันเปลี่ยนไปเรื่อยๆ มันเคลื่อนที่ไปเรื่อยๆ เพราะฉะนั้นเนี่ย ไอhhvEquityเนี่ยของEquity เมื่อ 60 วันที่แล้วใช่มั๊ยครับ เอ้อ..พอมันเลื่อนมานี่..เลื่อนมาทีละวันๆเนี่ย ไอที่มันเคยมีอยู่ ที่เป็น hhv เนี่ยมันจะลดลงมาเรื่อยๆ แล้วเมื่อไหร่ก็ตามที่มันลดลงมาเรื่อยๆนี่ พอเราเคลื่อนนี่ เราเคลื่อนไอ iBar ตลอดเวลาใช่มั๊ยครับ ลดลงมาเรื่อยๆนี่ เดี๋ยวถึงเวลานี่ตัวนี้ก็สามารถกลับมาเข้าใหม่ได้ เมื่ออะไร ? เมื่อ hhvEquity ของEquity ย้อนหลัง 60 วันนี่มันไม่ได้ทำให้เกิด drawdown ต่ำกว่า -6 แล้ว อ่ะ..อันนี้ดีนะครับ เป็นไปว่าไปโค้ดให้เสร็จbacktest นี่และพยายาม print out equity curve ออกมา โอเคมั๊ยครับ แล้วดูว่า drawdown ของแต่ละช่วงเป็นยังไง เอ้อ..นักศึกษาทำได้มั๊ย อันนี้..เอ่อถ้านึกไม่ออกกลับไปดู Risk of Ruin นะครับ ตอนprint out ค่าต่างๆนานาเนี่ย ไอRisk of Ruin นี่รายละเอียดเยอะมากเกี่ยวกับการ plot foreign, plot equity เนี่ยนะครับ ลองไปเช็คดูแล้วกัน อ่ะคราวนี้มาดูโค้ดดีกว่า นักศึกษาจะได้ print screen น่ะครับแล้วก็ไปโค้ดออกมา อันนี้ปกติไม่มีอะไรนะครับ เหมือน SBS Example แรก มาดูนี้ …โอเคครับ วิดีโอชุดนี้ก็ถือเป็นการอุ่นเครื่อง วอร์มเครื่องนะครับ เดี๋ยววิดีโอชุดหน้ามาดูเรื่อง SBS by Drawdown and Profit Run ขอบคุณครับ

Description

X308-8 Conclusion for Stop-Bleeding Systems สวัสดีครับ อ่า..ในวิดีโอชุดนี้นะครับก็มาเป็น Conclusion ล่ะ ของ Stop-Bleeding Systems และก็จะสรุปเรื่องอื่นๆด้วยนะครับ ซึ่งเราก็ได้ทำการจบนี่บทที่3 เนี่ยนักศึกษา อาม่า..อัดวิดีโอนี้นี่เพื่อให้อาม่าผมนะครับ เอ่อ..Advance Risk & Money Analysis คือเรามีการวิเคราะห์หลายอย่างเยอะมากเลยใช่มั๊ยครับ จากที่นักศึกษาเห็นแล้วเนี่ย นักศึกษาคงจะเลี่ยง CBI ไม่ได้ ถ้านักศึกษาอยากทำ Advance Risk & Money Analyses นะครับ โดยที่หลักๆเลยเนี่ยเราก็จะไปเน้นที่ตัว Mid-Level นะครับ แต่อย่างที่นักศึกษาเห็นเนี่ยในส่วนของ Portfolio Risk Control เนี่ยหรือแม้กระทั่ง Stop-Bleeding Systems ก็ตามโอเคมั๊ยครับ เราใช้ Mid-Level เป็นหลัก เพราะว่าอะไรครับ ? เพราะว่าโดยส่วนตัวเนี่ยผมคิดว่าที่ระดับเนี้ย เอ่อ..ผมสบายใจละ ผมพอใจแล้วว่าที่ระดับเนี้ยผมเอาอยู่ โอเคมั๊ยครับ ผมไม่อยากให้มันcomplicateมากไปหรือว่าซับซ้อนมากเกินไปนักศึกษา ผมกลัวว่าผมจะเอาไม่อยู่ เอาไม่อยู่คืออะไร ? เรื่องโค้ดนี่ผมไม่น่ามีปัญหานักศึกษา ผมโค้ดได้อยู่แล้วล่ะ backtest ได้อยู่แล้ว แต่ตอนเทรดจริงผมtrackได้จริงหรือเปล่า ตอนเทรดจริงถ้ามีปัญหานี่..ผมแก้สถานการณ์ได้หรือเปล่า ผมจะไปตามtrackได้หรือเปล่าว่าปัญหามันเกิดจากตรงไหน โอเคมั๊ยครับ เออ..อันนี้ขอนอกเรื่องหน่อยก็คือว่า ผมไม่ได้มีstrategyหรือมีพอร์ทโฟลิโอแค่ 2-3 ตัว โอเคมั๊ยครับ เพราะฉะนั้นเวลามันมีปัญหาเนี่ย มันชอบมีพร้อมๆกันนักศึกษา โอเคมั๊ยครับ เพราะงั้นผมถึงพยายาม keep it simple ไว้ก่อน อ่า..ว่ากันไปนะครับ แต่ถ้านักศึกษาสามารถ มีความสามารถหรือมีทีมนี่จะต่อยอดไปมากกว่าที่ผมนำเสนอในเรื่องของ Mid-Level ของตัว portfolioHeat Control ก็ตาม หรือ Stop-Bleeding Systems ก็ตามเนี่ย ผมก็ยินดีกับนักศึกษานะครับ ก็ถือว่ายอดเยี่ยมมาก ถูกมั๊ยครับ ลูกศิษย์ต้องเก่งกว่าอาจารย์นะครับนักศึกษาครับ นักศึกษาจะมาเก่งเท่าผม ไม่ได้เก่งไปกว่าผมเนี่ย แสดงว่าผมทำหน้าที่ผมได้ไม่ดีพอ โอเคมั๊ยครับ ตอนที่ผมเริ่มเรียนรู้นี่ทางด้านQuant และก็ใช้โปรแกรมAmibrokerเนี่ยนะครับ ไม่มีใครมาสอน, นักศึกษา หนังสือก็ไม่ค่อยมี ส่วนมากก็คือหามาซื้อเองทั้งนั้น โอเคมั๊ยครับ อาจจะมีผู้ใหญ่แนะนำบางอย่าง ให้แอดนู่นแอดนี่เข้าไปหน่อย ผมก็ทำตามที่ท่านพูด พอดีผม..เวลาผมไม่รู้อะไรนี่ผมไม่ค่อยเถียงอะไรนะครับ ใครสั่งอะไรมาผมทำหมด..ทำหมดไปก่อน ถ้าไม่รู้ว่าทำอะไรก็ทำมันทุกอย่างนักศึกษา ลองเทสดูนู่นนี่นั่น ลองโค้ดดู โอเคมั๊ยครับ บางทีเนี่ย..โค้ดเนี่ย2-3วัน สัปดาห์นึง ครึ่งเดือนเนี่ย บางทีผลมันก็ยังไม่ได้ผลออกมาเป็นที่น่าพอใจนักศึกษา ก็ต้องค่อยๆbacktestไปเรื่อยๆ ค่อยๆโค้ดไปเรื่อยๆ โอเคมั๊ยครับ แต่ที่สำคัญเนี่ย make sure ว่าอะไร ? ว่าไอ strategy ที่โค้ดออกมาเนี่ย..โอเคมั๊ยครับ..มันเป็นไปตามที่เราคิดไว้ ตัวเลขทุกอย่างมันถูกต้องหมด โอเคมั๊ยครับ นักศึกษาจะอยู่ในที่นั่งลำบากมากนะนักศึกษา ถ้านักศึกษาเอาstrategyไปเทรดแล้ว แล้วมารู้ทีหลังว่ามันมีbug โอเคมั๊ยครับ บวกลบคูณหารผิดนู่นนี่นั่นอะไรก็ตามอย่างเงี้ยนะครับ คือ เสียเงินก็แย่นะครับ ขายหน้านี่ยิ่งหนักเข้าไปใหญ่ โอเคมั๊ยครับ อ่ะ..คราวนี้มาสรุปConclusionดีกว่าของตัว Stop-Bleeding Systems นะครับว่า อันแรกเนี่ย พยายามkeep it simple นักศึกษา A simple system is more adaptable than a complicated one. System ที่เรียบง่ายเนี่ยนะครับจะสามารถปรับเปลี่ยนหรือเป็น generalization เนี่ยได้ดีกว่า system ที่ค่อนข้างcomplicate โอเคมั๊ยครับ ถ้าเลือกได้เนี่ย กำไรต่างกันไม่เท่าไหร่ ไม่หวือหวานี่ keep it simple ไว้ดีกว่า ต่อไปเนี่ยเวลาที่เราพิจารณาเนี่ยนะครับ พยายามพิจารณา Consider risk first มองเรื่องความเสี่ยงเป็นหลักก่อน มองเรื่อง drawdown เป็นหลักก่อน มองว่ามันจะมีความผิดพลาดตรงไหนเป็นหลักก่อน โอเคมั๊ยครับ อ่ะ..อันนี้เป็นตัวอย่างกรณีซึ่ง Stop-Bleeding System ที่มีเทียบระหว่าง Drawdown กับ Profit Run ใช่มั๊ย ผมเอา Drawdown ขึ้นมาก่อนเป็น condition ก่อนแล้วค่อยเอา Profit Run ตามมา ถ้าอันนี้ผ่าน..อันนี้ไม่เจอ, conditionไม่ถูก execute ใช่มั๊ยครับ ค่อยมาเช็ค Profit Run เพราะฉะนั้นตัวนี้จะมาก่อนเสมอนะครับ ถัดมา..Orders of conditions do matter ก็อย่างที่บอกนะครับว่า ไอconditionที่เป็น nested loop อ่ะ เอ้อ..เนี่ย ลำดับ order ของ condition ที่มันมีหลายๆ conditions ต่อลงมานะครับ ให้ตรวจสอบเช็คให้ถูกต้องว่ามันเป็นไปตามอย่างที่เราคิด มันมีความเป็นไปได้..มีความเป็นไปได้นะครับที่จะถูก execute ทุกcondition โอเคมั๊ยครับ ให้เอาตัวเลขมาเขียนใส่กระดาษมาเช็คดูว่ามันexecuteทุกcondition หรือเปล่า อ่า..หรือไม่ก็ให้เรารัน trace / backtest ดู แล้วเอาค่ามาใส่ใน excels ใช่มั๊ย แล้วลองgroupดูว่ามัน..ทุกๆcondition นี่มี execute เกิดขึ้นจริง โอเคมั๊ยครับ Avoid overkill นะครับ พยายามหลีกเลี่ยงทำอะไรที่มันแบบว่าอาจจะเกินไป อาจจะหนักเกินไปน่ะครับที่ that may cause confusion ที่อาจจะเกิดความสับสนเกิดขึ้นนี่ อย่างเช่นนี้ พยายามนี่ครับ..บอกว่าให้ stick นี่ / หยุดอยู่ที่ 2-Level ของ DD กับ PFR นี่คือกรณีซึ่งพยายามคุม position size หรือพยายามลด position size นะครับ อย่าไปตั้งเป็น 3 เป็น 4 เป็น 5 เป็น 6 ผมเคยเจอนักศึกษา เอาโค้ดมาให้ผมดู โอ้วโหว..ทำซะละเอียดยิบเลย ผมว่ามันไม่ใช่เรื่อง แล้วเดี๋ยวตอนที่ backtest เนี่ยมันไม่เห็นปัญหาหรอก แต่พอไปเทรดจริงเนี่ย เราต้องtrack บางอย่างต้องtrack เองอะไรอย่างเงี้ยครับ นักศึกษาครับ หรือไม่รู้ว่าจะคำนวณที่ region ไหน อ่ะสมมติว่า drawdown นี่มีหลาย condition ใช่มั๊ยครับ แต่ละ region นี่ใช้ position sizing ไม่เหมือนกันนี่ เอ้อ..PFR นี่ position sizing ไม่เหมือนกันนี่ เดี๋ยวเริ่มงงว่าใช้ที่ region ไหน โอเคมั๊ยครับ ก็พยายาม Avoid overkill ละกัน ดูว่าอะไรที่มันจะทำให้นักศึกษาเกิด confusion หรือเกิดความสับสนนี่ พยายามเอามันออกไปจากตัวโค้ด ตัวstrategyนักศึกษาจะดีกว่า นี่..It is possible to look at the two sides of the coin ก็คือว่าแทนที่เราเนี่ยจะคำนวณพิจารณาเป็น TotalEquity curve เฉยๆ หรือเป็น moving average (ma) ของ Equity เฉยๆ อันนี้เป็นเส้นเดียวใช่มั๊ยครับ เราสามารถมองสองฝั่งสมการได้ว่า ถ้ามองที่เป็น highest high เป็นยังไงมองที่ของ Equityนะครับ(hhvEquity) แล้วมองที่ lowest low ของ Equityเป็นยังไง (llvEquity) เห็นมั๊ยครับ คือ basic เนี่ยโดยทั่วไปอาจจะมีแค่ค่าเดียว TotalEquity ถัดมาก็มีค่าเดียวเหมือนกันคืออะไรครับ ? maของEquity ถัดมาเป็นอะไร ? มี two sides of the coin นี่..มีสองด้าน ด้านที่เป็นด้านบวกกับด้านที่เป็นด้านลบ โอเคมั๊ยครับ ไม่ว่าจะเป็น hhv หรือ llvEquity ก็ตามเนี่ย ลองดูหน่อยว่า..ลองแยกออกมาแล้วลอง backtest ลองพิจารณาหน่อยซิ..ว่ามีมุมมองใหม่ๆอะไรให้เราพิจารณาให้เราดูหรือเปล่า โอเคมั๊ยครับ นี่..อันนี้ก็เป็นตัวอย่างให้ดูนะครับว่า ให้ลองดูพวกนี้ด้วยเนี่ย maEquity, lookbackNDays, lookbackNTrades โอเคมั๊ยครับ ลองเทสกับมันดูหน่อย should be tested first ยังไม่ต้องรีบไปตัดสินใจอะไรนะครับว่านักศึกษาจะใช้ Stop-Bleeding Systems ยังไงนี่ จะ Control Portfolio Risk ยังไงอะไรเงี้ย ตอนเนี้ยพยายามซึมซับเรียนรู้ไปก่อน โอเคมั๊ยครับ ค่อยๆปรับไปก่อน เก็บประสบการณ์ทางด้านการ backtest การเขียนโค้ดไปก่อน นี่..แต่ละsystemเนี่ย ไม่ว่าจะเป็นตัว Stop-Bleeding Systems เนี่ยนะครับ อ่า..หรือเป็นตัวที่เรียนมาก่อนหน้านี้นี่ในเรื่องของ CBI ก็ตามเนี่ยนะครับ หรือว่า ARMA ก็ตามเนี่ย Not all systems are the same ระบบแต่ละระบบเนี่ยไม่เหมือนกันนะครับ และมันไม่ใช่ว่าทุกตัวเนี่ยมันจะเหมาะสมกับทุก strategy บางsystem อาจจะเหมาะสมกับบางstrategy บางstrategyอาจจะเหมาะสมกับบาง system อันเนี้ยผมไม่ต้องบอกนักศึกษาเลยด้วยซ้ำว่านักศึกษาจะรู้ได้ไง ก็backtestแค่นั้นเอง โอเคมั๊ยครับ ตัวนึงที่เห็นชัดก็เป็นเรื่องของนี่ Open Pos Risk อันนี้มาจากอะไรครับ ? StaticVar, riskperShare เห็นมั๊ยอ่า..ว่าเป็นยังไง ถ้านักศึกษาทำการbacktestมาอย่างละเอียดนะใน Stop-Bleeding Systems กับตัว Portfolio Risk Control ในส่วนของ Position Sizing by Risk เนี่ย นักศึกษาจะเห็นเลยว่าอันนี้ยาก โอเคมั๊ยครับ การที่จะเหมือนว่าจะจัดการให้มันอยู่หมัด ตบให้มันลงตัว คำนวณนู่นนี่นั่นเนี่ย อันนี้ไม่ง่ายนักศึกษา เพราะว่าตัวแปรมันมีเยอะโอเคมั๊ยครับ ไม่ว่าจะเป็นเรื่องของอะไรอ่ะ ? เรื่องของ allowablePortfolioRisk อย่างเงี้ย ไม่ว่าจะเป็นเรื่องของ riskPerShare เนี้ย conditionsตัวสมการของ riskPerShare มายังไงโอเคมั๊ยครับ เอ้อ..ต่างๆนานาเนี่ย ก็ค่อยๆเก็บรายละเอียดไป นี่..พยายาม Explore new ideas นะครับ พยายามลองสำรวจไอเดียใหม่ๆดู ลอง..อย่างเนี้ย วิดีโอชุดที่แล้วเราสอนเรื่องอะไรครับ ? Sum Momentum เงี้ย ความจริงไม่ยากนักศึกษา นักศึกษาเห็นโค้ดแล้ว อ๋อ..มันมีอย่างนี้ด้วยหรอ เออ..แปลกนะ อย่างบางทีผมใช้ ma ของ rsi เนี้ย เค้าบอกอ๋อ..มีอย่างนี้ด้วยหรออาจารย์ พวกเนี้ยไม่มีอะไรใหม่เลยมีอยู่สองอย่าง ถ้านักศึกษาไม่อ่านจากหนังสือ นักศึกษาก็ลองพยายามพิจารณาดูหน่อยว่าจะปรับเปลี่ยนยังไงให้มัน.. เออ..เอาว่าเป็นลอง backtest และลองๆโค้ดดูก่อนละกัน “ ผมยังไม่อยากให้นักศึกษาเนี่ยไปเน้นที่ กำไรๆเทรดจริงๆเนี่ย อย่าเพิ่งไปเน้นตรงนั้นดีกว่า ” นักศึกษายัง..เค้าเรียกว่า too early ยัง early เกินไปอ่ะที่จะไปคาดหวังอะไร โอเคมั๊ยครับ เอ้อ..ศึกษา..ฝึกให้พร้อมเตรียมตัวให้พร้อมก่อน early ภาษาอังกฤษ…เออ..ยังเร็วเกินไปๆที่นักศึกษาจะเข้ามาเรียนนี่ Extreme course ภายในหกเดือนนี่ ปีนึง แล้วรีบไปเทรดได้กำไรเงี้ย ผมว่าไม่จำเป็นนักศึกษา เอ้อ..ค่อยๆเก็บประสบการณ์ไปก่อนดีกว่า No need to hurry. Gradually absorb the idea, concepts, and code. นี่..ก็คือไม่จำเป็นต้องรีบร้อนนักศึกษา ค่อยๆซึมซับไอเดียนะครับ เนื้อหาคอนเซ็ปและก็โค้ดไปเรื่อยๆ และก็เก็บประสบการณ์ด้วยตัวเองโดยการbacktest เสร็จปุ๊บ นี่..ลองไปเทรดจริงนี่ ใช้ 20% of Initial Equity “ จะลงล้านนึง ลงแค่สองแสนพอ จะลงสองแสนนี่ ลงแค่สี่หมื่นพอ อะไรอย่างเงี้ย ” นักศึกษาก็ลองไปพิจารณาดูว่าจะลงเท่าไหร่ ตราบใดที่อะไร ? Minimum Initial Equity ของนักศึกษาเนี่ยมันสามารถ manage จัดการหรือเทรด stock universe ของนักศึกษาได้ ..อันนี้กลับไปที่ ABQC เลยนะครับ เห็นมั๊ยไอเดียมันเยอะมากนักศึกษา “ ต้องเก็บรายละเอียดเขียนจดบรรยายออกมา ”นักศึกษาโอเคมั๊ยครับ อันนี้ก็เป็น Conclusion of Stop-Bleeding Systems นี่…คราวนี้นี่ โค้ดเยอะมาก โค้ดมันให้หมด ณ ถึงจุดๆนี้เนี่ย หลังจากที่นักศึกษาเรียน Quant Course มาแล้วนะครับ นักศึกษาเรียนเรื่องอะไร ? MKB มาแล้วนะครับ เรียนเรื่อง CBI มาแล้ว เรียนเรื่อง ARMA มาแล้วนะครับ ใน ABXC นี่..ตัวนี้เป็นตัวจบ นักศึกษา หลังจากที่จบวิดีโอชุดเนี้ยแล้วนี่นะครับ เอ้อ..Stop-Bleeding เนี่ยจบเรียบร้อยแล้วเนี่ย นักศึกษาควรจะมีความสามารถในการเขียน strategy ทุกอย่างที่อยู่ในหนังสือสามเล่มนี้ ถือว่าเป็นตัวตั้งต้นนักศึกษา เป็น foundation ให้นักศึกษาว่า เอ่อ..ทดสอบความรู้ทางด้านโค้ดซิ นักศึกษาโค้ดได้จริงมั๊ย โอเคมั๊ยครับ “ ผมบอกเลยสามเล่มเนี้ย นักศึกษาโยนให้ใครก็ได้ที่ไม่ได้เรียนกับเรานะ ผมบอกเลยยากที่จะโค้ดได้ ” โอเคมั๊ยครับ ไม่ว่าจะเป็นอะไรครับนี่ Trading for a living ของ Alexander Elder นี่ “ Stop-Bleeding Systems นี่ว่ายังไง, NHNL นี่ทำได้มั๊ย โอเคมั๊ยครับนี่ ” ตัวนี้อะไร..” R-multiple ทำยังไงนี่ Risk of Ruin เป็นยังไง เอ๊ะ..นี่มีรึป่าว ” แล้วอันนี้นี่..อันนี้มาจากอะไร…อันนี้มี.. “ เรื่องของ Equity Model นี่เออทำยังไง อันนี้มีเรื่องของ Classifications ทำยังไง ” อันนี้มี MKB ถูกมั๊ยครับ (เล่ม Trading for a living) อันนี้มี Classificationsนี่ (เล่ม Trade Your Way to Financial Freedom) เอามาต่อยอดทำยังไง ทุกเล่มนี่มีเรื่องRiskหมด โอเคมั๊ยครับ อ่า..เพราะฉะนั้นเนี่ย นักศึกษาครับหาสามเล่มนี้มานะครับ เปิดดูอันไหนน่าสนใจมี conditions แปลกๆรึป่าว มีconditions ที่น่าพิจารณารึป่าว เอามาเขียนโค้ดให้หมด backtest ด้วยตัวเองนะครับ แล้วพิจารณาดูว่าอะไรเหมาะสมกับไม่เหมาะสมกับตลาดบ้านเรา โอเคมั๊ยครับ อ่า..ตลาดแต่ละตลาดมี character ของมันเองนะครับ นักศึกษาก็เลือกมาดูแล้วกัน ลองbacktestเก็บประสบการณ์ไป ใจจริงเนี่ย..จบABXCแล้วเนี่ย ผมอยากให้นักศึกษาใช้เวลาอย่างต่ำ 6 เดือนถึงปีนึงนะครับ ลองฝึกเขียนโค้ดฝึกbacktestดูก่อน อย่าเพิ่งไปรีบเทรด ช่วงเนี้ยช่วงฝึก 6 เดือนถึงปีนึงเนี่ย เก็บเงินไว้ก่อนเก็บกระสุนไว้ก่อน ไว้เดี๋ยวค่อยเห็นโอกาสค่อยซัดนักศึกษา โอเคมั๊ยครับ ความรู้ความพยายามเนี่ยนะครับหรือว่าประสบการณ์อันเนี้ยนักศึกษาค่อยๆเก็บไปได้โอเคมั๊ยครับ แต่ที่นักศึกษามีประสบการณ์มีความพยายามต่อไปทุกอย่างเรียบร้อยแล้วเนี่ยนะครับ ก็เหลือแต่ว่า นักศึกษามีกระสุนพอรึยัง โอเคมั๊ยครับ ที่จะซัดให้ได้กำไรสูงสุด กำไรสูงสุดมาจากอะไร ? เทียบกับค่าเวลาของนักศึกษาโอเคมั๊ยครับ เทียบกับค่าเวลาเนี่ย..ของนักศึกษา ว่านักศึกษาเนี่ยมีค่าเวลาเท่าไหร่ บางคนอาจจะมีจำนวนค่าชั่วโมง 1500 บาทต่อชั่วโมง 2000 บาทต่อชั่วโมงเนี่ย ถ้าตัว Initial Equity นักศึกษาเนี่ยมีน้อยนี่ ทุนนักศึกษามีน้อยเนี่ย มันไม่คุ้มค่าชั่วโมงที่จะไปนั่งเฝ้าเทรด ไปนั่งเขียนโค้ด นักศึกษา เพราะฉะนั้นอย่าลืมต้อง saving เก็บเงินเพื่อไปทำอะไรครับ ? เก็บเงินเพื่อพร้อมที่จะไปเทรดจริง แล้วให้มันคุ้มกับค่าเสียเวลาของนักศึกษา โอเคมั๊ยครับ ไม่ใช่เนี่ย..เรียน ThaiQuants มาเนี่ย 2-3 Courses ใช่มั๊ย แต่นักศึกษามีเงินเทรดแค่หลักแสนเดียว ห้าหมื่นอย่างเงี้ยไม่คุ้มค่าเสียเวลานักศึกษา ..ไปเก็บ Minimum Initial Capital ก่อน โอเคมั๊ยครับ ว่าเป็นยังไง นี่..อันนี้เรากลับมาย้ำนะครับ Previously from CBI to ARMA นี่ว่ามีอะไรบ้างที่นักศึกษาผ่านมาแล้วบ้าง โอเคมั๊ยครับ เอ้อ..นี่ก็ลองไปดูละกัน ซึ่งทั้งนี้ทั้งนั้นเราก็ ..อันนี้คือเราจบ main course แล้วนักศึกษา, ABXC มีอยู่ 3 บท MKB, CBI แล้วก็ ARMA นี่จบARMAแล้วจบ3บทแล้ว โอเคมั๊ยครับ ส่วน special contents นี่เป็นบทที่4เดี๋ยวผมค่อยๆดูแล้วกันว่า เอ่อ..จะเอาอะไรมาเพิ่มได้บ้าง เป็นspecial contents ซึ่งตอนนี้เนี่ย ABXC ณ จบ ARMA บทที่3เนี่ย เรามีทั้งหมด 46 ชั่วโมง !! นักศึกษา เกินคุ้ม โอเคมั๊ยครับ อ่า..ดีมากครับ ก็นักศึกษาพยายามต่อไป อย่าท้อนะนักศึกษา โอเคมั๊ยครับ กลับไปดู TSDC นักศึกษาว่าเราจะ Mastery ยังไงเนี่ย จะmaster your trade ยังไง โอเคมั๊ยครับ อยู่บทที่ 9 ของ TSDC นะครับ ดีมากเลย ผมว่าเอาว่าขอจบบทที่ 3 แต่เพียงเท่านี้ก่อน ส่วน special contents นี่บทที่4เดี๋ยวค่อยว่ากันว่าจะเอายังไงนะครับ ขอบคุณครับนักศึกษาครับ