시작하기무료로 시작하기

변동성을 위한 공분산 계산하기

MPT에서는 위험을 변동성으로 정량화해요. 포트폴리오 변동성을 계산하는 수식은 복잡하며, 일간 수익률의 공분산이 필요해요. 이제 returns_monthly DataFrame의 각 달을 순회하면서 일간 수익률의 공분산을 계산해 보겠습니다.

pandas의 datetime 인덱스를 사용하면 df.index.monthdf.index.year로 월과 연도를 가져올 수 있어요. 이를 이용해 반복문에서 현재 월과 연도에 해당하는 returns_daily의 일간 수익률을 선택하는 마스크를 만들 거예요. 그런 다음 df[mask]처럼 마스크를 적용해 DataFrame을 부분 선택합니다. 이렇게 하면 반복문의 각 사이클에서 현재 월과 연도에 해당하는 returns_daily의 항목을 가져올 수 있어요. 마지막으로 pandas의 .cov() 메서드를 사용해 일간 수익률의 공분산을 구합니다.

이 연습은 강의의 일부입니다

Python으로 배우는 금융 분야 Machine Learning

강의 보기

연습 안내

  • returns_monthly의 인덱스를 순회하세요.
  • returns_daily에 대해, returns_monthly의 현재 월과 연도를 사용하고 루프의 i에서 현재 월과 연도와 일치하도록 하는 마스크를 만드세요.
  • 마스크를 returns_daily에 적용하고 .cov()로 공분산을 계산하세요.

실습형 인터랙티브 연습

이 예제를 이 샘플 코드를 완성하여 풀어보세요.

# Daily covariance of stocks (for each monthly period)
covariances = {}
rtd_idx = returns_daily.index
for i in returns_monthly.____:    
    # Mask daily returns for each month and year, and calculate covariance
    mask = (rtd_idx.month == i.month) & (rtd_idx.____ == i.____)
    
    # Use the mask to get daily returns for the current month and year of monthy returns index
    covariances[i] = returns_daily[____].cov()

print(covariances[i])
코드 편집 및 실행