VaR และความเสี่ยงที่ต้องรับ
ในแบบฝึกหัดก่อนหน้า คุณได้คำนวณ VaR และ CVaR โดยสมมติว่าการขาดทุนมีการกระจายแบบ Normal แล้ว คราวนี้จะหาค่า VaR โดยใช้การกระจายของการขาดทุนแบบอื่นที่นิยมใช้กัน ได้แก่ Student's t-distribution (หรือ T) ซึ่งอยู่ใน scipy.stats
จะคำนวณ array ของค่า VaR ที่ระดับ 99% จากการกระจายแบบ T (ที่มีองศาอิสระ 30 - 1 = 29) โดยใช้หน้าต่างเลื่อน 30 วันจากข้อมูล losses ของพอร์ตโฟลิโอธนาคารเพื่อการลงทุน
ขั้นแรกให้หาค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานของแต่ละหน้าต่าง แล้วสร้างรายการ rolling_parameters จากนั้นนำค่าเหล่านี้ไปคำนวณ array ของค่า VaR ที่ระดับ 99%
สุดท้าย นำ array นี้ไปพล็อตกราฟแสดงความเสี่ยงที่ต้องรับสำหรับพอร์ตโฟลิโอที่มีมูลค่าเริ่มต้น $100,000 ทั้งนี้ ความเสี่ยงที่ต้องรับคือความน่าจะเป็นที่จะขาดทุน (1%) คูณกับจำนวนเงินที่ขาดทุน (ค่าการขาดทุนจาก VaR ที่ระดับ 99%)
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การบริหารความเสี่ยงเชิงปริมาณด้วย Python
คำแนะนำการฝึกหัด
- Import การกระจายแบบ Student's
tจากscipy.stats - คำนวณเวกเตอร์ค่าเฉลี่ย
muและส่วนเบี่ยงเบนมาตรฐานsigmaจากหน้าต่างเลื่อน 30 วันของlossesแล้วเก็บไว้ในrolling_parameters - คำนวณ array ของ NumPy สำหรับค่า VaR ที่ระดับ 99% ชื่อ
VaR_99โดยใช้t.ppf()จากรายการการกระจายแบบ T ที่ใช้ค่าจากrolling_parameters - คำนวณและแสดงภาพความเสี่ยงที่ต้องรับที่เกี่ยวข้องกับ array
VaR_99
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Import the Student's t-distribution
from scipy.____ import t
# Create rolling window parameter list
mu = losses.rolling(30).____
sigma = losses.rolling(30).____
rolling_parameters = [(29, mu[i], s) for i,s in enumerate(sigma)]
# Compute the 99% VaR array using the rolling window parameters
VaR_99 = np.array( [ t.ppf(____, *params)
for params in ____ ] )
# Plot the minimum risk exposure over the 2005-2010 time period
plt.plot(losses.index, 0.01 * ____ * 100000)
plt.show()