研报下载就选股票报告网
您好,欢迎来到股票分析报告网!登录   忘记密码   注册
>> 中信期货-期货多因子专题报告(六):基于深度学习的期货组合优化-221229
上传日期:   2022/12/29 大小:   1339KB
格式:   pdf  共14页 来源:   中信期货
评级:   -- 作者:   周通
下载权限:   无限制-登录即可下载
多因子策略是量化投研领域的经典策略之一,其在多类别金融市场均受到长时间的研究与应用;而无论何种市场,标的资产池的权重配置在多因子模型中扮演了“决定策略收益稳健性”的重要角色。因此,组合权重优化是多因子模型的一个重要课题。
  聚焦到期货市场,经典的多因子研究包括alpha因子的挖掘和期货组合权重优化计算。市面常见的逻辑认为:任意期货都同时暴露于多种不同的风险因素下,这些风险因素的共同作用形成了期货合约价格的波动;通过对不同的风险因素以alpha因子的形式来有效刻画,我们可以实现对期货收益率的分解,从而研究期货合约价格波动的原因;此外,最优的投资组合则应当是经过“剔除其余不稳定的因素干扰、充分暴露于alpha因子、并一般通过凸优化方法将对收益率的预测转化为组合权重”等这样若干步处理后的结果;这些步骤中也涉及到一些针对于组合权重的约束条件的设置。而本报告区别于上述经典逻辑,尝试了基于深度学习的组合优化方法。
  本文以期货市场及其量价多因子为基础,将以“组合优化”为目标的凸优化与神经网络结合起来,构建了完整的期货组合量化投资框架。这里的“输入”是期货合约的基础行情数据,通过“构造若干量价因子、神经网络进行量价多因子的提取与合成、可分凸优化层传播梯度来优化期货组合权重、定义期货组合的收益率为损失度(目标)函数、以该损失度来优化整个神经网络等”来生成日频的期货组合权重,此即为“输出”。
  在合理的参数配置中,模型均能获得较好的收益表现。如每日调仓时,年化收益率约为18%、年化波动率约为5%、夏普率3.49。
  风险提示:本报告中所涉及的资产配比和模型应用仅为回溯举例,并不构成推荐建议。
