现代投资组合理论

Python 投资组合分析入门

Charlotte Werger

Data Scientist

构建最优投资组合

投资策略图标

Python 投资组合分析入门

什么是投资组合优化?

认识 Harry Markowitz

Harry Markowitz

Python 投资组合分析入门

优化问题:寻找最优权重

$$ Markowitz 的优化问题

换句话说:

  • 在以下约束下最小化组合方差:
  • 预期平均收益至少达到目标收益
  • 权重之和为 100%
  • 至少部分权重为正
Python 投资组合分析入门

改变目标收益会形成有效前沿

有效前沿图

Python 投资组合分析入门

用 PyPortfolioOpt 做投资组合优化

from pypfopt.efficient_frontier import EfficientFrontier
from pypfopt import risk_models
from pypfopt import expected_returns
df=pd.read_csv('portfolio.csv')
df.head(2)
                XOM        RRC        BBY         MA        PFE       
date
2010-01-04  54.068794  51.300568  32.524055  22.062426  13.940202 
2010-01-05  54.279907  51.993038  33.349487  21.997149  13.741367
# 计算预期年化收益和样本协方差
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
Python 投资组合分析入门

获取有效前沿与组合权重

# 计算预期年化收益和风险
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
# 获取有效前沿
ef = EfficientFrontier(mu, Sigma)
# 选择一个最优组合
ef.max_sharpe()
Python 投资组合分析入门

不同的优化方式

# 选择最大夏普比组合
ef.max_sharpe()
# 针对目标风险选择最优收益 
ef.efficient_risk(2.3)
# 针对目标收益选择最小风险
ef.efficient_return(1.5)
Python 投资组合分析入门

计算组合风险与绩效

# 获取绩效指标
ef.portfolio_performance(verbose=True, risk_free_rate = 0.01)
预期年化收益:21.3%
年化波动率:19.5%
夏普比率:0.98
Python 投资组合分析入门

让我们优化一个投资组合!

Python 投资组合分析入门

Preparing Video For Download...