Monte Carlo for Stock Simulation

  • “หุ้นตัวนี้ในช่วงที่ผ่านมามันมีเทรนขาขึ้นที่ชัดเจนมาก ช่วยฟันธงให้หน่อยได้ไหม ว่าหุ้นตัวนี้เดือนหน้าจะขึ้นหรือจะลง?”
  • “หุ้นตัวนี้กราฟสวยมาก คิดว่าเดือนหน้าหุ้นตัวนี้จะเบรกไลน์เป็นขึ้นอย่างใหญ่โตเลยรึเปล่า?”

ใครเคยวิเคราะห์การลงทุนแบบ Technical Analysis คงเคยได้ยินคำถามประเภทนี้กันมาบ้าง บ้างก็ไปหา “ผู้รู้” เพื่อให้ช่วยวิเคราะห์ให้

แต่ถ้าเราเชื่อในการวิเคราะห์เชิงปริมาณ คำถามนี้ตอบได้ง่ายๆเลยว่า “ไม่รู้!!!” เพราะถ้าเราเชื่อใน Random Walk Hypothesis มันจะไม่มีใคนคนไหนที่จะสามารถพูดได้อย่าง 100% ว่าวันพรุ่งนี้ อาทิตย์หน้า หรือปีข้างหน้า มันจะขึ้นหรือลงแค่ไหน เพราะการขึ้นลงของหลักทรัพย์มันมีตัวแปรมากมายเหลือเกินมาเกี่ยวข้องจนเป็นที่มาของชื่อ Random Walk เองนั่นแหละครับ แต่ถึงเราจะเชื่อแบบนั้น ก็ไม่ได้จะหมดหนทางในการประเมินความเสี่ยง/คาดการณ์มันซะทีเดียว

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

Monte Carlo for stock simulation

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

  • เราต้องการรู้/ประเมินอนาคต
  • จากทฎษฎี Random Walk Theory อนาคตเกิดอย่าง Random เราไม่สามารถรู้ได้

ถ้าเป็นแบบนั้นเราจึงประเมินไม่ได้นะสิ่!!! แต่ยังก่อน เพราะเรามีสิ่งที่เรารู้อยู่อย่างหนึงคืออดีตของข้อมูล

รูปหุ้นตัวหนึงในตลาดหลักทรัพย์

รูปหุ้นราคาหุ้น SCB ตั้งแต่ปี 2001 – 2018

จากรูปจะเห็นเรามีอดีตของข้อมูลอยู่ โดยที่อดีตของมันทำให้เราสามารถ เก็บลักษณะนิสัย(ก็คล้ายๆเทรนนั่นแหละครับ)ของหุ้นในอดีตมาได้ระดับหนึงผ่านกระบวนการทางคณิตศาสตร์อย่างหนึง ซึ่งต่อเราจะนำมาใช้ประกอบกันมาเป็นการสร้างโมเดล 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)

โอเคครับ พอจะเห็นภาพแล้วนะครับว่าเราต้องการอะไร

  1. เราต้องการประเมินอนาคตของหุ้น
  2. ด้วยการนั้นเราต้องรู้ราคาเปลี่ยนแปลงในแต่ละวันของหุ้นก่อน
  3. ราคาเปลี่ยนแปลงของหุ้นมีสมมุติฐานมาจากการรวมกันของ Drift และ Volatility

อย่างที่บอกมาว่าวันนี่เราจะมาดูรายละเอียดไปถึงสมการกันเลยว่าทั้ง Drift และ Volatility มีที่ไปมายังไง ก่อนอื่นขอเริ่มต้นด้วยสิ่งที่เรารู้ได้จากอดีต คือลักษณะนิสัยของหุ้น หรือ Drift

Drift

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

μ คือ ค่าเฉลี่ย(Mean)ของหุ้น

σ^2 คือ ค่าความแปรปรวน(Variance) ของหุ้น

