logo

포트폴리오

현대 포트폴리오 이론

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

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

데이터

데이터 불러오기.

🤖 AI 프롬프트
stock.xlsx를 판다스로 읽어 price 데이터 프레임을 만들어줘. Date 열을 날짜 형식의 인덱스로 사용해줘.
QQQ와 TLT를 50:50으로 투자할 때 수익률 평균과 표준편차를 각각 구해줘.
import pandas as pd

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

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

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

포트폴리오 계산

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

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

portfolio.mean()  # 수익률 평균
실행 결과
np.float64(0.741093411464344)
portfolio.std()   # 수익률 표준편차(위험)
실행 결과
np.float64(3.220580540444184)

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

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

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

🤖 AI 프롬프트
QQQ의 비중을 0%에서 100%까지 10%p 간격으로 바꾸면서 각각의 평균 수익률과 표준편차를 보여줘.
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
실행 결과
      p  Mean Return  Standard Deviation
0   0.0    -0.002166            3.917624
1   0.1     0.146486            3.589302
2   0.2     0.295138            3.339638
3   0.3     0.443790            3.187170
4   0.4     0.592441            3.146062
5   0.5     0.741093            3.220581
6   0.6     0.889745            3.403138
7   0.7     1.038397            3.677681
8   0.8     1.187049            4.025433
9   0.9     1.335701            4.429182
10  1.0     1.484353            4.875037

위험-수익 관계 시각화.

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

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

자산간 상관관계

  • 포트폴리오 위험을 이해하려면 자산 간 상관관계를 확인해야 함
  • 상관계수 행렬: 여러 변수 간의 상관계수를 한 번에 계산해 행렬 형태로 나타낸 것
    • 대각선은 자기 자신과의 상관계수이므로 항상 1
    • 행과 열을 바꿔도 값이 같은 대칭 행렬
  • 히트맵(heatmap): 상관계수의 크기를 색상으로 표시해 한눈에 비교
  • VOO, QQQ, TLT의 상관계수 행렬을 계산하고 히트맵으로 시각화
🤖 AI 프롬프트
자산간 수익률 상관계수 행렬을 히트맵으로 시각화
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 자산간 상관관계 히트맵

  • VOO와 QQQ: 상관계수 약 0.91. 거의 함께 움직이므로 섞어도 분산 효과가 작음
  • TLT와 주식(VOO, QQQ): 상관계수가 0에 가까움. 섞으면 위험을 낮추는 효과를 기대할 수 있음
  • 상관계수 행렬은 회귀분석에서 독립변수끼리 너무 비슷한지, 즉 다중공선성(multicollinearity)을 미리 살펴볼 때도 사용

퀴즈

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

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

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

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

Previous
상관과 인과