VaR와 CVaR를 활용한 리스크 관리

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

Jamsheed Shorish

Computational Economist

현대 포트폴리오 이론을 통한 리스크 관리

  • 효율적 포트폴리오
    • 주어진 위험 수준에서 수익을 극대화하는 비중
  • 효율적 프런티어: 다양한 효율적 포트폴리오가 생성하는 (위험, 수익) 점들의 궤적
    • 각 점 = 포트폴리오 비중 최적화
  • 효율적 포트폴리오/프런티어의 개념: 현대 포트폴리오 이론(MPT)

효율적 프런티어 그래프

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

MPT에 VaR 도입하기

  • 현대 포트폴리오 이론(MPT): ‘평균-분산’ 최적화
    • 기대수익 최대화
    • 위험 수준(변동성)은 고정
    • 목적함수: 기대수익
  • VaR/CVaR: 손실 분포상의 위험 측정
  • MPT를 기대수익 대신 손실 분포 최적화로 확장
Python을 활용한 정량적 리스크 관리

새 목적: CVaR 최소화

  • 포트폴리오 최적화의 목적 변경
    • 평균-분산 목적: 기대수익 최대화
    • CVaR 목적: 주어진 신뢰수준에서 조건부 기대손실 최소화
  • 예시: 손실 분포
    • VaR: 95% 신뢰수준에서의 최대손실
    • 최적화: CVaR을 최소화하는 비중
    • CVaR: VaR 이상 손실(최악 5%)에서의 기대손실
  • 최악 100% - 95% = 5% 구간의 기대손실을 최소화
Python을 활용한 정량적 리스크 관리

리스크 관리 문제 정식화

  • 최적 포트폴리오 비중 $w^\star$를 다음의 해로 선택

cvar_minimization

  • 상기: $f(x)$ = 포트폴리오 손실의 확률밀도함수

  • PyPortfolioOpt: CVaR 최소화를 새 목적함수로 선택 가능

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

PyPortfolioOpt로 CVaR 최소화

  • 자산 수익률 returns{{1}}로 EfficientCVaR 객체 생성
  • .min_cvar() 메서드로 최적 포트폴리오 비중 계산

 

ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)

optimal_weights = ec.min_cvar()
Python을 활용한 정량적 리스크 관리

평균-분산 vs. CVaR 리스크 관리

  • 평균-분산 최소 변동성 포트폴리오, 2005-2010 투자은행 자산
ef = EfficientFrontier(None, e_cov)

min_vol_weights = ef.min_volatility()
print(min_vol_weights)
{'Citibank': 0.0,
 'Morgan Stanley': 5.0784330940519306e-18,
 'Goldman Sachs': 0.6280157234640608,
 'J.P. Morgan': 0.3719842765359393}
Python을 활용한 정량적 리스크 관리

평균-분산 vs. CVaR 리스크 관리

  • CVaR 최소화 포트폴리오, 2005-2010 투자은행 자산
ec = pypfopt.efficient_frontier.EfficientCVaR(None, returns)
min_cvar_weights = ec.min_cvar()

print(min_cvar_weights)

 

{'Citibank': 0.0,
 'Morgan Stanley': 0.0,
 'Goldman Sachs': 0.669324359403484,
 'J.P. Morgan': 0.3306756405965026}
Python을 활용한 정량적 리스크 관리

Ayo berlatih!

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

Preparing Video For Download...