【宽客研报】渤海证券:使用随机森林算法的行业轮动模型
使用随机森林算法的行业轮动模型核心观点:1、 长久以来,选股与择时都是量化金融领域面对的两个最主要的问题。多因子模型是在量化选股中最常用的模型,在之前的报告中,我们详细介绍了这一模型。然而2017 年以来,市场分化逐渐显著,靠选股获得 alpha收益的难度越来越大。这时,我们就需要依靠择时模型来减小规避系统性风险,减小策略回撤。2、 随机森林算法是一种机器学习分类算法。它通过训练样本生成大量决策树,综合所有决策树的分类结果得到最终决策。相比于其他机器学习算法和传统线性回归模型,随机森林算法具有直观,参数少,抗干扰,不易出现过拟合等优点。将随机森林算法引入择时模型,可以减少主观判断对于择时结果的影响,挖掘市场更深层次的运行规律。3、 将 28 个申万行业指数作为择时标的,提取 41 个有效因子,以 2010-2016年数据为样本集,2017 年-2018 年数据组为验证集,建立择时模型。模型平均准确率 54.48%,2017 年至今平均超额收益 15.03%,平均择时净值 1.07,平均减少最大回撤 11.73%。在 28 个行业中,有 25 个行业的择时结果强于指数,取得超额收益的概率高达 89%。2017 年至今,市场呈现较为明显的分化局势,仅 7 个行业收益为正,21 个行业都有不同程度下跌。择时后,收益为正的行业增加至 20 个,且剩余 8 个收益为负的行业净值相比不择时的情况都有了大幅提升。4、 根据择时结果,可建立行业轮动模型,每周调仓。在大部分行业普遍回调的情况下,模型依然取得了正收益。最终轮动模型年化收益 4.4%,超出上证综指 5.7%;最大回撤 10.7%,小于上证综指的 14.6%。5、 在未来,我们还计划陆续推出行业内的多因子选股模型。该模型和行业内选股模型相结合,可以达到自上而下择时选股一体的优化结果,得到更灵活、更细致、更有针对性的量化模型。6、 风险提示:随着市场环境变化,模型存在失效风险。目 录1.概述2.随机森林算法理论介绍【宽客之家】
2.1 决策树
2.2 集成方法
2.3 随机森林算法
3. 行业轮动模型的建立与运行结果
3.1 因子提取
3.2 模型建立
3.3 择时结果
3.4 行业轮动模型
4.总结与未来研究方向展望表目录
表 1:因子列表与释义
表 2:分行业择时结果
图目录
图 1:决策树技术面择时示意图
图 2:随机森林算法示意图
图 3: 农林牧渔行业择时结果
图 4:采掘行业择时结果
图 5: 化工行业择时结果
图 6:钢铁行业择时结果
图 7: 有色金属行业择时结果
图 8:电子行业择时结果
图 9: 家用电器行业择时结果
图 10:食品饮料行业择时结果
图 11:纺织服装行业择时结果
图 12:轻工制造行业择时结果
图 13:医药生物行业择时结果
图 14:公用事业行业择时结果
图 15: 交通运输行业择时结果
图 16:房地产行业择时结果
图 17:商业贸易行业择时结果
图 18:休闲服务行业择时结果
图 19: 综合行业择时结果
图 20:建筑材料行业择时结果
图 21: 建筑装饰行业择时结果
图 22:电气设备行业择时结果
图 23: 国防军工行业择时结果
图 24:计算机行业择时结果
图 25: 传媒行业择时结果
图 26:通信行业择时结果
图 27: 银行行业择时结果
图 28:非银金融行业择时结果
图 29: 汽车行业择时结果
图 30:机械设备行业择时结果
图 31:行业轮动模型收益1.概述长久以来,选股与择时都是股票量化领域面对的两个最主要的问题。多因子模型是在量化选股中最常用的模型,在之前的报告中,我们详细介绍了这一模型。然而 2017 年以来,市场分化逐渐显著,靠选股获得 alpha 收益的难度越来越大。这时,我们就需要依靠择时模型来规避系统性风险。有效的择时策略可以平滑收益曲线,减小策略回撤。相比与完全对冲策略而言,择时策略不需要承担高额的对冲成本,是性价比更高的选择。随机森林算法是一种机器学习分类算法。它通过训练样本生成大量决策树,综合所有决策树的分类结果得到最终决策。相比于其他机器学习算法和传统线性回归模型,随机森林算法具有直观,参数少,抗干扰,不易出现过拟合等优点。将随机森林算法引入择时模型,可以减少主观判断对于择时结果的影响,挖掘市场更深层次的运行规律。理论上讲,择时模型可以应用于任何股票,甚至其他种类的资产。但考虑到单支股票走势受较多突发新闻与人为因素影响,我们在这里选择使用 28 个申万行业指数作为择时标的,组成行业轮动模型。这样选择的另一个原因是,在未来,我们还计划陆续推出行业内的多因子选股模型。该模型和行业内选股模型相结合,可以达到自上而下择时选股一体的优化结果,得到更灵活、更细致、更有针对性的量化模型。2.随机森林算法理论介绍2.1 决策树决策树方法最早产生于 20 世纪 60 年代,由 Hunt 等人提出。70 年代末,Quinlan
提出 ID3 算法,引进信息论中的有关思想,提出用信息增益(information gain)
作为特征判别能力的度量,并采用迭代算法进行建模。1984 年 Breiman 等人提出CART 算法,CART 是一种典型的二叉决策树算法,既可以做分类,也可以做回归,应用十分广泛。1993 年 Quinlan 以 ID3 算法为基础提出 C4.5 算法,新算法在缺失值处理、剪枝技术、派生规则等方面做了较大改进,C5.0 是 C4.5 的商业改进版。C5.0 和 CART 是目前较为广泛使用的决策树算法。决策树算法的构建核心是归纳算法。建模之初,全部数据组成一个节点,称为根节点,根据数据特征,选取最优的划分条件,将数据分成两个或多个纯度更大的数据子集,依次递推,直到满足预先设定的某个条件后停止。其最终结果看上去像一棵倒长的树,这也是算法名的来源。决策树的建立步骤如下:
[*]特征选择:从训练数据的特征中选择一个特征作为当前节点的分裂标准(特征选择的标准不同产生了不同的特征决策树算法)。
[*]决策树生成:根据所选特征评估标准,从上至下递归地生成子节点,直到数据集不可分则停止决策树停止生成。
[*]剪枝:决策树容易过拟合,需要剪枝来缩小树的结构和规模(包括预剪枝和后剪枝)。
根据不同的算法,衡量节点不纯度的指标包括错分率、Gini 指数、熵(entropy)等等。
同样是分类算法,与逻辑回归相比,决策树每次只对单一特征进行划分,拟合出来的函数为分区间的阶梯函数。这种算法更接近人的思维方式,模型具有更好的可解释性,且可以产生可视化的分类规则。决策树的这种算法构造,决定了它是一类很适合用于择时模型的算法。如图 1 所示,决策树算法通过考察不同技术因子的值,分部对下一阶段股票走势进行判断,也很类似于我们使用技术因子进行股票择时的思维步骤。决策树模型最大的问题是不稳定,容易过拟合。数据上微小的扰动都可能得到完全不同的分支结果,使模型的解释性产生问题。接下来介绍的随机森林方法,通过组合多棵决策树,可以显著降低方差,解决过拟合问题,是一种常用的集成方法(Ensemble method)。2.2 集成方法(Ensemble method)集成方法是一种增强预测性的统计学习算法。集成方法不是构造分类模型,而是用一定方式将多个模型组合起来,用以训练拟合数据。通过构造一系列分类器,通常是小型决策树,为预测进行加权投票,最后完成对于数据点的分类。集成学习方法主要分两类:bagging 和 boosting。Bagging 是 bootstrap aggregating 的缩写,它指的是利用 Bootstrap 抽样方法对训练集进行抽样,得到一系列新的训练集,对每个训练集构建一个预测器,称为基预测器(base predictor),组合所有预测器得到最终的预测模型,最终的预测模型是所有基预测器投票的结果。这种方法可以降低方差,同时避免过拟合。另一方面,boosting 方法则是以上一步模型的误分类为着重训练目标的集成方法。Boosting 从原始数据拟合的一个简单分类器开始。在拟合完成第一个模型之后,计算出分类错误,给数据重新分配权重,之前被错误分类的样本比正确分类的样本有更高的权重。观测值在每一步中不断的重新分配权重,上一个模型错误分类的观测获得更高的权重。最后的预测结果将由在迭代过程中生成的每一棵树投票,并由树的精确度计算权重得出。Boosting 的预测准确率可能会高于 bagging,但是它有可能会造成过拟合的后果。随机森林(random forest)算法在 2001 年由 Breiman 提出,与 bagging 算法类似,可以看成是 bagging 算法的一种变体。由于这种算法在训练、调参时简单有效,因此是目前相当流行的一种集成算法。2.3 随机森林算法随机森林算法的基本步骤与 bagging 算法类似,首先建立若干决策树,建立每个决策树时,除了使用 bootstrap 方法随机选择测试样本之外,还会随机选择特征变量,这样,就可以降低树与树之间的相关系数。最后,依然是通过统计投票结果确定最后的分类信息。随机森林也是一种特定的集成方法,特别适合解决含有大量特征变量的问题。在其他模型中,一个特征变量的效果可能会被其他更显著的特征变量所掩盖。但随机森林在每棵决策树上使用随机选择的特征变量进行训练,这样可以更好地检测每个变量所产生的贡献和行为。相对于单棵决策树而言,随机森林在提高预测准确度和减小方差方面有了很大提升。随机森林算法的基本步骤如下:
[*]输出组合后的 K 棵树,取投票最多的预测为最终分类结果。
3.行业轮动模型的建立与运行结果3.1 因子提取在因子库选择上,我们侧重选择了变动较为剧烈的技术面因子,并在选择因子周期时参考技术分析理论中的常用参数。同时也一定程度上考虑了行业的估值因子(PB、PE),行业内部股票一致度因子(行业内上涨股票比例)与行业内前 3 名股票走势对指数未来走势的影响。加上不同时间段的影响(6 天、12 天、25 天 RSI 值算三个因子),模型共计参考因子 41 个。根据随机森林算法,默认单棵决策树参考因子为 6个。
4.png591x591 72.2 KB
3.2 模型建立训练集:2010-2016 年 28 个申万行业指数因子日数据
验证集:2017 年-2018 年上半年 28 个申万行业指数因子日数据【宽客之家】
模型建立方法:基于每个行业指数单独建立随机森林模型,X 为训练集数据,Y为未来 5 日指数涨跌(上涨、下跌两种情况)。将验证集数据带入训练后的模型中,进行择时。训练集数据使用 5 日滚动,这样保证了训练集的数据量。验证集数据每周判定一次。假设择时账户初始虚拟净值为 1,如在空仓情况下模型判定下周上涨,则在下周一使用开盘价将虚拟净值换为对应份数的指数;如在空仓情况下模型判定下周下跌,则不进行操作,净值不变。如在持仓情况下模型判定下周下跌,则在下周一卖出指数,账户虚拟净值变为前期持有指数的份数乘以指数开盘价;如在持仓情况下模型判定下周上涨,则继续持有指数。3.3 择时结果通 过 随 机 森 林 算 法 对 申 万 28 个 行 业 指 数 进 行 择 时 , 模 型 平 均 准 确 率54.48% 准确率 。2017 年至今平均超额收益 15.03%,择时后指数平均净值 1.07,平均减少最大回撤 11.73%。在 28 个行业中,有 25 个行业的择时结果强于指数,取得超额收益概率高达 89%。2017 年至今,市场呈现较为明显的分化局势,仅 7 个行业收益为正,21 个行业都有不同程度下跌。择时后,收益为正的行业增加至 20 个,且剩余 8 个收益为负的行业净值相比不择时的情况都有了大幅提升。
下面展示 28 个行业 2017 年至今择时结果,黑线表示行业指数,红线表示择时后的指数。
9.png701x607 67.8 KB
11.png685x590 63.7 KB
12.png702x282 36.6 KB
13.png696x590 66.3 KB
14.png695x277 32.4 KB
15.png677x585 66 KB
16.png699x281 33.8 KB
17.png725x289 34.1 KB
3.4 行业轮动模型根据择时结果,可建立行业轮动模型。每周根据模型预测,选择上涨概率最高的5 个行业(如上涨概率>0.5 的行业不足 5 个,则仅选择上涨概率>0.5 的行业,不足部分按空仓处理),每周调仓。在近期大部分行业普遍回调的情况下,模型依然取得了正收益。最终轮动模型年化收益 4.4%,超出上证综指5.7%;最大回撤 10.7%,小于上证综指的 14.6%。4.总结与未来研究方向展望本篇报告中,我们使用随机森林算法建立了择时模型,并应用于申万 28 个行业指数,构建行业轮动模型。该模型还有很大的改进空间。接下来,我们的研究重点将主要从三方面展开。
[*]丰富择时选项。为突出策略的简单直接,本篇报告中我们对于下一期标的走势的预测仅包括“涨”和“跌”两个选项,在一些国外参考文献中,对下一期标的预测可以延伸至“暴涨超过 3%”、“微涨”、“微跌”、“暴跌超过 3%”四个选项,并给出每个选项的发生概率。在本篇报告中,我们本来尝试了使用四个选项进行分类,但分类效果不如使用两个选项的版本。未来我们会继续改进模型,使模型的预测提供更多信息。
[*]择时模型可以与行业 ETF 投资结合,构建 ETF 轮动模型。但现在市场上行业ETF 未能覆盖全行业,且还需考虑 ETF 追踪误差等问题,需要与基金研究相结合。
[*]与分行业多因子模型结合,先由行业轮动模型确定下一期看好行业,再通过该行业多因子模型进行选股,实现自上而下的选股流程。这也是该模型的建立初衷。
风险提示:随着市场环境变化,模型存在失效风险。作者:渤海证券金工团队
页:
[1]