เพื่อให้เห็นภาพผมจะยกตัวอย่าง 2 Scenario ให้เราเห็นกันชัดๆ

  1. จะเห็นว่าตัว μ ถ้าในอดีต หุ้นขึ้นมาเรื่อยๆ μ ก็จะเป็นค่าบวก ยิ่งหุ้นขึ้นแรง μ ก็บวกมาก และถ้าหุ้นนั้นขึ้นแบบไม่ค่อยผันผวนมาก σ^2 มันก็จะเล็กใช่ไหมครับ จากนั้นเราเอามาหารด้วย 2 ค่าก็ยิ่งเล็กไปอีก จากนั้นนำ μ – ((σ^2)/2) ค่า Drift ที่ได้มันก็จะเป็นค่าบวก
  2. กลับกันครับ ถ้าอดีต หุ้นนั้นเป็นขาลงมาตลอดเหมือนดังบริษัทรอวันเจ๊งไม่มีวี่แววจะดีขึ้นเลย μ มันก็จะเป็นค่าลบ ยิ่งตกแรง μ ก็ยิ่งลบมาก และ ด้านความผันผวน σ^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 ครั้งเท่านั้นครับ ดังรูปล่าง

รูป ราคาหุ้น SCB จากการ Simulation เป็นเวลา 1 เดือน(20วันทำการ) จำนวน 1 รอบ

จากรูปคือตัวอย่างการทำกระบวนการ Monte Carlo Simulation หุ้นตามสมการที่ได้อธิบายมาเป็นจำนวน 1 รอบ ถ้าถามว่าจากการสร้างแบบจำลองอนาคต 1 ครั้งนี้ เราจะยังไม่สามารถนำไปประเมินความเป็นไปได้ของหุ้น SCB ในอนาคตได้ เพราะสิ่งที่ได้มาเป็นเพียงความน่าจะเป็นเดียว จากโอกาสเกิดนับล้านๆรูปแบบของความเป็นไปได้ ถ้างั้นเราควรทำอย่างไรต่อ

ทำมันให้เยอะๆ!!!

ในการกระบวนการ Monte Carlo Simulation สิ่งสำคัญคือ Law of large number!!! กล่าวคือ ทำครั้งเดียวมันก็แค่ 1 ความน่าจะเป็นเดียว ฉะนั้นเราต้องทำอีกครับ เราต้องพยายามทำ Simulation ให้ครอบคลุมที่สุดครับ ยิ่งมากยิ่งดี บางที่อาจจะทำเป็นแสนไปเลย เมื่อเราทำจำนวนมากขนาดนั้นแล้ว เราจึงสามารถมองผลลัพธ์เป็นภาพรวมและนำมาคิดข้อมูลทางสถิติได้ครับ อย่างเช่นรูปด้านล่าง

รูป ตัวอย่างการทำ Monte Carlo Simulation อนาคตของหุ้น SCB เป็นจำนวน 1 เดือน และทำเป็นจำนวน 100 รอบ

จากรูป เป็นตัวอย่างการทำ Monte Carlo Simulation 1000 รอบ จริงๆแล้วมันก็ยังไม่มากพอนะครับ แต่เพื่อให้มองเห็นภาพแบบ Simple ที่สุด ผมก็ขอทำแค่ 1000 รอบไปก่อน อย่างที่บอกครับ พอเรามีตัวอย่างข้อมูลมากขึ้น เราก็เริ่มที่จะสามารถวิเคราะห์ข้อมูลทางสถิติได้แล้ว คราวนี้เราก็จะมาลองประเมินความเสี่ยงดูครับ โดยผมจะพยายามตอบคำถามตั้งต้นตอนแรกสุดของเรากันนะครับ ว่าหุ้นตัวนี้อนาคตมันจะเป็นยังไง ผมก็จะตอบมันด้วยวิธีการปรัะเมินความเสี่ยง Value at Risk (VaR) และผลที่ได้คือ

รูป การประเมินความเสี่ยง Value at Risk(VaR) ของหุ้น SCB

กลับมาที่คำถามตั้งต้น ถ้ามีเพื่อนมาถามเราว่า หุ้น 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 หวังว่าจะมีประโยชน์กับผู้อ่านไม่มากก็น้อย

ขอบคุณมากครับ

CR. http://www.goddardconsulting.ca/option-pricing-mon…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s