So sánh CVaR và VaR
Conditional Value at Risk (CVaR), hay mức thâm hụt kỳ vọng (Expected Shortfall, ES), đặt câu hỏi: mức lỗ trung bình sẽ là bao nhiêu khi biết rằng các khoản lỗ đã vượt quá một ngưỡng tại một mức độ tin cậy nhất định. Biện pháp này dùng VaR làm điểm xuất phát, nhưng chứa nhiều thông tin hơn vì xét đến phần đuôi của phân phối thua lỗ.
Đầu tiên, bạn sẽ tính VaR 95% cho phân phối chuẩn của thua lỗ danh mục, với trung bình và độ lệch chuẩn giống như portfolio_losses của các ngân hàng đầu tư giai đoạn 2005–2010. Sau đó, bạn sẽ dùng VaR để tính CVaR 95% và vẽ cả hai trên nền phân phối chuẩn.
portfolio_losses đã có sẵn trong không gian làm việc của bạn, cũng như phân phối chuẩn norm từ scipy.stats.
Bài tập này là một phần của khóa học
Quản trị Rủi ro Định lượng với Python
Hướng dẫn bài tập
- Tính trung bình và độ lệch chuẩn của
portfolio_lossesvà gán lần lượt chopmvàps. - Tìm VaR 95% bằng phương thức
.ppf()củanorm— phương thức này nhận tham sốloccho trung bình vàscalecho độ lệch chuẩn. - Dùng VaR 95% và phương thức
.expect()củanormđể tìmtail_loss, rồi dùng nó để tính CVaR tại cùng mức độ tin cậy. - Thêm các đường thẳng đứng thể hiện VaR (màu đỏ) và CVaR (màu xanh lá) vào biểu đồ histogram của phân phối chuẩn.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Compute the mean and standard deviation of the portfolio returns
pm = portfolio_losses.____
ps = portfolio_losses.____
# Compute the 95% VaR using the .ppf()
VaR_95 = norm.ppf(0.95, loc = ____, scale = ____)
# Compute the expected tail loss and the CVaR in the worst 5% of cases
tail_loss = norm.____(lambda x: x, loc = ____, scale = ____, lb = VaR_95)
CVaR_95 = (1 / (1 - 0.95)) * ____
# Plot the normal distribution histogram and add lines for the VaR and CVaR
plt.hist(norm.rvs(size = 100000, loc = pm, scale = ____), bins = 100)
plt.axvline(x = VaR_95, c='r', label = "VaR, 95% confidence level")
plt.axvline(x = ____, c='g', label = "CVaR, worst 5% of outcomes")
plt.legend(); plt.show()