第四篇机器学习投资组合——模型测试

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/CoderPai/article/details/82835071

作者:chen_h
微信号 & QQ:862251340
微信公众号:coderpai


第四篇机器学习投资组合——模型测试
这个系列文章用于跟踪在创建由机器学习驱动的投资组合过程中的进展,一共分为四篇:

第一篇(简介)

第二篇(数据收集清洗)

第三篇(特征选择)

第四篇(模型测试)


回测

我们在上一篇文章中讲到,我们开始回测的时间点是 2015 年7月17日。这个时间点非常重要,因为我们的后视偏差是从这个时间点开始的。

为了最大限度的减少后视偏差的影响,这种回测将以“向前优化”的方式进行,这意味着对于每个预测,我们将仅仅使用截止到该时间点可用的信息,绝不偷看时间点后面的数据。

对于回测的每个预测,将使用前 30 周进行交叉验证。交叉验证用于确定每次处理的批大小,并且调整算法超参数。

我们更新每周预测的模型,这意味着训练间隔和交叉验证间隔都向前移动以合并新数据。鉴于交叉验证的重要性,这个是非常值得关注的点。

交叉验证

该方法看起来像这样:

在这里插入图片描述

这里的关键是每一个回测部分(红色条形)前面都有一个交叉验证集(黄色条嵌套在绿色条中)。通过采用这种结构,我们(在对每个预测进行回测之前)试图了解算法在 30 周前的表现。

我们使用在此交叉验证期间收集的知识来调整模型超参数,并且以向前优化的方法进行参数调整。

我们使用什么交叉验证指标呢?

单独使用模型精度不会消减它,因为我们将使用模型的概率输出(所有 4 个投资组合文件在特定周内是最佳投资组合的可能性)。如果我们只关心模型对特定周的 “单个最佳投资组合” 的预测,那么模型准确性将是一个有效的交叉验证度量标准。

那么我们使用什么指标呢?我们将计算策略与基准之间的信息比率(IR)。我们用于进行单个预测的交叉验证过程如下所示:

(1)对于超参数的各种组合,我们测试 30 个向前优化;

(2)对于单个预测是长度为 4 的向量(每个投资组合是一个概率值),其中向量的每个元素是该投资组合是本周最佳投资组合的概率;

(3)由于这些概率总和是 100% ,我们将 4 个投资组合中所获得的概率值作为他们的设置权重值。例如:如果算法告诉我们一号投资组合有 20% 的机会成为本周最佳投资组合,我们将 0.2 权重分配给一号投资组合(仅限本周)。

(4)重复步骤(2)和(3),产生了一系列的“组合收益”;

(5)然后我们计算我们的投资组合和基准之间的 IR(交叉严重样本中的 30周)。对于特定的超参数组合,这成为我们的交叉验证度量。

通过对超参数的各种组合重复上述操作,我们选择产生最高 IR 的组合,并在我们的最终模型中使用该超参数组合来进行预测。

所以现在我们已经选择了最优的超参数,我们可以构建一个模型来生成长度为 4 的概率向量,并使用该向量来创建特定周的投资组合(作为回测的一部分)。但我们究竟需要怎么做呢?

投资大小

这里的挑战是我们采用概率向量(算法的输出),来替代权重向量(我们给每个投资组合的权重赋值)。

回想一下,在交叉验证期间,我们只需要设置权重向量=概率向量(步骤2和3)。如果我们对实际回测中的每一个预测都是这样做,那么我们对回测期的权重看起来像这样(每列是特定的一周):

在这里插入图片描述

注意每个投资组合的概率(权重)都是在 1/n (其中 n = 4)附近徘徊。这是一个问题,因为算法基本上告诉我们对每个投资组合都配置 25%(但是这个权重分配我们自己都可以做,所以要这个蛋疼的算法干嘛呢?)。

仔细观察之后,我们发现这些算法其实非常适合于选择一个每周最好的投资组合,但是算法从来没有为每周的最佳投资组合分配最高概率。

因此,为了将概率向量转换为权重向量,我们必须实现性能缩放。

性能缩放

所以这一切都在说 “如果算法在交叉验证期间表现良好,我们可以更加信任他,并且将概率权重倾向于算法的最佳投资组合”。在交叉验证期间表现的越好,我们就越倾向于 “最佳的投资组合”。如果它表现不佳,那么我们将最终权重向量缩放到等权重分配 [25%, 25%, 25%, 25%]。

在性能缩放之后,上面的权重看起来像这样:

在这里插入图片描述

因此,在我们采用算法的输出并且应用性能缩放之后,我们的每个预测周期的最终权重(如上图所示)都可以实现。

回测结构

我们采用各种算法所得到的累积回报如下:

在这里插入图片描述

MSCI SCWI(黑线)是我们的基准线。显示的算法是 Logistics 回归,XGBoost(XGB),支持向量机(SVM)和高斯过程(Gauss)。构建等权重(灰线)的投资组合,使得每周我们将为 4 个投资组合都分配 25% 的权重。

从某种意义上来讲,等权重投资组合也可以作为该项目的基准:如果算法都不能跑赢等权重的投资组合,那么使用该算法也是没有任何意义的。

表现最好的算法是 SVM。这是有道理的,因为我们使用的屙屎相对较小的数据集。下表总结了我们跟踪误差波动以及策略的信息比率:

在这里插入图片描述

SVM 算法在近 3 年的时间内实现了 0.5 的信息比,这是非常好的结果,虽然还不是很理想。

累积超额收益(SVM)

此图表显示 SVM 结果与基准测试的累积超额收益。如果红线上升,那么SVM的表现优于基准(反之亦然)。如果线条水平移动,则 SVM 与基准保持同步。

在这里插入图片描述

根据此图表,我们的策略受益于高波动期(2015年夏季,2016年春季,2018年春季),同时在平静时期(2017年全年)或多或少可以跟上基准。

与 Fama-French 3因子模型的对比

这里的相关问题是:我们是否能跑赢经典的 Fama-French 3 因子模型?我们可以尝试通过回归全局 3 因子模型(在多项式线性回归中)的策略回报来回答问题,并查看 alpha 是否为正。

在这里插入图片描述

从上图我们可以看到,alpha 的 t 值为 0.69。在以后,我们可以通过延长回测期来获得更好的结果。

与预先的规模和方差组合的比较

由于我们的策略基本上是试图计算规模和波动率因素,因此看看我们的策略如何针对以至于权重投资者与这两个因素的各种投资组合会有更加好的表现。

在这里插入图片描述

我们的策略(SVM)似乎在规模和波动率因素的各种组合中采取中庸策略。

这种比较可能有点不合适,因为这些预先的投资组合仅在美国股票上形成,但是我们的策略包括对外国股票的分配。

猜你喜欢

转载自blog.csdn.net/CoderPai/article/details/82835071
今日推荐