研究报告全文:中信期货研究金融工程专题报告2022-12-29基于深度学习的期货组合优化投资咨询业务资格证监许可2012669号期货多因子专题报告六报告要点本篇报告将以组合优化为目标的凸优化方法与神经网络结合起来构建了完整的期货组合量化投资框架我们利用该框架回测部分期货市场的若干量价类因子获得了较好的组合收益表现摘要金融工程研究团队多因子策略是量化投研领域的经典策略之一其在多类别金融市场均受到长时间研究员周通的研究与应用而无论何种市场标的资产池的权重配置在多因子模型中扮演了决021-80401733zhoutongciticsfcom定策略收益稳健性的重要角色因此组合权重优化是多因子模型的一个重要课题从业资格号F3078183投资咨询号Z0018055聚焦到期货市场经典的多因子研究包括alpha因子的挖掘和期货组合权重优化计算市面常见的逻辑认为任意期货都同时暴露于多种不同的风险因素下这些风期货多因子系列研究报险因素的共同作用形成了期货合约价格的波动通过对不同的风险因素以alpha因子告的形式来有效刻画我们可以实现对期货收益率的分解从而研究期货合约价格波动专题报告四商品期货alpha因子拾遗20220923的原因此外最优的投资组合则应当是经过剔除其余不稳定的因素干扰充分暴专题报告五不同频率视角下的选露于alpha因子并一般通过凸优化方法将对收益率的预测转化为组合权重等这样期因子20221222若干步处理后的结果这些步骤中也涉及到一些针对于组合权重的约束条件的设置而本报告区别于上述经典逻辑尝试了基于深度学习的组合优化方法本文以期货市场及其量价多因子为基础将以组合优化为目标的凸优化与神经网络结合起来构建了完整的期货组合量化投资框架这里的输入是期货合约的基础行情数据通过构造若干量价因子神经网络进行量价多因子的提取与合成可分凸优化层传播梯度来优化期货组合权重定义期货组合的收益率为损失度目标函数以该损失度来优化整个神经网络等来生成日频的期货组合权重此即为输出在合理的参数配置中模型均能获得较好的收益表现如每日调仓时年化收益率约为18年化波动率约为5夏普率349风险提示本报告中所涉及的资产配比和模型应用仅为回溯举例并不构成推荐建议重要提示本报告难以设置访问权限若给您造成不便敬请谅解我司不会因为关注收到或阅读本报告内容而视相关人员为客户市场有风险投资需谨慎中信期货研究金融工程专题报告目录摘要1一问题背景3二模型搭建设置与说明3一收盘价收益率及因子数据4二数据解析以适当的格式存取数据4三等权合成多因子的分层回测5四深度学习常用函数的准备61类ARGS62类MyDatasetDataset63各类型数据载入函数7五神经网络层的准备7六训练方式的构造8七循环退出早停模型保存10八测试预测权重10九回测12三总结13图表目录图表1商品期货及金融期货品种选择4图表2不同数据解析方式效能对比5图表3基于等权方式合成多因子回测净值曲线6图表4量价相关性因子的回测统计6图表5五层的神经网络输入层输出层三个隐含层7图表6cvxpylayers凸优化问题与神经网络经典框架PyTorch的结合8图表7针对铆定日期-第400日的训练-验证效果IC值与得分即损失度的相反数11图表8针对铆定日期-第600日的训练-验证效果IC值与得分即损失度的相反数11图表9针对铆定日期-第1000日的训练-验证效果IC值与得分即损失度的相反数11图表10针对铆定日期-第1100日的训练-验证效果IC值与得分即损失度的相反数11图表11测试集上经深度学习训练得到的连续3个交易日期货品种权重12图表12每日调仓win1的回测结果12图表13调仓频率win2时的回测结果13图表14量价相关性因子的回测统计13请务必阅读正文之后的免责声明214中信期货研究金融工程专题报告一问题背景多因子策略是量化投研领域的经典策略之一其在多类别金融市场均受到长时间的研究与应用而无论何种市场标的资产池的权重配置在多因子模型中扮演了决定策略收益稳健性的重要角色因此组合权重优化是多因子模型的一个重要课题聚焦到期货市场经典的多因子研究包括alpha因子的挖掘和期货组合权重优化计算市面常见的逻辑认为任意期货都同时暴露于多种不同的风险因素下这些风险因素的共同作用形成了期货合约价格的波动通过对不同的风险因素以alpha因子的形式有效刻画我们可以实现对期货收益率的分解从而研究期货合约价格波动的原因而最优的投资组合则是应当是经过剔除其余不稳定的因素干扰充分暴露于alpha因子并一般通过凸优化方法将对收益率的预测转化为组合权重等这样若干步处理后的结果这些步骤中也涉及到一些针对于组合权重的约束条件的设置而本报告尝试了区别于上述经典逻辑的新方法总体思路基于深度学习的组合优化本文以期货市场及其量价多因子为基础将以组合优化为目标的凸优化与神经网络结合起来构建了完整的期货组合量化投资框架这里的输入是期货合约的基础行情数据通过构造若干量价因子神经网络进行量价多因子的提取与合成可分凸优化层传播梯度来优化期货组合权重定义期货组合的收益率为损失度目标函数以该损失度来优化整个神经网络等来生成日频的期货组合权重此即为输出二模型搭建设置与说明经典组合优化中常见的组合权重的生成方式包括风险预算模型rankIC加权由Barra风险暴露衍生的因子收益率加权等本报告将要探讨的凸优化方法与神经网络训练结合的方式与这些经典的权重生成方法有较大的差异因此本节将详尽的介绍中间步骤包括底层资产数据及考虑的量价类因子介绍由存取数据衍生的数据解析方法汇总基础的等权多因子分层回测常用函数的定义神经网络层的设计训练方式的构造循环-退出早退-模型保存等机制的定义模型测试及回测等请务必阅读正文之后的免责声明314中信期货研究金融工程专题报告一收盘价收益率及因子数据这里的底层标的资产样本池为29个不同商品金融期货主力合约样本区间为自2015年12月24日至2022年11月28日的1600多个交易日图表1商品期货及金融期货品种选择表头表头黑色类玻璃FG热轧卷板HC铁矿石I焦炭J焦煤JM螺纹钢RB有色类沪铝AL沪铜CU沪锌ZN能源类石油沥青BU化工类聚乙烯L甲醇MA聚丙烯PP聚氯乙烯VPTATA软商品类棉花CF天然橡胶RU白糖SR农产品类豆一A玉米C玉米淀粉CS鸡蛋JD豆粕M菜油OI棕榈油P菜粕RM豆油Y金融沪深300指数期货IF5年期国债期货TF资料来源中信期货研究所因子层面本篇报告仅考虑量价类的6个因子分别是3日动量momd3243日动量momd24310日动量momd10243日最小二乘回归olsd2435日量价相关性cvd5和61日振幅ampd61g4其相应的因子构造逻辑可参见本团队之前的相关研报二数据解析以适当的格式存取数据商品期货和金融期货数据本身以及基于其行情类数据构造得到的量价类因子数据有其自身的特点其中之一则是由于不同期货合约上市日期不同以及量价类因子不同的回看期造成了大量空值的出现对于此类型数据直接的方法涉及稀疏矩阵的存取在数值分析中稀疏矩阵是指其元素大部分为零的矩阵反之如果大部分元素都非零则这个矩阵是稠密的在科学与工程领域中求解线性模型时经常出现大型的稀疏矩阵由于过大的尺寸标准的算法经常无法操作这些稀疏矩阵因此在使用计算机存储和操作稀疏矩阵时经常需要修改标准算法以利用矩阵的稀疏结构由于其自身的稀疏特性通过压缩可以大大节省稀疏矩阵的内存代价具体落实到我们这里体现为商品期货和金融期货数据本身以及基于其行情类数据构造得到的量价类因子数据数据总体非常大而我们基于单个项目需求发起的研究通常是与数据总体的一个非常小的子集进行交互这就导致了极大的请务必阅读正文之后的免责声明414中信期货研究金融工程专题报告稀疏性当处理稀疏矩阵时将它们存储为一个完整的矩阵从这里开始称为稠密矩阵是非常低效的这是因为一个完整的数组为每个条目占用一块内存所以一个nxm数组需要nxm块内存从简单的逻辑角度来看存储这么多零是没有意义的在python中稀疏数据结构在scipy中得到了有效的实现具体包含7类稀疏矩阵如cscmatrixbsrmatrix等实现背后的思想很简单我们不将所有值存储在稠密矩阵中而是以某种格式存储非零值例如使用它们的行和列索引另一种则是简单的数据预处理后再进行数据解析即将一种数据格式转换为另一种可读格式这个操作的出发点是由于训练时需要反复读取数据所花费的时间会比较大因此我们可以选择最合适的方式将其存到本地便于之后训练时的多次调用这里我们对常用的数据解析方法做了一下对比如下表所示注这里使用的机器是2GHz四核处理器及其上安装的python388和spyder425图表2不同数据解析方式效能对比方法文件格式大小写入耗时ms读取耗时ms类型处理形状处理npsavenpy23MB324160否否h5pyFilehdf523MB069085否否gfgsavetxttxt75MB1888016174否是pickledumppkl23MB127136否否tofilebin23MB265270是是资料来源同花顺iFind中信期货研究所从上表我们可以看到hdf5文件的读写相对较快其次是pkl文件再次是npy和bin这两种格式的文件而txt则明显耗时较多空间占用角度前四者没有显著差异而后者txt比较占空间不推荐使用此外我们也注意到bin和txt格式在存储读取过程中对于类型形状处理的要求综上基于我们这里考虑的这份1683个交易日29个商品金融期货主力合约6个量价因子的数据样本而言最优的格式我们推荐hdf5npy和pkl我们得到的这个结论符合对于上述5种格式效能的一般认知当然随着数据量的增大也可进一步做出更鲜明的区分那么下文中具体使用到的格式为h5py文件第一次导入数据后在一段时间内会于缓存中保存这时候再次导入会很快所以在训练神经网络时除了第一个epoch运行较慢外后面读取的速度都会较第一次有所提升三等权合成多因子的分层回测这里我们先给出基于等权方式合成多因子的经典分层回测结果如下图所示请务必阅读正文之后的免责声明514中信期货研究金融工程专题报告图表3基于等权方式合成多因子回测净值曲线资料来源同花顺iFind中信期货研究所上述回测净值曲线对应的净值分析如下图表4量价相关性因子的回测统计平滑窗口年化收益率年化波动率夏普率最大回撤卡玛第一层12231271022096013第二层9531261025076013第三层714135022053013第四层897127802107013第五层11261297025087013高-低-057546011-01005资料来源同花顺iFind中信期货研究所四深度学习常用函数的准备1类ARGS类的构造函数用于初始化类的内部状态为类的属性设置默认的值2类MyDatasetDatasetDataset自torchutilsdata导入torchutilsdataDataset是代表自定义数据集方法的类用户可以通过继承该类来自定义自己的数据集类在继承时要求用户重载len和getitem这两个方法llen返回的是数据集的大小我们构建的数据集是一个对象而数据集不像序列类型列表元组字符串那样可以直接用len来获取序列的长度该方法len的目的就是方便像序列那样直接获取对象的长度如果A是一个类a是类A的实例化对象当A中定义了该方法lenlena则返回对象的大小请务必阅读正文之后的免责声明614中信期货研究金融工程专题报告lgetitem实现索引数据集中的某一个数据我们知道序列可以通过索引的方法获取序列中任意元素getitem则实现了能够通过索引的方法获取对象中任意元素此外我们可以在getitem中实现数据预处理3各类型数据载入函数五神经网络层的准备这里我们使用了一个五层的神经网络头部输入层尾部输出层和中间的三个隐含层具体细节如下图表5五层的神经网络输入层输出层三个隐含层资料来源中信期货研究所httpalexlenailmeNN-SVGindexhtml第一层输入层第二层全连接层fc1之后使用rectification之一ReLU第三层全连接层fc2之后使用rectification之一Tanh第四层cvxpyLayer层使用前需把第三层的输出拉成一维使用时两种选择SparseMaxLayer从添加新层的角度来看后续的拓展方向之一是考虑不同的均方误差计算方式从而来构造新的神经网络层第五层输出层值得一提的是我们这里使用到了凸优化层cvxpylayers简要来讲它是一个python库在CVXPY的基础上整合了PyTorchJAX和TensorFlow的接口便于用户在构造神经网络时来调用这些框架里的层以及建立可分的凸优化层具体而言cvxpylayers始见于2019年第33届NeurIPS会议的论文DifferentiableconvexoptimizationlayersStephenBoyd等作者针对更一般化的凸优化问请务必阅读正文之后的免责声明714中信期货研究金融工程专题报告题提出了可分凸优化层cvxpylayers作者引入了规范凸规划Disciplinedconvexprogramming的一类子问题规范参数化规划Disciplinedparametrizedprogramming然后表明每一个规范参数化项目可以表征为仿射-求解器-仿射的模式Affine-Solver-Affine其中的第一个仿射是从模型参数到求解问题所涉及数据的仿射映射第二个仿射则是从求解器的解到原问题的解的的仿射映射这样的构造使得求导变得可能使我们不仅能用凸优化的方法完成优化还能求出凸优化输出值对模型中带优化参数的梯度以便神经网络进行梯度反向传播图表6cvxpylayers凸优化问题与神经网络经典框架PyTorch的结合资料来源中信期货研究所httpsgithubcomcvxgrpcvxpylayers六训练方式的构造考虑到总的时间序列长度为1683个交易日我们这里的训练-验证集的选取及神经网络训练效果的呈现方式原则如下1最外层for循环设置从第400个交易日到第1300个交易日滚动式地每隔100个交易日的进行一次循环总共10次以此来客观输出训练效果2for循环中数据载入对每一次循环每隔100个交易日我们以使用enddate铆定时间点回看lookback200确定时间序列长度的方式来提取因子和收益率的子集然后将这lookback200个因子子集和收益率子集分别拼装成200个交易日29个商品金融期货品种6个量价因子的本轮循环因子表和200个交易日29个商品金融期货品种1列收益率的本轮循环收益率表3关于训练集与验证集的划分区别于机器学习中经典的80-20划分我们这里使用了更个性化的截取具体而言对于每一次for循环中重新载入的本轮循环因子表和本轮循环收益率表我们分别取其前2900条数据10029个商品金融期货作为本轮循环因子表的训练集和本轮循环收益率表的训练集接着我们再选自第3509条1002129个商品金融期货开始至最末的数请务必阅读正文之后的免责声明814中信期货研究金融工程专题报告据作为本轮循环因子表的验证集和本轮循环收益率表的验证集注意这里的100和21都是技术性数字可以根据自己的研究需要进行调整原则是训练集和验证集的数据互不相交4经典训练步骤的沿用在用pytorch训练模型时我们在遍历epochs的过程中采用了经典神经网络训练三步走的方式即依次使用了optimizerzerogradlossbackward和optimizerstep三个函数简要来讲这三个函数的作用是先将梯度归零optimizerzerograd然后反向传播计算得到每个参数的梯度值lossbackward最后通过梯度下降执行一步参数更新optimizersteploptimizerzerograd鉴于训练过程较常用到mini-batch方法这一操作的目的是在反向传播和梯度下降之前清除与上一个batch数据相关的梯度该函数会遍历模型的所有参数通过pgraddetach方法截断反向传播的梯度流再通过pgradzero函数将每个参数的梯度值设为0即上一次的梯度记录被清空llossbackwardPyTorch的反向传播即tensorbackward是通过autograd包来实现的autograd包会根据tensor进行过的数学运算来自动计算其对应的梯度具体地说损失函数loss是由模型的所有权重w经过一系列运算得到的若某个w的requiresgrads为True则w的所有上层参数后面层的权重w的gradfn属性中就保存了对应的运算然后在使用lossbackward后会一层层的反向传播计算每个w的梯度值并保存到该w的grad属性中如果没有进行tensorbackward的话梯度值将会是None因此lossbackward要写在optimizerstep之前loptimizerstepstep函数的作用是执行一次优化步骤通过梯度下降法来更新参数的值因为梯度下降是基于梯度的所以在执行optimizerstep函数前应先执行lossbackward函数来计算梯度应当区分的是optimizer只负责通过梯度下降进行优化而不负责产生梯度梯度是tensorbackward方法产生的5损失度函数loss的定义-11收益率本轮训练所得权重成本其中成本1-累计训练所得权重-上一次训练训练成本率而累计训练所得权重则有若干轮历史训练所得权重按交易日期拼接而成该损失度函数定义的目的是最大化总收益注意后文中我们也将这里定义的损失度函数loss取负值负负得正命名为训练验证的得分注这里的成本率我们设置为请务必阅读正文之后的免责声明914中信期货研究金融工程专题报告千分之三七循环退出早停模型保存我们这里来声明相应的一些机制设置其中1总的训练步数nepochs50warmup轮热身设置为52初始化l停止时运行所至步数最优得分所对应步数皆初始化为0l最优得分初始化为-npinf3如果前warmup轮验证集分数一直在下降则退出重新初始化后再训练4如果是最后一次retry则不退出并完成训练5如果验证得分最优得分且训练步数warmup轮数则将验证得分赋值给最优得分当前步数复制给最优得分所对应步数保存该模型以便于回测时调用同时早停标识符stopsteps赋值06如果上一步的条件不满足则早停标识符stopsteps加1如果早停标识符大于训练容忍度patience则早停结束训练实际操作中我们这里训练容忍度设置为107期货品种每日最大权重上限设置为0075八测试预测权重对于上述训练-验证得到的最优模型我们这里进行测试下图是神经网络循环训练-验证过程中的得分损失度的相反数与IC值的对比请务必阅读正文之后的免责声明1014中信期货研究金融工程专题报告图表7针对铆定日期-第400日的训练-验证效果IC值与图表8针对铆定日期-第600日的训练-验证效果IC值与得分即损失度的相反数得分即损失度的相反数资料来源同花顺iFind中信期货研究所资料来源同花顺iFind中信期货研究所图表9针对铆定日期-第1000日的训练-验证效果IC值与图表10针对铆定日期-第1100日的训练-验证效果IC值得分即损失度的相反数与得分即损失度的相反数资料来源同花顺iFind中信期货研究所资料来源同花顺iFind中信期货研究所下图是测试集上所得的关于全体入选期货品种每日权重的部分示意图请务必阅读正文之后的免责声明1114中信期货研究金融工程专题报告图表11测试集上经深度学习训练得到的连续3个交易日期货品种权重资料来源同花顺iFind中信期货研究所九回测我们这里对整个区间进行回测除了前面已经提到的29个期货主力合约6个量价类因子2015年12月到2022年12月的回测区间我们再实际回测中还考虑到了了调仓频率win的概念目的是为了对经神经网络训练得到的权重这样一个时间序列进行平滑以消除极个别特殊现象对整体趋势的影响图表12每日调仓win1的回测结果资料来源同花顺iFind中信期货研究所请务必阅读正文之后的免责声明1214中信期货研究金融工程专题报告图表13调仓频率win2时的回测结果资料来源同花顺iFind中信期货研究所图表14量价相关性因子的回测统计平滑窗口年化收益率年化波动率夏普率最大回撤卡玛win11841527349-011167win2756532142-008095win337453507-01037win5375529071-007054win10297522057-013023win20465499093-008057资料来源同花顺iFind中信期货研究所三总结本篇报告以期货市场及其量价多因子为基础将以组合优化为目标的凸优化与神经网络结合起来构建了完整的期货组合量化投资框架这里的输入是期货合约的基础行情数据通过构造若干量价因子神经网络进行量价多因子的提取与合成可分凸优化层传播梯度来优化期货组合权重定义期货组合的收益率为损失度目标函数以该损失度来优化整个神经网络等来生成日频的期货组合权重此即为输出在合理的参数配置中模型均能获得较好的收益表现如每日调仓时年化收益率约为18年化波动率约为5夏普率349请务必阅读正文之后的免责声明1314中信期货研究金融工程专题报告免责声明除非另有说明中信期货有限公司拥有本报告的版权和或其他相关知识产权未经中信期货有限公司事先书面许可任何单位或个人不得以任何方式复制转载引用刊登发表发行修改翻译此报告的全部或部分材料内容除非另有说明本报告中使用的所有商标服务标记及标记均为中信期货有限公司所有或经合法授权被许可使用的商标服务标记及标记未经中信期货有限公司或商标所有权人的书面许可任何单位或个人不得使用该商标服务标记及标记如果在任何国家或地区管辖范围内本报告内容或其适用与任何政府机构监管机构自律组织或者清算机构的法律规则或规定内容相抵触或者中信期货有限公司未被授权在当地提供这种信息或服务那么本报告的内容并不意图提供给这些地区的个人或组织任何个人或组织也不得在当地查看或使用本报告本报告所载的内容并非适用于所有国家或地区或者适用于所有人此报告所载的全部内容仅作参考之用此报告的内容不构成对任何人的投资建议且中信期货有限公司不会因接收人收到此报告而视其为客户尽管本报告中所包含的信息是我们于发布之时从我们认为可靠的渠道获得但中信期货有限公司对于本报告所载的信息观点以及数据的准确性可靠性时效性以及完整性不作任何明确或隐含的保证因此任何人不得对本报告所载的信息观点以及数据的准确性可靠性时效性及完整性产生任何依赖且中信期货有限公司不对因使用此报告及所载材料而造成的损失承担任何责任本报告不应取代个人的独立判断本报告仅反映编写人的不同设想见解及分析方法本报告所载的观点并不代表中信期货有限公司或任何其附属或联营公司的立场此报告中所指的投资及服务可能不适合阁下我们建议阁下如有任何疑问应咨询独立投资顾问此报告不构成任何投资法律会计或税务建议且不担保任何投资及策略适合阁下此报告并不构成中信期货有限公司给予阁下的任何私人咨询建议深圳总部地址深圳市福田区中心三路8号卓越时代广场二期北座13层1301-130514层邮编518048电话400-990-8826传真075583241191网址httpwwwciticsfcom请务必阅读正文之后的免责声明1414
 
Copyright © 2005 - 2021 Nxny.com All Rights Reserved 备案号:蜀ICP备15031742号-1