히스토리컬 및 몬테카를로 시뮬레이션

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

Jamsheed Shorish

Computational Economist

히스토리컬 시뮬레이션

  • 적절한 분포 계열이 없는가요?
  • 히스토리컬 시뮬레이션: 과거로 미래 예측
    • 분포 가정 불필요
    • 과거 손실 데이터가 내일의 시뮬레이션 손실이 됨
Python을 활용한 정량적 리스크 관리

파이썬으로 히스토리컬 시뮬레이션

  • VaR: asset_returns의 수익률로 시작
  • 포트폴리오 weightsportfolio_returns 계산
  • portfolio_returnslosses로 변환
  • 예: 95% 신뢰수준에서 lossesnp.quantile()로 VaR 계산
  • 미래 손실분포가 과거와 완전히 동일하다고 가정

 

weights = [0.25, 0.25, 0.25, 0.25]

portfolio_returns = asset_returns.dot(weights)
losses = - portfolio_returns
VaR_95 = np.quantile(losses, 0.95)
Python을 활용한 정량적 리스크 관리

몬테카를로 시뮬레이션

  • 몬테카를로 시뮬레이션: 모수 추정과 시뮬레이션의 강력한 결합
    • 포트폴리오 손실 및/또는 위험요인의 분포 가정
    • 무작위 추출로 임의의 경로(run) 생성
    • 추출 반복 ⇒ 시뮬레이션 여러 실행 생성
  • 각 실행에서 목표 시점까지 포트폴리오 손실 계산
  • 시뮬레이션 손실의 분위수로 VaR 추정
Python을 활용한 정량적 리스크 관리

파이썬으로 몬테카를로 시뮬레이션

  • 1단계:
    • scipy.stats에서 정규분포 norm 임포트
    • total_steps 정의 (1일 = 1440분)
    • 실행 횟수 N 정의
    • portfolio_losses의 평균 mu, 표준편차 sigma 계산
from scipy.stats import norm

total_steps = 1440
N = 10000
mu = portfolio_losses.mean() sigma = portfolio_losses.std()
Python을 활용한 정량적 리스크 관리

파이썬으로 몬테카를로 시뮬레이션

  • 2단계:
    • N회 실행을 위한 daily_loss 벡터 초기화
    • N회 반복 루프
      • 몬테카를로로 loss 벡터 계산
        • 표준정규분포에서 반복 추출에 norm.rvs() 사용
        • 1/total_steps로 스케일된 mu, sigma로 데이터 추출
daily_loss = np.zeros(N)

for n in range(N):
loss = ( mu * (1/total_steps) + norm.rvs(size=total_steps) * sigma * np.sqrt(1/total_steps) )
Python을 활용한 정량적 리스크 관리

파이썬으로 몬테카를로 시뮬레이션

  • 3단계:
    • 각 실행 n에 대해 누적 daily_loss 생성
    • np.quantile()로 예: 95% 신뢰수준의 VaR 계산 (daily_loss 기준)

 

daily_loss = np.zeros(N)
for n in range(N):

loss = mu * (1/total_steps) + ... norm.rvs(size=total_steps) * sigma * np.sqrt(1/total_steps)
daily_loss[n] = sum(loss)
VaR_95 = np.quantile(daily_loss, 0.95)
Python을 활용한 정량적 리스크 관리

자산수익률 시뮬레이션

  • 고도화: 포트폴리오의 자산수익률 경로를 무작위 생성
    • 더 현실적: 자산수익률을 개별적으로 시뮬레이션 가능
    • 자산수익률 간 상관을 반영 가능
      • 상기: 효율 공분산 행렬 e_cov
      • 2단계에서 자산수익률 계산에 사용
  • 연습: 자산수익률 시뮬레이션을 포함한 몬테카를로
Python을 활용한 정량적 리스크 관리

연습해 봅시다!

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

Preparing Video For Download...