마르코위츠 포트폴리오

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

Dakota Wixom

Quantitative Analyst | QuantCourse.com

무작위로 생성된 포트폴리오 100,000개

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

샤프 비율

샤프 비율은 위험 조정 수익률의 척도입니다.

1966년 버전의 샤프 비율 계산식:

$$ S = \frac{ R_a - r_f }{\sigma_a} $$

  • S: 샤프 비율
  • $ R_a $: 자산 수익률
  • $ r_f $: 무위험 수익률
  • $ \sigma_a $: 자산 변동성
Python으로 시작하는 포트폴리오 리스크 관리

효율적 프론티어

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

마르코위츠 포트폴리오

효율적 프론티어 위의 모든 점은 최적 포트폴리오입니다.

다음 두 가지 주요 지점을 마르코위츠 포트폴리오라고 합니다:

  • MSR: 최대 샤프 비율(Max Sharpe Ratio) 포트폴리오
  • GMV: 글로벌 최소 변동성(Global Minimum Volatility) 포트폴리오

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

포트폴리오 선택

최적의 포트폴리오를 어떻게 선택할까요?

  • 효율적 프론티어의 경계선 위에 있는 포트폴리오를 선택하세요
  • 더 높은 위험을 감수하면 더 높은 수익을 기대할 수 있습니다
Python으로 시작하는 포트폴리오 리스크 관리

Python에서 MSR 선택하기

VolatilityReturns 열을 가진 무작위 포트폴리오 DataFrame df가 있다고 가정합니다:

numstocks = 5
risk_free = 0
df["Sharpe"] = (df["Returns"] - risk_free) / df["Volatility"]
MSR = df.sort_values(by=['Sharpe'], ascending=False)
MSR_weights = MSR.iloc[0, 0:numstocks]
np.array(MSR_weights)
array([0.15, 0.35, 0.10, 0.15, 0.25])
Python으로 시작하는 포트폴리오 리스크 관리

과거 성과는 미래 수익을 보장하지 않습니다

최대 샤프 비율 포트폴리오는 매력적으로 들리지만, 실제로 수익률을 예측하기는 매우 어렵습니다.

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

Python에서 GMV 선택하기

VolatilityReturns 열을 가진 무작위 포트폴리오 DataFrame df가 있다고 가정합니다:

numstocks = 5
GMV = df.sort_values(by=['Volatility'], ascending=True)
GMV_weights = GMV.iloc[0, 0:numstocks]
np.array(GMV_weights)
array([0.25, 0.15, 0.35, 0.15, 0.10])
Python으로 시작하는 포트폴리오 리스크 관리

연습해 봅시다!

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

Preparing Video For Download...