- “หุ้นตัวนี้ในช่วงที่ผ่านมามันมีเทรนขาขึ้นที่ชัดเจนมาก ช่วยฟันธงให้หน่อยได้ไหม ว่าหุ้นตัวนี้เดือนหน้าจะขึ้นหรือจะลง?”
- “หุ้นตัวนี้กราฟสวยมาก คิดว่าเดือนหน้าหุ้นตัวนี้จะเบรกไลน์เป็นขึ้นอย่างใหญ่โตเลยรึเปล่า?”
ใครเคยวิเคราะห์การลงทุนแบบ Technical Analysis คงเคยได้ยินคำถามประเภทนี้กันมาบ้าง บ้างก็ไปหา “ผู้รู้” เพื่อให้ช่วยวิเคราะห์ให้
แต่ถ้าเราเชื่อในการวิเคราะห์เชิงปริมาณ คำถามนี้ตอบได้ง่ายๆเลยว่า “ไม่รู้!!!” เพราะถ้าเราเชื่อใน Random Walk Hypothesis มันจะไม่มีใคนคนไหนที่จะสามารถพูดได้อย่าง 100% ว่าวันพรุ่งนี้ อาทิตย์หน้า หรือปีข้างหน้า มันจะขึ้นหรือลงแค่ไหน เพราะการขึ้นลงของหลักทรัพย์มันมีตัวแปรมากมายเหลือเกินมาเกี่ยวข้องจนเป็นที่มาของชื่อ Random Walk เองนั่นแหละครับ แต่ถึงเราจะเชื่อแบบนั้น ก็ไม่ได้จะหมดหนทางในการประเมินความเสี่ยง/คาดการณ์มันซะทีเดียว
จากบทความที่แล้วผมได้พูดให้ฟังคร่าวๆ ถึงความจำเป็นในการสุ่มตัวแปรเพื่อสร้างแบบจำลอง(Simulation)การลงทุนที่มีประสิทธิภาพ ซึ่งก็ไม่ได้ลงรายละเอียดทางคณิตศาสตร์มากนัก วันนี้ผมจะพามาดูสมการเบื้องหลังการ Simulation มันกันครับ
Monte Carlo for stock simulation
ถ้าตลาดหุ้นมันเต็มไปด้วยการ Random แล้วเราทำอะไรได้บ้าง? มาตั้งต้นกันก่อน เราต้องการอะไร? เราต้องการประเมินอนาคตของหุ้นซักตัวหนึงในอนาคตอันใกล้ อาจจะ 1 สัปดาห์ 1 เดือน 1 ปี ก็แล้วแต่สรุปว่าเราต้องการรู้อนาคตก็แล้วกัน
- เราต้องการรู้/ประเมินอนาคต
- จากทฎษฎี Random Walk Theory อนาคตเกิดอย่าง Random เราไม่สามารถรู้ได้
ถ้าเป็นแบบนั้นเราจึงประเมินไม่ได้นะสิ่!!! แต่ยังก่อน เพราะเรามีสิ่งที่เรารู้อยู่อย่างหนึงคืออดีตของข้อมูล
จากรูปจะเห็นเรามีอดีตของข้อมูลอยู่ โดยที่อดีตของมันทำให้เราสามารถ เก็บลักษณะนิสัย(ก็คล้ายๆเทรนนั่นแหละครับ)ของหุ้นในอดีตมาได้ระดับหนึงผ่านกระบวนการทางคณิตศาสตร์อย่างหนึง ซึ่งต่อเราจะนำมาใช้ประกอบกันมาเป็นการสร้างโมเดล Simulation
ก่อนอื่นขอกลับมาที่เบสิคก่อน เรามาดูกันก่อนว่าเรามองการขึ้นลงของหุ้นในแต่ละวันยังไง สมมุติว่า ราคาหุ้นวันนี้ = 12 บาท,ราคาหุ้นเมื่อวาน = 10 บาท
- ราคาหุ้นวันนี้ = ราหุ้นเมื่อวาน * (1+ราคาหุ้นเปลี่ยนแปลง)
- 10(ราคาหุ้นเมื่อวาน) * (1+ 0.2(ราคาหุ้นเปลี่ยนแปลง))
ฉะนั้นการที่เราจะ Simulation อนาคตของหุ้นขึ้นมาได้นั้น สิ่งที่เราต้องหากันคือ เจ้าราคาเปลี่ยนแปลง 0.2 นี่แหละครับ แล้วการได้มาซึ่งเจ้าเลข 0.2 ตัวนี้เค้าก็มีสมมุติฐานของเขา
สมมุติฐานมันเป็นแบบนี้ครับ เค้าจะตั้งสมมุติฐานว่า หุ้นเนี่ย ถึงมันจะเคลื่อนไหวแบบสุ่ม แต่มันไม่ได้สุ่มขนาดนั้น มันมีเสกลและนิสัยในการสุ่มของมันอยู่ มีสิ่งที่ผมขอเรียกว่าลักษณะนิสัยของหุ้นตัวนั้นๆว่าเคยเป็นมายังไงในอดีตมาคิดด้วยครับ ก็อาจจะบอกได้ว่า ราคาเปลี่ยนแปลง = ผลรวมของ ลักษณะนิสัย(Drift) และเหตุการณ์แบบ Random (Volatility) ฉะนั้นเราก็จะแทนที่ ราคาหุ้นเปลี่ยนแปลง ด้วย
- 10(ราคาหุ้นเมื่อวาน) * (1+ 0.2(Drift + Volatility))
- ถ้าให้เป็นทางการหน่อยก็ Today = Yesterday * Exponential(Drift+Volatility)
โอเคครับ พอจะเห็นภาพแล้วนะครับว่าเราต้องการอะไร
- เราต้องการประเมินอนาคตของหุ้น
- ด้วยการนั้นเราต้องรู้ราคาเปลี่ยนแปลงในแต่ละวันของหุ้นก่อน
- ราคาเปลี่ยนแปลงของหุ้นมีสมมุติฐานมาจากการรวมกันของ Drift และ Volatility
อย่างที่บอกมาว่าวันนี่เราจะมาดูรายละเอียดไปถึงสมการกันเลยว่าทั้ง Drift และ Volatility มีที่ไปมายังไง ก่อนอื่นขอเริ่มต้นด้วยสิ่งที่เรารู้ได้จากอดีต คือลักษณะนิสัยของหุ้น หรือ Drift
Drift
เราจะมาดูการได้มาซึ่งการคำนวณของอดีตของหุ้นนั้นๆกันครับ โดยตัวนี้จะเป็นตัวบอกว่าหุ้นตัวนี้ในอดีตที่ผ่านมามันเคยเป็นอย่างไรมาก่อน แม้อนาคตจะ Random เราก็จะไม่ทิ้งข้อมูลตรงนี้ไปซะทีเดียวเพราะมันถือว่ามีประโยชน์มาก ลองคิดถึงหุ้นที่มีพื้นฐานดีๆซักตัวหนึงครับ แล้วความแข็งแกร่งของมันทำให้มันมีราคาที่ค่อนข้างมั่นคงมาตลอด หรือ เราก็ไม่มีเหตุผลอะไรจะทิ้งข้อมูลตรงนี้ไปทั้งหมด เราจึงยังเก็บมันไว้ใน Drift จะเห็นว่า Drift คืออดีตที่เรารู้ (Known) และคำนวณได้ตรงตัว โดยมีสมการดังนี้
μ คือ ค่าเฉลี่ย(Mean)ของหุ้น
σ^2 คือ ค่าความแปรปรวน(Variance) ของหุ้น
เพื่อให้เห็นภาพผมจะยกตัวอย่าง 2 Scenario ให้เราเห็นกันชัดๆ
- จะเห็นว่าตัว μ ถ้าในอดีต หุ้นขึ้นมาเรื่อยๆ μ ก็จะเป็นค่าบวก ยิ่งหุ้นขึ้นแรง μ ก็บวกมาก และถ้าหุ้นนั้นขึ้นแบบไม่ค่อยผันผวนมาก σ^2 มันก็จะเล็กใช่ไหมครับ จากนั้นเราเอามาหารด้วย 2 ค่าก็ยิ่งเล็กไปอีก จากนั้นนำ μ – ((σ^2)/2) ค่า Drift ที่ได้มันก็จะเป็นค่าบวก
- กลับกันครับ ถ้าอดีต หุ้นนั้นเป็นขาลงมาตลอดเหมือนดังบริษัทรอวันเจ๊งไม่มีวี่แววจะดีขึ้นเลย μ มันก็จะเป็นค่าลบ ยิ่งตกแรง μ ก็ยิ่งลบมาก และ ด้านความผันผวน σ^2 ถ้าผันผวนมาก(ซึ่งเป็นปรกติของหุ้นขาลง) ค่ามันก็จะใหญ่ จากนั้นเหมือนเดิม ถ้าเรานำ μ – ((σ^2)/2) ค่า Drift ที่ได้มันก็จะเป็นค่าลบ
สรุป เราสามารถเก็บอินฟอเมชั่นในอดีตของหุ้นได้ผ่าน Drift นะครับซึ่งสำคัญเพราะบางข้อมูลเราก็ไม่มีเหตุผลที่จะทิ้งมันไปเฉยๆ
พอเราคำนวณอดีตที่เรารู้ได้แล้วนั้น อีกส่วนคือส่วนที่เราขาดไม่ได้ และเป็นหัวใจของสมการนี้เลยครับ คือสิ่งที่เราไม่รู้(Unknown)
VolatilityVolatility หรือ Random มันคือการคำนวณในสิ่งที่เราไม่รู้ นั่นก็คืออนาคตนั่นเองครับ โดยในส่วนนี้เป็นความพยายามของนักคณิตศาสตร์ ที่จะสร้างโมเดลมาอธิบายการ Random ของหุ้นใน Random Walk Theory ในทางคณิตศาสตรเราคงไม่อาจ Random มามั่วๆ เช่นเลขลำดับมากๆได้ใช่ไหมครับ เช่น สมมุติสุ่มมาได้ 53,675 ซึ่งในโลกแห่งความจริงมันเป็นไปไม่ได้ที่หุ้นตัวไหนมันจะขึ้นได้มากขนาดนี้ในวันเดียว ฉะนั้นเค้าจึงมีวิธีคิดมาสเกลการ Random อนาคตให้อยู่ในเกณฑ์ที่เหมาะสมครับ โดยจะมีสมการดังนี้
ε คือ การ Random Shock ที่จะแรนด้อมด้วย Normal Distribution
σ คือ ค่าเบี่ยงเบนมาตราฐานของข้อมูล(Standard Deviation)
ε เป็นค่าที่เราสุ่มมาจาก Normal Distribution โดยการสุ่มแบบนี้นั้นจะมีโอกาสน้อยที่เราจะสุ่มได้ค่ามากๆ เช่น ลบมากๆ หรือ บวกมากๆ กลับกันค่าบวกน้อยๆและค่าลบน้อยๆจะมีโอกาสสุ่มได้บ่อยกว่า ซึ่งก็สมจริงเพราะในโลกแห่งความเป็นจริง การที่หุ้นจะขึ้นหรือลงวันละมากๆมันจะมีน้อย ส่วนใหญ่ก็จะมีขึ้นลงวันละไม่กี่เปอร์เซ็นเท่านั้น โดยสรุป ตัวแปร ε คือสิ่งที่เราไม่สามารถกะเกณฑ์อะไรได้ว่ามันจะเป็นบวก(หุ้นขึ้น)หรือเป็นลบ(หุ้นตก)นั่นเอง จากนั้นเรานำมา * ด้วย σ ซึ่งก็เหมือนเป็นการสเกลข้อมูลให้เหมาะสมกับที่เคยเกิดมาในอดีตนั่นเอง
- ถ้าในอดีตหุ้นตัวนั้นผันผวนมาก มีการปรับตัวขึ้นลงในแต่ละวันมาก σ มันก็จะใหญ่ พอนำมาสเกลในการขึ้นลงแต่ละวันก็จะเยอะตาม
- ถ้าหุ้นตัวนั้นๆ มีลักษณะนิสัยแบบขึ้นลงไม่มากนัก σ มันก็จะเล็ก พอนำมาสเกลในการขึ้นลงแต่ละวันก็จะน้อยตาม
- ยกตัวอย่างเปรียบเทียบก็เหมือนหุ้นใหญ่ๆในตลาดน่ะครับ พอหุ้นใหญ่ market cap มันก็จะมาก มันก็จะขึ้นลงวันละไม่มากนัก คือหุ้นใหญ่ๆมันก็จะขึ้นหลักไม่กี่เปอร์เซ็น กลับกันถ้าเป็นหุ้นเล็กๆ มันก็จะมีความผันผวนในการขึ้นลงแต่ละวันได้มากกว่านั่นเองอาจจะขึ้นลงได้วันละหลายเปอร์เซ็นกว่า
สรุป ส่วนนี้ก็คือ การสร้างอนาคตแบบ Random โดยจะไม่สุ่มเพียวๆแต่มีการสเกลข้อมูลด้วยค่าเบี่ยงเบนมาตราฐานนั่นเอง นี่เราก็ได้ในส่วนของ Volatility มาแล้ว จากนั้นเราก็นำมันมาประกอบกัน
Full Equation
ตอนนี้เรารู้แล้วว่า Drift คืออะไรและ Volatility คืออะไร คราวนีก็ถึงคราวเอามันมาประกอบกันแล้วครับ โดยมีสมการดังนี้
สมการที่ใช้ Simulation ราคาหุ้น
S(0) พูดง่ายๆก็คือราคาในวันที่ 0 แต่ผมจะเรียกง่ายๆว่าราเมื่อวานนั่งเองครับ ส่วน S(△t) มันก็เวลาในไทม์สเกลที่เราสนใจ ในที่นี้เราสนใจทำนายราคาเป็นวันๆไป ก็เรียกได้ว่า S(△t) มันก็ราคาวันนี้นี่แหละครับ จากนั้นก็ exp ซึ่งก็คือ Exponential function ในวงเล็บ ก็คือ Drift กับ Volatility ที่เราพูดกันไปแล้ว จะเห็นว่าสมการที่ดูวุ่นวายจริงๆแล้วมันก็คือ
- Today = Yesterday * Exponential(Drift+Volatility)
จะเห็นว่ามันคืออันเดียวที่เราพูดกันมาก่อนหน้านี้นั่นแหละครับ โดยถ้าหุ้นตัวไหนมีความแข็งแกร่งมาตลอด Drift มันก็ใหญ่จะถูกนำไป + กับ Volatility ซึ่งมาจากการนสุ่ม ฉะนั้น Drift ก็เป็นเหมือน Bias ให้หุ้นตัวนั้นๆมีโอกาสที่จะลงน้อยกว่าหุ้นที่ Dift เป็นค่าเล็กๆหรือเป็นลบครับ (จริงๆ Volatility ก็อาจเกิด Bias ได้)
ที่พูดกันมายืดยาวนี้ก็คือการคำนวนการเปลี่ยนแปลงราคาหุ้น 1 วันเท่านั้นครับ!!!! ถ้าเราจะ Simulation 1 เดือน ก็ต้องทำกระบวนการนี้ 20 ครั้ง(เดือนหนึงมีประมาณ ~20 วันทำการ) ถึงจะได้กระประเมินอนาคตด้วย Monte Carlo 1 ครั้งเท่านั้นครับ ดังรูปล่าง
จากรูปคือตัวอย่างการทำกระบวนการ Monte Carlo Simulation หุ้นตามสมการที่ได้อธิบายมาเป็นจำนวน 1 รอบ ถ้าถามว่าจากการสร้างแบบจำลองอนาคต 1 ครั้งนี้ เราจะยังไม่สามารถนำไปประเมินความเป็นไปได้ของหุ้น SCB ในอนาคตได้ เพราะสิ่งที่ได้มาเป็นเพียงความน่าจะเป็นเดียว จากโอกาสเกิดนับล้านๆรูปแบบของความเป็นไปได้ ถ้างั้นเราควรทำอย่างไรต่อ
ทำมันให้เยอะๆ!!!
ในการกระบวนการ Monte Carlo Simulation สิ่งสำคัญคือ Law of large number!!! กล่าวคือ ทำครั้งเดียวมันก็แค่ 1 ความน่าจะเป็นเดียว ฉะนั้นเราต้องทำอีกครับ เราต้องพยายามทำ Simulation ให้ครอบคลุมที่สุดครับ ยิ่งมากยิ่งดี บางที่อาจจะทำเป็นแสนไปเลย เมื่อเราทำจำนวนมากขนาดนั้นแล้ว เราจึงสามารถมองผลลัพธ์เป็นภาพรวมและนำมาคิดข้อมูลทางสถิติได้ครับ อย่างเช่นรูปด้านล่าง
จากรูป เป็นตัวอย่างการทำ Monte Carlo Simulation 1000 รอบ จริงๆแล้วมันก็ยังไม่มากพอนะครับ แต่เพื่อให้มองเห็นภาพแบบ Simple ที่สุด ผมก็ขอทำแค่ 1000 รอบไปก่อน อย่างที่บอกครับ พอเรามีตัวอย่างข้อมูลมากขึ้น เราก็เริ่มที่จะสามารถวิเคราะห์ข้อมูลทางสถิติได้แล้ว คราวนี้เราก็จะมาลองประเมินความเสี่ยงดูครับ โดยผมจะพยายามตอบคำถามตั้งต้นตอนแรกสุดของเรากันนะครับ ว่าหุ้นตัวนี้อนาคตมันจะเป็นยังไง ผมก็จะตอบมันด้วยวิธีการปรัะเมินความเสี่ยง Value at Risk (VaR) และผลที่ได้คือ
กลับมาที่คำถามตั้งต้น ถ้ามีเพื่อนมาถามเราว่า หุ้น SCB นี่กราฟสวย ในอนาคตเดือนหน้ามันจะเป็นอย่างไรบ้าง เราก็สามารถตอบได้ว่า “จากการประเมินความเสี่ยงด้วย VaR ของราคาปิดหุ้น SCB ผ่านกระบวนการ Monte Carlo Simulation เป็นจำนวน 1000 รอบ” เราสามรถบอกได้ว่า
- มีความมั่นใจที่ 95% ที่ราคาปิดหุ้น SCB จะไม่ตกเกินไปกว่า 115.66 บาทใน 1เดือน
- มีความมั่นใจที่ 99% ที่ราคาปิดหุ้น SCB จะไม่ตกเกินไปกว่า 106.49 บาทใน 1เดือน
- มีความมั่นใจที่ 99.5% ที่ราคาปิดหุ้น SCB จะไม่ตกเกินไปกว่า 105.31 บาทใน 1เดือน
จริงๆเราไม่จำเป็นต้องเก็บข้อมูลแค่ราคาปิดก็ได้นะครับ เราอาจจะเก็บเปอร์เซ็น เพื่อหาความมั่นใจว่ามันจะไม่ตกเกินกี่เปอร์เซ็นใน 1 วัน หรือเราจะดูภาพรวมของข้อมูลก็ได้เช่นกัน อันนี้แล้วแต่เราจะดีไซน์การวิเคราะห์ข้อมูลครับ
สรุป
กระบวรการ Monte Carlo Simulation ที่เราพูดกันมาวันนี้ เป็นความพยายามในการประเมินอนาคต ในสมมุติฐาน Random Walk Theory ที่ว่าเราไม่สามารถรู้อนาคตที่แน่นอนได้ แต่ได้มีการพยายามในการ Simulation อนาคตขึ้นมาโดยบอกว่าอนาคตไม่ได้ Random อย่างเดียว เราจะไม่ทิ้งข้อมูลเก่าๆไปทั้งหมด เราจะใช้ทั้งข้อมูลเก่า + ข้อมูลที่สุ่มมา เพื่อประเมินอนาคตได้อย่างสมจริงครับ และข้อสำคัญคือควรทำเยอะๆครั้งเข้าไว้เพื่อให้ครอบคลุมถึงความเป็นไปได้ให้ได้มากที่สุด จากนั้นเราจึงสามารถนำผลลัพธ์มาเพื่อใช้วิเคราะห์ประเมินความเสี่ยงที่อาจจะเกิดขึ้นได้ในอนาคตครับ
ก็จบกันไปแล้วนะครับสำหรับตอนต่อของ Monte Carlo หวังว่าจะมีประโยชน์กับผู้อ่านไม่มากก็น้อย
ขอบคุณมากครับ