logo

포트폴리오

현대 포트폴리오 이론

  • 현대 포트폴리오 이론(Modern Portfolio Theory)은 경제학자 해리 마코위츠가 1952년에 제시한 이론
  • 이후 노벨 경제학상 수상으로 이어짐
  • 포트폴리오의 기대 수익은 자산의 기대 수익을 가중합한 것과 같음
E(Rp)=iwiE(Ri)
  • 포트폴리오의 위험은 자산 간의 상관관계(ρij)에 영향을 받음
σp2=iwi2σi2+ij=iwiwjσiσjρij
  • 상관관계가 낮은 자산들로 포트폴리오를 구성하면 수익률을 높이면서 위험을 낮출 수 있음

효율적 프론티어와 최소분산 포트폴리오

데이터

데이터 불러오기.

import pandas as pd

price = pd.read_excel("stock.xlsx", parse_dates=True, index_col="Date")

전월 대비 수익률을 비율로 계산한 뒤 백분율 단위로 변환.

returns = price.pct_change(fill_method=None)
returns = returns * 100

포트폴리오 계산

  • QQQ와 TLT를 5:5로 섞은 포트폴리오를 계산
  • 각 자산의 수익률에 투자 비중을 곱해 더함
asset1 = "QQQ"
asset2 = "TLT"
p = 0.5

portfolio = p * returns[asset1] + (1 - p) * returns[asset2]

portfolio.mean()  # 수익률 평균
portfolio.std()   # 수익률 표준편차(위험)

포트폴리오별 위험-수익 관계

  • 가로축은 월수익률 표준편차, 즉 위험
  • 세로축은 월평균 수익률
  • 자산 조합 비중에 따라 위험과 수익률이 달라짐
  • 상관관계가 낮은 자산을 섞을수록 같은 수익률에서 위험을 낮출 수 있는 조합이 나타날 수 있음

비중 p를 0에서 1까지 바꾸며 평균 수익률과 표준편차를 계산.

import numpy as np
import matplotlib.pyplot as plt

results = []

for p in np.linspace(0, 1, 11):
    portfolio_p = p * returns[asset1] + (1 - p) * returns[asset2]
    results.append({
        "p": p,
        "Mean Return": portfolio_p.mean(),
        "Standard Deviation": portfolio_p.std(),
    })

results_df = pd.DataFrame(results)
results_df

위험-수익 관계 시각화.

plt.plot(
    results_df["Standard Deviation"],
    results_df["Mean Return"],
    marker="o",
)
plt.xlabel("Standard Deviation")
plt.ylabel("Mean Return")
plt.show()

포트폴리오별 위험-수익 관계 비교

자산간 상관관계

  • 포트폴리오 위험을 이해하려면 자산 간 상관관계를 확인해야 함
  • VOO, QQQ, TLT의 상관계수 행렬을 계산하고 히트맵으로 시각화
import seaborn as sns

corr_matrix = returns[["VOO", "QQQ", "TLT"]].corr()
sns.heatmap(corr_matrix, annot=True, cmap="coolwarm", vmin=-1, vmax=1)

VOO, QQQ, TLT 자산간 상관관계 히트맵

퀴즈

문제 1 / 8맞음: 0힌트: 0틀림: 0채점중: 0남음: 8

현대 포트폴리오 이론에서 포트폴리오의 기대 수익을 계산하는 방식으로 맞는 것은?

  • 각 자산 기대 수익의 단순 최댓값을 선택한다
  • 각 자산의 기대 수익을 투자 비중으로 가중합한다
  • 가장 변동성이 큰 자산의 수익률만 사용한다
  • 자산 간 상관계수를 모두 0으로 고정한다

퀴즈를 풀려면 대화형 기능을 불러와야 합니다.