作者: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)似乎在规模和波动率因素的各种组合中采取中庸策略。

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

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

  1. 谈谈机器学习AI模型测试与评估方法分析

    随着数字化转型与人工智能发展,AI应用软件层出不穷,人们虽然理解人工智能趋势,但是,企业往往很难接受这样AI应用软件,其中质疑点主要有: 预测或识别的准确性 模型相关性 鲁棒性 安全性 数据隐私 性能 ...

  2. GWAS分析中SNP解释百分比PVE | 第四篇,MLM模型中如何手动计算PVE?

    系列部分: GWAS分析中SNP解释百分比PVE | 第一篇,SNP解释百分比之和为何大于1? GWAS分析中SNP解释百分比PVE | 第二篇,GLM模型中如何计算PVE? GWAS分析中SNP解释 ...

  3. 第四篇[机器学习] 机器学习,线性回归的优化

    当我们的数据存在多重共线性时,即其中的一个自变量可以用其他一个或几个自变量的线性表达式进行表示,你会发现,拟合之后的方差会特别大 一般说来当解释变量的容忍度(TOLERANCE)小于0.10或者方差膨 ...

  4. 如何高效运作机器学习团队(机器学习入门第四篇)

    本文是机器学习入门教程的第四篇,前三篇分别是: 1.机器学习能为你的业务做什么?有些事情你肯定猜不到 2.关于机器学习算法 你需要了解的东西 3.如何开发机器学习模型? 我们已经讨论了开发机器学习模型 ...

  5. 四篇NeurIPS 2019论文,快手特效中的模型压缩了解一下

    在即将过去的 2019 年中,快手西雅图实验室在 ICLR.CVPR.AISTATS.ICML 和 NeurIPS 等顶会上发表了十多篇论文. 除了这些研究方面的成果,针对实际业务,西雅图实验室和快手 ...

  6. 第七十四篇:机器学习优化方法及超参数设置综述

    第七十四篇:机器学习优化方法及超参数设置综述 置顶 2019-08-25 23:03:44 廖佳才 阅读数 207更多 分类专栏: 深度学习 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-S ...

  7. android 测试工具,Android开源项目第四篇:开发及测试工具篇

    本文为那些不错的Android开源项目第四篇--开发工具篇,**主要介绍Android开发工具和测试工具相关的开源项目**. Android开源项目系列汇总已完成,包括: 1.Buck faceboo ...

  8. [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel

    [Qt教程] 第24篇 数据库(四)SQL查询模型QSqlQueryModel 楼主  发表于 2013-5-21 14:33:47 | 查看: 869| 回复: 1 SQL查询模型QSqlQuery ...

  9. CCNA-第四篇-OSI模型-下

    CCNA-第四篇-OSI模型-下 这里先来说一下上一期的问题 来一个小问题 当你访问百度的时候,你的最初的目的MAC是谁? 1.二层交换机(接入) 2.出口设备GW(路由器) 3.运营商 TAG:这是 ...

  10. 吴恩达《机器学习》学习笔记十四——应用机器学习的建议实现一个机器学习模型的改进

    吴恩达<机器学习>学习笔记十四--应用机器学习的建议实现一个机器学习模型的改进 一.任务介绍 二.代码实现 1.准备数据 2.代价函数 3.梯度计算 4.带有正则化的代价函数和梯度计算 5 ...

最新文章

  1. rsync同步服务实验讲解
  2. 图像处理中常用数学知识
  3. PHP实例——获取文件的绝对路径
  4. window.onload和3的小游戏
  5. 光纤收发器的分类介绍
  6. 雷军1994年写的老代码曝光,被称像诗一样优雅
  7. WCF开发中遇到的问题及解决系列(一):运行WCF客户端时碰到错误“AddressAlreadyInUseException”...
  8. 设置电脑的双显示器模式
  9. android连接服务器代码实例,Android客户端连接服务器端,向服务器端发送请求HttpURLConnection(示例代码)...
  10. win10怎么共享打印机_win10怎么连接局域网打印机
  11. android拦截返回键home键,android屏蔽返回键跟Home键
  12. 平行时代的平行智能体系(王飞跃)
  13. 有华为的HCIP证书会更好找工作吗?
  14. 2021-07-27-
  15. 2K和XP下的CMD命令
  16. 使用canal1.1.5让MySQL5.7同步到ES7.x
  17. JS中事件的绑定和解绑
  18. C语言——运算符优先级
  19. 面包师问题--linux实现
  20. QQ邮箱 接受 天气查询 阿里云自动运行学习记录

热门文章

  1. 手把手教你使用YOLOV5训练自己的目标检测模型-口罩检测-视频教程
  2. 现金流量表编制(经典总结)
  3. [转帖]2.0&TBC 术士常用宏+宏答疑
  4. 【小程序入门】注册AppID为开发做准备
  5. 5分绩点转4分_5分绩点转4分
  6. 6章4节类的声明和对象与方法
  7. 2021版小新Pro14 Ubuntu 20.04 配置指南
  8. 浅聊智能推荐下的人物画像
  9. 轻量级openpose解析
  10. cordova media插件