การประเมินความเสี่ยงส่วนหาง

Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Dakota Wixom

Quantitative Analyst | QuantCourse.com

การประเมินความเสี่ยงส่วนหาง

ความเสี่ยงส่วนหาง (Tail Risk) คือความเสี่ยงของผลลัพธ์การลงทุนที่รุนแรง โดยเฉพาะด้านลบของการกระจาย

  • Historical Drawdown
  • Value at Risk
  • Conditional Value at Risk
  • Monte-Carlo Simulation
Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Historical Drawdown

Drawdown คือการสูญเสียเป็นเปอร์เซ็นต์จากจุดสูงสุดสะสมในประวัติศาสตร์

$$ \text{Drawdown} = \frac{r_t}{RM} - 1$$

  • $r_t$: ผลตอบแทนสะสม ณ เวลา t
  • $RM$: ค่าสูงสุดที่วิ่งอยู่
Historical Drawdown ของ USO Oil ETF

Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Historical Drawdown ใน Python

สมมติว่า cum_rets คือ np.array ของผลตอบแทนสะสมตามเวลา

running_max = np.maximum.accumulate(cum_rets)
running_max[running_max < 1] = 1
drawdown = (cum_rets) / running_max - 1
drawdown
Date        Return
2007-01-03    -0.042636
2007-01-04    -0.081589
2007-01-05    -0.073062
Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Historical Value at Risk

Value at Risk หรือ VaR คือค่าขีดแบ่งที่ระดับความเชื่อมั่นที่กำหนด ซึ่งบ่งชี้ว่าการขาดทุนจะไม่เกิน (หรือในทางปฏิบัติ ไม่เคยเกินในอดีต) ระดับดังกล่าว

มักอ้างอิง VaR ด้วยควอนไทล์ เช่น 95, 99 และ 99.9

ตัวอย่าง: VaR(95) = -2.3%

มั่นใจ 95% ว่าการขาดทุนจะไม่เกิน -2.3% ต่อวัน อ้างอิงจากข้อมูลในอดีต

Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Historical Value at Risk ใน Python

var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
var_95
-0.023
Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Historical Expected Shortfall

Conditional Value at Risk หรือ CVaR คือการประมาณการขาดทุนที่คาดไว้ในกรณีเลวร้ายที่สุด 1 - x%

มักอ้างอิง CVaR ด้วยควอนไทล์ เช่น 95, 99 และ 99.9

 

ตัวอย่าง: CVaR(95) = -2.5%

 

ใน 5% ของกรณีเลวร้ายที่สุด การขาดทุนเฉลี่ยเกิน -2.5% ในอดีต

Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Historical Expected Shortfall ใน Python

สมมติว่ามีออบเจกต์ StockReturns ซึ่งเป็น time series ของผลตอบแทนหุ้น

การคำนวณ historical CVaR(95):

var_level = 95
var_95 = np.percentile(StockReturns, 100 - var_level)
cvar_95 = StockReturns[StockReturns <= var_95].mean()
cvar_95
-0.025
Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

มาฝึกกันเถอะ!

Python เบื้องต้นสำหรับการบริหารความเสี่ยงพอร์ตการลงทุน

Preparing Video For Download...