대안적 포트폴리오 최적화

Python으로 배우는 포트폴리오 분석 입문

Charlotte Werger

Data Scientist

과거 데이터 기반 기대 수익과 위험

$$

  • 과거 평균 수익률과 과거 포트폴리오 분산은 mu와 Sigma의 완벽한 추정치가 아닙니다
  • 따라서 최적화로 얻은 가중치는 미래 데이터에서 항상 잘 작동한다고 보장되지 않습니다

$$ 역사가 반복된다는 농담

Python으로 배우는 포트폴리오 분석 입문

과거 데이터

시간에 따라 변하는 시계열 데이터

Python으로 배우는 포트폴리오 분석 입문

지수 가중 수익률

$$

  • 더 나은 위험·수익 척도가 필요합니다
  • 지수 가중 위험·수익은 최신 데이터에 더 큰 가중치를 둡니다
  • 그래프의 지수 이동평균: t-1 관측치에 가장 큰 가중치

지수 가중 수익률 계산의 가중치

Python으로 배우는 포트폴리오 분석 입문

지수 가중 공분산

$$

  • 지수 공분산 행렬: 최신 데이터에 더 큰 가중치 부여
  • 그래프: 검정은 지수 가중 변동성, 파란색 표준 변동성보다 실제 변동성을 더 잘 추적

$$ 지수 가중 공분산과 일반 공분산의 실제값 비교

1 출처: https://systematicinvestor.github.io/Exponentially-Weighted-Volatility-RCPP
Python으로 배우는 포트폴리오 분석 입문

지수 가중 수익률

from pypfopt import expected_returns
# 지수 가중 이동 평균
mu_ema = expected_returns.ema_historical_return(df, 
                         span=252, frequency=252)
print(mu_ema)
symbol
XOM     0.103030
BBY     0.394629
PFE     0.186058
Python으로 배우는 포트폴리오 분석 입문

지수 가중 공분산

from pypfopt import risk_models
# 지수 가중 공분산
Sigma_ew = risk_models.exp_cov(df, span=180, frequency=252)
Python으로 배우는 포트폴리오 분석 입문

최적화에 하방위험 사용하기

$ $

  • 소르티노 비율을 기억하십시오: 음의 수익률 분산만 사용합니다
  • PyPortfolioOpt는 최적화에서 하방위험 지표인 세미공분산 사용을 지원합니다:

$ $ 하방위험 계산

Python으로 배우는 포트폴리오 분석 입문

PyPortfolioOpt의 세미공분산

Sigma_semi = risk_models.semicovariance(df,     
                        benchmark=0, frequency=252)

print(Sigma_semi)
         XOM         BBY          MA         PFE
XOM     0.018939    0.008505    0.006568    0.004058
BBY     0.008505    0.016797    0.009133    0.004404
MA      0.006568    0.009133    0.018711    0.005373
PFE     0.004058    0.004404    0.005373    0.008349
Python으로 배우는 포트폴리오 분석 입문

연습해 봅시다!

Python으로 배우는 포트폴리오 분석 입문

Preparing Video For Download...