자본자산가격결정모형

Python으로 시작하는 포트폴리오 리스크 관리

Dakota Wixom

Quantitative Analyst | QuantCourse.com

자산 가격 결정 모형의 토대

CAPM

자본자산가격결정모형(CAPM)은 금융의 다양한 자산 가격 결정 모형과 팩터 모형의 근본적인 기반입니다.

Python으로 시작하는 포트폴리오 리스크 관리

초과 수익률

초과 수익률은 총 수익률에서 무위험 수익률을 차감하여 계산합니다:

$$ \text{Excess Return} = \text{Return} - \text{Risk Free Return} $$

예시:

브라질 투자:

포트폴리오 수익률 10% - 무위험 이자율 15% = 초과 수익률 -5%

미국 투자:

포트폴리오 수익률 10% - 무위험 이자율 3% = 초과 수익률 7%

Python으로 시작하는 포트폴리오 리스크 관리

자본자산가격결정모형

$$ E(R_{P}) - RF = \beta_{{P}}(E(R_{M})-RF)\ $$

  • $E(R_{P}) - RF$: 주식 또는 포트폴리오 P의 기대 초과 수익률
  • $E(R_{M}) - RF$: 광범위 시장 포트폴리오 B의 기대 초과 수익률
  • $RF$: 지역 무위험 이자율
  • $\beta_{{P}}$: 광범위 시장 포트폴리오 B에 대한 포트폴리오 베타(노출도)
Python으로 시작하는 포트폴리오 리스크 관리

공분산을 이용한 베타 계산

공분산을 이용한 역사적 베타 계산:

$$ \beta_P = \frac{Cov(R_P, R_B)}{Var(R_B)} $$

  • $\beta_P$: 포트폴리오 베타
  • $Cov(R_P, R_B)$: 포트폴리오(P)와 벤치마크 시장 지수(B) 간의 공분산
  • $Var(R_B)$: 벤치마크 시장 지수의 분산
Python으로 시작하는 포트폴리오 리스크 관리

Python으로 공분산을 이용한 베타 계산

Data 객체에 초과 포트폴리오 수익률과 시장 수익률이 이미 있다고 가정합니다:

covariance_matrix = Data[["Port_Excess","Mkt_Excess"]].cov()
covariance_coefficient = covariance_matrix.iloc[0, 1]
benchmark_variance = Data["Mkt_Excess"].var()
portfolio_beta = covariance_coefficient / benchmark_variance
portfolio_beta
0.93
Python으로 시작하는 포트폴리오 리스크 관리

선형 회귀

선형 회귀 예시:

행렬 표기법의 회귀 공식:

Python으로 시작하는 포트폴리오 리스크 관리

선형 회귀를 이용한 베타 계산

Data 객체에 초과 포트폴리오 수익률과 시장 수익률이 이미 있다고 가정합니다:

import statsmodels.formula.api as smf
model = smf.ols(formula='Port_Excess ~ Mkt_Excess', data=Data)
fit = model.fit()
beta = fit.params["Mkt_Excess"]
beta
0.93
Python으로 시작하는 포트폴리오 리스크 관리

결정계수 vs 수정 결정계수

수정 결정계수와 결정계수 추출:

import statsmodels.formula.api as smf
model = smf.ols(formula='Port_Excess ~ Mkt_Excess', data=Data)
fit = model.fit()
r_squared = fit.rsquared
r_squared
0.70
adjusted_r_squared = fit.rsquared_adj
0.65
Python으로 시작하는 포트폴리오 리스크 관리

연습해 봅시다!

Python으로 시작하는 포트폴리오 리스크 관리

Preparing Video For Download...