시작하기무료로 시작하기

CVaR와 VaR 비교

조건부 위험값(CVaR) 또는 기대손실(ES)은 특정 신뢰수준에서 어떤 임계값을 초과하는 손실이 발생했을 때, 그 조건하에서의 평균 손실이 얼마인지 묻는 개념이에요. VaR을 출발점으로 하지만, 손실분포의 꼬리(tail)를 고려하므로 더 많은 정보를 담고 있어요.

먼저 2005–2010년 투자은행의 portfolio_losses와 동일한 평균과 표준편차를 갖는 정규분포에서 95% VaR을 계산해 보세요. 그런 다음 해당 VaR을 사용해 95% CVaR을 계산하고, 둘 다 정규분포와 함께 시각화해 볼 거예요.

작업 공간에는 portfolio_lossesscipy.stats의 정규분포 객체 norm이 준비되어 있어요.

이 연습은 강의의 일부입니다

Python을 활용한 정량적 리스크 관리

강의 보기

연습 안내

  • portfolio_losses의 평균과 표준편차를 계산해 각각 pm, ps에 할당하세요.
  • norm.ppf() method를 사용해 95% VaR을 구하세요. 이 메서드는 평균을 위한 loc, 표준편차를 위한 scale 인수를 받아요.
  • 95% VaR과 norm.expect() 메서드를 사용해 tail_loss를 구하고, 이를 이용해 같은 신뢰수준에서 CVaR을 계산하세요.
  • 정규분포의 히스토그램 플롯에 VaR(빨간색)과 CVaR(초록색)을 나타내는 세로선을 추가하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# 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()
코드 편집 및 실행