zipline을 이용하면 포트폴리오를 평가할 수 있지만, zipline 설치에 실패한 이유로, 책에서는 pyfolio부분만을 본다. 다른 모듈을 사용하면 이를 대신할 수 있는데, 대표적으로 FinQuant가 있다.
https://finquant.readthedocs.io/en/latest/efficientfrontier.html
FinQuant의 build_portfolio, EfficientFrontier 함수를 이용하면, 포트폴리오를 짤 수 있다.
finquant.efficient_frontier.EfficientFrontier의 상세 내용은 다음과 같다.
~.EfficientFrontier(mean_returns, cov_matrix, risk_free_rate,freq,method)
입력값: 포트폴리오안의 주식들의 수익률 데이터, 공분산 행렬, Rf, 데이터의 거래일 수, 그리고 method들이 있다.
method는 scipy.optimize.minimize 안에 있는 방법들로, 나중에 찾아보는것이 좋을 것 같다.
zipline의 경우, 몬테카를로 시뮬레이션을 통해 다양한 포트폴리오를 생성해 낸다. 이 방식에 있어 단점은, 본질적으로 과거 데이터를 이용한 backward-looking 최적화므로, forward-looking입력과 출력이 아니라는 점이다. 이를 추정하는 것은 불가능하므로, 수많은 개선을 위한 출발점으로 간주할 수 있다.