替代的投资组合优化

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 投资组合分析入门

Passons à la pratique !

Python 投资组合分析入门

Preparing Video For Download...