您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[中信期货]:期货多因子系列七:利用遗传规划挖掘商品期货截面因子 - 发现报告
当前位置:首页/其他报告/报告详情/

期货多因子系列七:利用遗传规划挖掘商品期货截面因子

2023-03-13周通中信期货别***
期货多因子系列七:利用遗传规划挖掘商品期货截面因子

中信期货研究|金融工程专题报告 2023-03-13 利用遗传规划挖掘商品期货截面因子 ——期货多因子系列七 投资咨询业务资格: 证监许可【2012】669号 中信期货商品数 报告要点 本文详细介绍了遗传规划算法的原理以及如何使用它进行因子挖掘。具体到实操流程上,我们使用到了Python中专门实现遗传规划的gplearn包进行代码实现。在对gplearn包进行修改优化后,我们以2016至2022年作为输入数据在商品期货上挖掘了5个具有较好选期能力的截面alpha因子,并回测了其在全样本上的表现。回测结果表明,遗传规划挖掘出的因子在样本内外均具备一定的有效性。 中信期货年期期货数中信期货300期货数 13 11 11 111 60 中信期货商品数 0 180 10 103 00600800100110103103 140 100 摘要: 本文利用遗传规划算法在商品期货上挖掘了5个具有较好选期能力的截面alpha因子,并回测了其在全样本上的表现。回测结果如下: Alpha1:年化收益:9.32%,年化波动:5.42%,夏普:1.72,最大回撤:4.15%,卡玛比率:2.25; Alpha2:年化收益:11.07%,年化波动:7.00%,夏普:1.58,最大回撤:6.05%,卡玛比率:1.83; Alpha3:年化收益:10.24%,年化波动:7.74%,夏普:1.32,最大回撤:9.86%,卡玛比率:1.05; Alpha4:年化收益:9.35%,年化波动:7.41%,夏普:1.26,最大回撤:8.16%,卡玛比率:1.15; Alpha5:年化收益:8.40%,年化波动:7.11%,夏普:1.18,最大回撤:9.00%,卡玛比率:0.93; 回测下来,由遗传规划算法挖掘出来的因子在样本内外均具备一定的有效性,表明利用遗传规划可以帮助我们归纳并总结出具有一定alpha能力的因子。 风险提示:本报告中所涉及的资产配比和模型应用仅为回溯举例,并不构成推荐建议。 金融工程研究团队 研究员:周通 010-80401733 从业资格号F3078183 投资咨询号Z0018055 重要提示:本报告难以设置访问权限,若给您造成不便,敬请谅解。我司不会因为关注、收到或阅读本报告内容而视相关人员为客户;市场有风险,投资需谨慎。 目录 摘要:1 一、因子挖掘方法论4 (一)遗传算法与遗传规划简介4 (二)适应度函数5 (三)公式树的进化方式5 1.杂交变异5 2.子树变异6 3.Hoist变异6 4.点变异7 (四)gplearn的使用与改进7 1.参数说明与设置7 2.gplearn的改进9 二、截面选期因子挖掘流程与结果10 (一)截面选期因子挖掘流程10 1.样本选择与回测细节10 2.使用gplearn进行因子挖掘11 (二)截面选期因子挖掘结果及整体回测结果12 (三)截面选期因子回测表现及简单归因13 1.Alpha1因子13 2.Alpha2因子14 3.Alpha3因子15 4.Alpha4因子16 5.Alpha5因子17 三、总结与思考18 四、附录20 图表目录 图表1: 遗传算法图解.................................................................. 4 图表2: 公式树图解.................................................................... 5 图表3: 杂交变异示意图................................................................. 6 图表4: 子树变异示意图................................................................. 6 图表5: Hoist变异示意图............................................................... 7 图表6: 点变异示意图.................................................................. 7 图表7: SymbolicTransformer参数说明与设置............................................. 8 图表8: 简单交叉验证示意图............................................................ 10 图表9: 商品品种选择................................................................. 11 图表10: Alpha因子挖掘结果........................................................... 12 图表11: Alpha因子回测结果(样本内)................................................. 12 图表12: Alpha因子回测结果(样本外)................................................. 12 图表13: Alpha因子回测结果(全样本)................................................. 12 图表14: Alpha1分层回测净值.......................................................... 13 图表15: Alpha1RankIC表现........................................................... 13 图表16: Alpha1多空组合净值.......................................................... 13 图表17: Alpha2分层回测净值.......................................................... 14 图表18: Alpha2RankIC表现........................................................... 14 图表19: Alpha2多空组合净值.......................................................... 14 图表20: Alpha3分层回测净值.......................................................... 15 图表21: Alpha3RankIC表现........................................................... 15 图表22: Alpha3多空组合净值.......................................................... 15 图表23: Alpha4分层回测净值.......................................................... 16 图表24: Alpha4RankIC表现........................................................... 16 图表25: Alpha4多空组合净值.......................................................... 16 图表26: Alpha5分层回测净值.......................................................... 17 图表27: Alpha5RankIC表现........................................................... 17 图表28: Alpha5多空组合净值.......................................................... 17 图表29: 算子函数集.................................................................. 20 一、因子挖掘方法论 在我们之前的期货多因子系列报告中,各类因子往往是基于一定的经济学逻辑或是历史经验人工构造出来的。如经典的截面动量因子,就是我们认为资产之间的相对强弱关系会延续(动量效应),那么依据“强者恒强,弱智恒弱”的逻辑我们就可以构造出动量因子。这样的构建因子的方式属于“先有逻辑,后有公式”的“演绎法”。在因子构建过程中,还有一种方式,即我们可以先通过机器学习的方法将大量的历史数据与收益率序列相拟合,生成海量因子,再从中归纳总结出背后的逻辑。这种方式就属于“先有公式,后有逻辑”的“归纳法”。 在“归纳法”法中,遗传规划作为一种仿生启发式算法,在我们对目标因子知之甚少的情况下可以帮助我们挖掘因子。它的优在于通过启发式的搜索,可以挖掘出人工难以构造、复杂的因子。本节我们将重点介绍遗传规划算法以及如何使用Python的gplearn包进行因子挖掘。 (一)遗传算法与遗传规划简介 遗传算法(GeneticAlgorithm)最初由美密歇根大学的J.Holland提出,是一种通过模拟自然界生物进化过程(“物竞天择、适者生存”)搜索最优解的算法,其本质上也是一种监督学习算法。对于一个最优化的问题,它借鉴了生物学中的现象(遗传、突变、杂交等)使一定数量的初始解按照适应度的方向进化为更优的解。进化过程从完全随机生成的个体种群开始,一代代进化。每一代中,会基于个体的适应度筛选出较优个体并在个体中发生变异、进化进而生成新的种群,新种群则继续进行迭代直至生成最优(适应度最高)种群。 图表1:遗传算法图解 资料来源:中信期货研究所 遗传规划/遗传编程(GeneticProgamming)是遗传算法中的一个分支,相较于遗传算法,它最大的不同在于将进化对象编码成树而不是简单的线性串。得益于此,遗传规划可以表达更为复杂的语义。下图简单展示了在遗传规划算法中 可以作为进化个体的公式树(𝑋2−𝑋2+𝑋1−0.999)。 01 图表2:公式树图解 资料来源:gplearn、中信期货研究所 我们沿着公式树从下往上即可还原整个公式,其中红色的节点表征函数,其他的粉红色叶子则表征变量和常数。在因子挖掘过程中,公式树也可以视作我们的因子表达式,所以公式树的进化过程实际上就是挖掘因子。 (二)适应度函数 适应度函数用来计算每一代种群中个体的适应度,适应度则衡量了个体与最终的目标个体的相符程度。每一代进化过程中,只保留适应度较高的个体作为后续进化的种群,适应度较低的个体则被淘汰。从因子挖掘的角度来说,我们可以使用用来评判因子有效程度的标做为个体适应度,如使用因子的RankIC、RankICIR可以挖掘与未来收益率相关程度较高的线性因子;互信息(Mutualinformation)可以用来挖掘与识别非线性的因子;或是直接使用因子回测后的夏普率(sharperatio)作为适应度。 (三)公式树的进化方式 1.杂交变异 杂交变异是遗传规化中的主要变异方式,是将两个个体中的遗传物质进行混合交换。在公式树进化过程中,杂交变异需要选择两个种群,其中一个种群中的最高适应度个体作为“父代”,从“父代”中随机挑选一个子树以待替换;并从另一个种群中随机挑选一个个体作为“捐赠者