포트폴리오 위험 측정

Python으로 배우는 포트폴리오 분석 입문

Charlotte Werger

Data Scientist

포트폴리오의 위험

  • 투자는 위험합니다: 개별 자산의 가격은 오르내립니다
  • 기대수익률은 확률변수입니다
  • 평균 주변의 분산은 분산 $\sigma^2$으로 측정되며, 일반적 변동성 지표입니다
  • $\sigma^2 = \frac{\sum\limits_{i=1}^N (X -\mu)^2}{N}$

줄타기처럼 표현한 위험

Python으로 배우는 포트폴리오 분석 입문

분산

$$

  • 개별 자산의 분산은 다릅니다: 평균 주변의 퍼짐이 자산마다 다릅니다
  • 포트폴리오 분산은 기초 자산 분산의 가중합이 아닙니다
  • 자산 수익률이 상관되어 있어 계산이 복잡해집니다

높은/낮은 분산의 분포

Python으로 배우는 포트폴리오 분석 입문

분산과 상관은 포트폴리오 위험과 어떻게 관련될까요?

$$

  • 자산 1과 2의 상관계수는 $\rho_{1,2}$로 표기하며, 함께 움직이는 정도를 나타냅니다
  • 포트폴리오 분산은 각 자산의 분산($\sigma_1^2, \sigma_2^2, ...$), 포트폴리오 가중치($w_1, w_2$), 자산 간 상관을 반영합니다
  • 표준편차($\sigma$)는 분산($\sigma^2$)의 제곱근이며, 둘 다 변동성 지표입니다
Python으로 배우는 포트폴리오 분석 입문

포트폴리오 분산 계산

$$ 포트폴리오 분산 공식

  • $\rho_{1,2} \sigma_1 \sigma_2$는 자산 1과 2의 공분산입니다
  • 공분산은 $ \sigma_{1,2} $로도 씁니다
  • 따라서 다음과 같이 쓸 수 있습니다:

다시 쓴 포트폴리오 분산 공식

Python으로 배우는 포트폴리오 분석 입문

포트폴리오 분산 간단히 쓰기

포트폴리오 분산 공식

  • 코드는 행렬 표기법이 더 다루기 쉽습니다:

행렬 표기의 포트폴리오 분산

  • 파이썬에서 계산할 내용:

    포트폴리오 분산 = 가중치 전치 x (공분산 행렬 x 가중치)

Python으로 배우는 포트폴리오 분석 입문

파이썬으로 포트폴리오 분산 구하기

price_data.head(2)

ticker        AAPL       FB        GE       GM       WMT
date                    
2018-03-21    171.270    169.39    13.88    37.58    88.18
2018-03-22    168.845    164.89    13.35    36.35    87.14
# Calculate daily returns from prices
daily_returns = df.pct_change()
# Construct a covariance matrix for the daily returns data
cov_matrix_d = daily_returns.cov()
Python으로 배우는 포트폴리오 분석 입문

파이썬으로 포트폴리오 분산 구하기

# Construct a covariance matrix from the daily_returns
cov_matrix_d = (daily_returns.cov())*250
print (cov_matrix_d)

        AAPL          FB          GE          GM          WMT                    
AAPL    0.053569    0.026822    0.013466    0.018119    0.010798
FB      0.026822    0.062351    0.015298    0.017250    0.008765
GE      0.013466    0.015298    0.045987    0.021315    0.009513
GM      0.018119    0.017250    0.021315    0.058651    0.011894
WMT     0.010798    0.008765    0.009513    0.011894    0.041520
weights = np.array([0.2, 0.2, 0.2, 0.2, 0.2])
Python으로 배우는 포트폴리오 분석 입문

파이썬으로 포트폴리오 분산 구하기

# Calculate the variance with the formula
port_variance = np.dot(weights.T, np.dot(cov_matrix_a, weights))
print (port_variance)

0.022742232726360567
# Just converting the variance float into a percentage
print(str(np.round(port_variance, 3) * 100) + '%')

2.3%
port_stddev = np.sqrt(np.dot(weights.T, np.dot(cov_matrix_a, weights)))
print(str(np.round(port_stddev, 3) * 100) + '%')
15.1%
Python으로 배우는 포트폴리오 분석 입문

Let's practice!

Python으로 배우는 포트폴리오 분석 입문

Preparing Video For Download...