投资组合优化模型

2020-02-20 17:45:51 浏览数 (1)

作者:Matthew 编译:方的馒头

1

前言

今天这篇还是通过R语言实现

投资组合优化方面的文献已经有数十年的历史了。在今天的推文,我们将介绍一些传统的投资组合优化模型。总体目标是从考虑的所有可能的具有定义的目标功能的投资组合中选择资产的投资组合。

数据

数据是使用tidyquant()包的tq_get()函数收集的。然后,使用quantmod()包中的periodReturn函数将每日资产价格转换为每日对数收益。接下来,使用rsample()包中的rolling_origin()函数构造6个月的每日收益列表。目标是在滚动的基础上计算训练集(即6个月)上的6个月平均收益mus和6个月协方差矩阵Sigmas,并将其应用于测试集(即1个月后)-每月再平衡。

正如收益数据一样,其同样适用于月度价格数据。

价格和收益数据

第一个split的收益数据如下所示:

统计数据

Mus(平均收益)数据如下所示:

Sigmas(协方差矩阵)数据如下所示:

2

比较投资组合优化

全局最小方差投资组合

全局最小方差投资组合

是一种资产组合,它为我们提供尽可能低的收益方差或投资组合波动性。这里的波动性被用作风险的替代品,因此波动性差异越小,资产的风险就越小。投资组合只关注风险,忽略预期收益。

目标函数是:

由于Σ未知,我们可以用协方差矩阵来估计它为Σ^。其中凸解变成:

我们的目标是希望从模型中找到最佳权重,从而使我们的风险最小化。

下面的问题包括我们的Minimisation问题

quad_form函数采用

二次型,其中是x向量,p是矩阵,或者在我们的例子中w是权重向量,∑是A1,···,A5的协方差矩阵。这些约束条件对应于

其中我们不能给我们的资产分配负权重,我们将所有资本投资于投资组合。

我们可以使用R中的Disciplined Convex Programming(CVXR)包,其中:

  • 分析问题
  • 检验凸性
  • 将问题转化为规范形式
  • 解决问题

我们希望从模型中找到最佳权重,以使我们的风险最小化。我们可以通过解决优化问题,将列表绑定到单个数据框中并使用ggplot2来绘制样本最佳投资组合权重中一个月的滚动-基于前六个月的滚动mus和Sigmas来实现。

3

马科维茨投资组合

马科维茨均值-方差投资组合构建如下:

我们可以通过调整λ来设置不同的风险参数,并查看收益如何受到影响。这可以通过对具有不同值的数据运行多个优化问题来完成。较高的值将重点放在等式的右侧,因此不利于投资者的风险更大。

我们可以看到下图λ中的值变化如何影响风险和收益。 随着λ值的增加,我们承担的风险越小,但我们假设的收益就越少。低值的资产使我们以资产A5的权重投资于单项资产,增加λ值会增加其他资产A4的权重,从而分散了我们的风险。

最大夏普比率

Mu五分位数投资组合

Mu/Diag(Sigma)投资组合

Mu/Diag(sqrt(Sigma))投资组合

4

结果分析

有8种不同的投资组合优化模型。将所有数据汇总在一起,可以更快速地检查结果。

从图中可以看出,全局最小方差投资组合显示出投资组合收益的最低波动性。 在此期间,每个投资组合的年终绩效指标也显示在底部。

绘制累积收益率表明,Markowitz lambda投资组合在同一时期内的收益率最高,但是在同一时期内它们的标准差也最高。

此外,一些额外的测试数据,留在这里供大家将来参考:

0 人点赞