CVaR และการเลือกระดับการรองรับความสูญเสีย
ในแบบฝึกหัดก่อนหน้า คุณได้เห็นแล้วว่าการแจกแจงแบบ T และ Gaussian KDE ต่างก็ให้ผลที่ค่อนข้างดีในการ fit กับการสูญเสียของพอร์ตในช่วงวิกฤต เมื่อเป็นเช่นนี้ การแจกแจงใดเหมาะสมที่สุดสำหรับ การบริหารความเสี่ยง? วิธีหนึ่งในการเลือกคือ เลือกการแจกแจงที่ให้ ระดับการรองรับความสูญเสีย สูงสุด เพื่อรับมือกับ "สถานการณ์เลวร้ายที่สุด" ที่อาจเกิดขึ้น
การแจกแจง t และ kde พร้อมใช้งานแล้วและได้ถูก fit กับ losses ของพอร์ตในช่วงปี 2007-2008 (พารามิเตอร์ที่ fit แล้วของ t อยู่ใน p) คุณจะคำนวณค่าประมาณ CVaR 99% แบบ 1 วันสำหรับแต่ละการแจกแจง จากนั้นค่า CVaR ที่สูงที่สุดจะถือเป็น จำนวนเงินสำรอง ที่ 'ปลอดภัย' ที่สุด สำหรับรองรับความสูญเสียที่คาดว่าจะเกิน VaR 99%
อินสแตนซ์ kde ได้รับเมธอด .expect() พิเศษ เฉพาะแบบฝึกหัดนี้ เพื่อคำนวณค่าคาดหวังที่จำเป็นสำหรับ CVaR
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การบริหารความเสี่ยงเชิงปริมาณด้วย Python
คำแนะนำการฝึกหัด
- หาค่า VaR 99% โดยใช้
np.quantile()กับตัวอย่างที่สุ่มจากการแจกแจงtและkde - คำนวณอินทิกรัลที่ต้องใช้สำหรับค่าประมาณ CVaR โดยใช้เมธอด
.expect()ของแต่ละการแจกแจง - หาและแสดงค่าประมาณ CVaR 99% สำหรับการแจกแจงทั้งสอง
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Find the VaR as a quantile of random samples from the distributions
VaR_99_T = np.quantile(t.rvs(size=1000, *p), ____)
VaR_99_KDE = np.quantile(kde.resample(size=1000), ____)
# Find the expected tail losses, with lower bounds given by the VaR measures
integral_T = t.____(lambda x: x, args = (p[0],), loc = p[1], scale = p[2], lb = ____)
integral_KDE = kde.____(lambda x: x, lb = ____)
# Create the 99% CVaR estimates
CVaR_99_T = (1 / (1 - ____)) * integral_T
CVaR_99_KDE = (1 / (1 - ____)) * integral_KDE
# Display the results
print("99% CVaR for T: ", CVaR_99_T, "; 99% CVaR for KDE: ", CVaR_99_KDE)