위험 노출과 손실

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

Jamsheed Shorish

Computational Economist

휴가 비유

  • 휴가용 호텔 예약

  • 선결제(체크인 전)

    • 낮은 객실료
    • 환불 불가: 취소 수수료 = 객실료의 100%
  • 도착 후 결제

    • 높은 객실료
    • 부분 환불: 객실료의 20% 취소 수수료

카리브 해변 근처의 보트 이미지

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

옵션 선택 기준

  • 무엇이 선택을 좌우합니까?
    1. 부정적 충격 가능성: 질병, 이동 차질, 날씨
      • 손실 확률
    2. 충격 시 손실 규모: 절대액 또는 조건부 액수
      • 예: VaR, CVaR
    3. 충격 회피 의지: 개인적 성향
      • 위험 감내도

입에 체온계를 물고 침대에 누운 아픈 아이 셋의 만화 이미지

 

리스크 스케일과 돈 이미지

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

위험 노출과 VaR

  • 위험 노출: 손실 확률 × 손실 척도
    • 손실 척도: 예, VaR
  • 휴가 취소 확률 10%: P(질병) = 0.10
  • 환불 불가:
    • 환불 불가 총 호텔 비용: €500
    • 신뢰수준 90%의 VaR: €500
  • 부분 환불:
    • 호텔 비용: €550
    • 신뢰수준 90%의 VaR: 취소 수수료 20% × €550 = €110
Python을 활용한 정량적 리스크 관리

위험 노출 계산

  • 환불 불가 노출("$\text{nr}$"):
    • P(질병) × $\text{VaR}_{0.90}^{\text{nr}}$ = 0.10 × €500 = €50.
  • 부분 환불 노출("$\text{pr}$"):
    • P(질병) × $\text{VaR}_{0.90}^{\text{pr}}$ = 0.10 × €110 = €11.
  • 위험 노출 차이: €50 - €11 = €39.
  • 총 가격 차이: €550 - €500 = €50.
  • 위험 감내도: €50을 더 내고 €39의 추가 노출을 회피할 가치가 있습니까?
Python을 활용한 정량적 리스크 관리

위험 감내도와 위험 선호도

  • 위험 중립: 기대값만 중요
    • €39 < €50 $\Rightarrow$ 환불 불가 선호
  • 위험 회피: 불확실성 자체가 비용
    • €39 < €50 $\Rightarrow$ 부분 환불 선호
  • 기업/기관 리스크 관리: 선호 = 위험 선호도(risk appetite)
  • 개인 투자자: 선호 = 위험 감내도(risk tolerance)
Python을 활용한 정량적 리스크 관리

손실 분포 - 이산형

  • 위험 노출은 손실 분포(손실 확률)에 _의존_
  • 휴가 예시: 무작위 위험 요인에서 2가지 결과

휴가 예시의 이진 손실 막대그래프

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

손실 분포 - 연속형

  • 위험 노출은 손실 분포(손실 확률)에 의존
  • 휴가 예시: 무작위 위험 요인에서 2가지 결과
  • 더 일반적으로: 연속형 손실 분포
    • 정규분포: 표본이 클 때 적합

연속형 정규분포 이미지

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

손실 분포 - 연속형

  • 위험 노출은 손실 분포(손실 확률)에 의존
  • 휴가 예시: 무작위 위험 요인에서 2가지 결과
  • 더 일반적으로: 연속형 손실 분포
    • 정규분포: 표본이 클 때 적합
    • 스튜던트 t분포: 표본이 작을 때 적합

연속형 손실 t분포 이미지

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

스튜던트 t분포 기초

  • t분포라고도 함
  • 표본이 작을 때 정규분포보다 꼬리가 두꺼움
    • 포트폴리오 수익/손실과 유사
  • 표본이 커질수록 t는 정규분포로 수렴

연속형 손실 분포 이미지

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

Python에서 t분포

  • 예: t분포로 95% VaR 계산
    • scipy.stats에서 t 분포 임포트
    • t.fit()으로 portfolio_loss 데이터 적합

 

from scipy.stats import t

params = t.fit(portfolio_losses)

연속형 손실 분포 이미지

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

Python에서 t분포

  • 예: t분포로 95% VaR 계산
    • scipy.stats에서 t 분포 임포트
    • t.fit()으로 portfolio_loss 데이터 적합
    • .ppf()로 분위수 계산하여 VaR 도출
from scipy.stats import t

params = t.fit(portfolio_losses)
VaR_95 = t.ppf(0.95, *params)

VaR가 표시된 연속형 손실 t분포 이미지

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

자유도

  • 자유도(df): 독립 관측치 수
  • 작은 df: 꼬리가 두꺼운 t분포
  • 큰 df: 정규분포에 근접
x = np.linspace(-3, 3, 100)

plt.plot(x, t.pdf(x, df = 2))
plt.plot(x, t.pdf(x, df = 5))
plt.plot(x, t.pdf(x, df = 30))

자유도 30의 t분포 이미지

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

연습해 봅시다!

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

Preparing Video For Download...