人工智能系列报告实证篇:人工智能算法在价量特征中的应用.pdf
请务必阅读正文后的声明及说明 Table_MainInfo Table_Title 证券研究报告 / 金融工程 研究 报告 人工智能系列报告实证篇 : 人工智能算法在价量 特征 中的应用 报告摘要 : Table_Summary 机器学习可以快速海量地进行分析、拟合、预测,并具有很好的泛化能力, 机器学习是一种归纳,而非演绎 。 该项技术被应用到量化投资中, 通过大量数据习得模式, 达到 自主选股择时 效果 , 我们在人工智能第一篇报告人工智能系列报告综述篇:人工智能发展史及算法介绍详细阐述了相关 算法和 应用案例,读者可参阅。 价量 特征 指标在实际交易中常被市场参与者用于 市场 择时 ,相比 基本面指 标,具有更好的时效性 ,当前业界研究多集中于 单个指标有效性 检验 或者 通过 图形模式识别交易信号,将多个指标合成 单一指标进行选股的相关 研究较少,本文初衷是通过有效的数据挖掘方法,挖掘多个价量指标信息,获取比单一指标更好地预测效果。 在本文 ,我们运用 34 个 价量特征进行决策树、支持向量机,随机森林、 AdaBoost、 GBDT、 XGBoost 等机器学习模型进行历史数据回测,并构建投资组合 , 所有模型均是 36 个月滚动训练调参 。 结果表明,随机森林与 Boosting 算法表现较好 , 决 策树和支持向量机表现差强人意,分类 预测 效果不明显 。 随机森林算法 和 Boosting 算法( AdaBoost、 GBDT、 XGBoost 等 ) ,具有较好的分类预测效果,第10 组年化收益 13%-14%,夏普比率在 0.42-0.44,多空组合年化收益率为 7.11%-12.11%,夏普比率为 0.78-0.9, 其中 随森林模型多头组合年化收益率最高, XGBoost 模型多空组合收益率最高 。 机器学习算法如何在量化投资中真正有效利用起来,仍值得我们思考。目前,业界多将机器学习算法与多因子体系结合,进行量化选股, 这样 形成一套体系,从因子有效性检验、模型训练、预测和组合构建,往往研究重点集中于模型参数优化与因子筛选上,参数优化,输入变量选取的不同或者预处理方法改变,都会对最终输出结果造成影响,这种体系下,机器学习 应用于量化投资 的可解释性有待提高 ,如何使机器学习更为透明和可解释,值得我们进一步研究。 Table_Invest Table_PicQuote 历史收益率曲线 Table_Trend 多头 收益 多空收益 决策树 11.7% 11.8% 支持向量机 11.2% 16.1% 随机森林 14.0% 7.1% AdaBoost 13.6% 9.72% GBDT 13.5% 11.0% XGBoost 12.9% 12.1% Table_Report 相关报告 东北证券人工智能系列报告综述篇:人工智能发展史及算法介绍 2017-11-23 Table_Author 证券分析师: 高建 执业证书编号: S0550511020011 研究助理 : 孙凯歌 执业证书编号: S0550117100006 13070102332 sunkgnesc 发布时间: 2018-05-25 请务必阅读正文 后的 声明及说明 2/29 Table_PageTop 金融工程研究 报告 目录 1. 引言 . 3 2. 价量指标 . 3 3. 机器学习选股体系 . 4 3.1. 整体流程 .4 3.2. 模型调参 .6 4. 机器学习模型实证 . 7 4.1. 决策树 .7 4.2. 支持向量机 .9 4.3. 随机森林 . 11 4.4. AdaBoost.14 4.5. GBDT.17 4.6. XGBoost.19 5. 总结与展望 . 21 附录:价量特征指标计算公式汇总 . 22 请务必阅读正文 后的 声明及说明 3/29 Table_PageTop 金融工程研究 报告 1. 引言 机器学习可以快速地 对大量数据 进行分析、拟合、预测,并具有很好的泛化能力,归根到底机器学习是一种归纳,而非演绎,该项技术被广泛应用到量化投资中,我们在人工智能第一篇报告人工智能系列报告综述篇:人工智能发展史及算法介绍详细阐述了 算法和 相关应用案例,读者可参阅报告。 价量指标在实际交易中常被市场参与者用于择时选股 ,相对基本面指标,具有更好的时效性 。 多数阿尔法收益来自市场短期波动, 对于价量特征指标 , 当前 业界多是研究 单个指标有效性或者 通过 模式识别 的方式发现 交易信号 等 ,将多个指标合成 单个指标的研究较少 。 本文 通过 机器学习模型 ,挖掘多个价量指标信息, 以 获取比单一指标更好 的 预测效果。价量指标具体含义以及构建方法可参阅本文附录部分 。 本文 选取 2007 年 1 月 -2018 年 3 月 月度数据为回测样本 ,采用 34 个价量指标,按照 36 个月滚动窗口进行模型训练, 预测未来一个月股票的分类概率 。 我们 分别测试决策树模型、支持向量机、随机森林、 AdaBoost、 GBDT、 XGboost 等模型,通过价量特征指标进行机器学习算法有效性检验,并构建投资组合。 2. 价量指标 根据价量特征 指标 的 普适性 ,本文 选取 价格类、动量类、成交量类、波动类 等四大类 价量特征 , 进行机 器学习模型测试 。选取的指标 能够 直接作为 择时信号 , 或其 数值 能够 表征市场强弱 。 指标含义和参数选择见下表,具体计算公式可参见报告附录部分。 表 1:指标算法和参数选择 指标简称 中文名称 指标参数 价格重叠类 Bollinger_UpperBands 布林线上轨 ( 5,2,2) Bollingger_LowBands 布林线下轨 ( 5,2,2) WMA 移动加权平均 ( 30) EMA 指数平均线 ( 30) KAMA 考夫曼的自适应移动平均线 ( 30) MA5 5 日均线 ( 5) MA20 20 日均线 ( 20) SAR 抛物线指标 ( 0,0) HT_TRENDLINE 希尔伯特瞬时变换 - 动量类 APO 价格振荡器 ( 12,26) AROONOSC 阿隆振荡 ( 14) BOP 均势指标 - CCI 顺势指标 ( 14) CMO 钱德动量摆动指标 ( 14) DX 动向指标 ( 14) SIGNAL_MACD 平滑异同移动平均线 ( 12,26,9) MFI 资金流量指标 ( 14) 请务必阅读正文 后的 声明及说明 4/29 Table_PageTop 金融工程研究 报告 PLUS_DI 上升动向值 ( 14) MINUS_DI 下降动向值 ( 14) MOM 动量 ( 10) PPO 价格震荡百分比 ( 12,26) ROC 变动率指标 ( 10) RSI 相对强弱指数 ( 14) KDJ_K KDJ 指标 K 值 ( 5,3,3) KDJ_D KDJ 指标 D 值 ( 5,3,3) TRIX 三重指数平滑平均线 ( 30) ULTOSC 终极波动指标 ( 7,14,28) WILLR 威廉指标 ( 14) 成交量类 ADOSC 振荡指标 ( 3,10) OBV 能量潮 - ATR 真实波动幅度均值 ( 14) 波动类 TURN_MA_5 换手率 5 日均值 ( 5) TURN_MA_10 换手率 10 日均值 ( 10) TURN_STD_5 换手率 5 日波动 ( 5) 数据来源:东北证券, Wind 为保证数据量纲一致,避免机器学习模型在训练测试中因数据范围过大产生较大误差, 本文 采用最大最小值法对数据进行标准化, 使 数据分布集中于 0,1。 ./_ ( ) ( . ).X X m i n X m a xX s c a l e d X m i n 在进行数据标准化 处理 之后, 34 个价量指标 能够 描述 每只股票在 时间截面 上的 特征,并与 股票 下一期价格涨跌相关联 。 后续我们可以 运用机器学习模型寻找内在映射关系。 3. 机器学习选股体系 3.1. 整体流程 根据上述方法 , 我们选定了价量特征指标 ,接下来, 我们采用 滑动窗口方式 确定 机器学习模型 训练期与测试期 , 在每月初选用过去 36 个月度数据作为模型训练数据,进行参数调试和 模型拟合 ,以最新月末数据 作为测试数据载入拟合好的模型中,来预测未来一个月股票所属的涨跌 类别。 请务必阅读正文 后的 声明及说明 5/29 Table_PageTop 金融工程研究 报告 图 1:机器学习模型选股流程 数据来源:东北证券 机器学习模型步骤: 1、 回测数据: a、 股票样本池:沪深全 A,剔除 ST 股票、剔除上市不满 120 个交易日的次新股。 b、 回测区间: 2007 年 1 月 -2018 年 3 月,以 2007 年 1 月 -2009 年 12 月作为起始训练期,回测期内滚动训练、调参、调仓。 c、 数据标准化:采用最大最小值法进行数据标准化。 d、 样本标签: 训练样本 中 , 价量特征对应的 下一期收益前 30%标记为 1,后30%标记为 -1,结合样本特征值,作为模型训练数据。 2、 模型训练: a、 训练样本:每个月初,将过去 36 个月月末特征、标签数据作为训练样本,来预测未来一个月收益率所属类别。 b、 参数调试:采用网格调参法,每个月初在训练模型时,将过去 36 个月的样本数据作为拟合模型数据,分为 5 份,任意 4 份作为训练数据, 1 份作为测试数据,重复交叉验证 5 次,按照 AUC 准则选取最优参数。 3、 组合构建 a、 将训练数据载入 最优参数下机器学习模型 ,进行模型拟合 。 b、 在每月第一个交易日调仓时,将最近月末 截面特征值带入训练好的机器学习模型中,输出归属标签 1 类的概率值。 c、 按照输出概率分为 10 组,组 内等权配臵,计算分组收益率,夏普比率等指标,对机器学习算法进行比较 。 为模拟真实投资过程,本文采用滑动窗口方法进行调参和仓位变动 。同真实投资一样,机器学习模型在指定历史数据窗口内将进行参数估计和模型拟合,以用于下一个投资期股票筛选,相较于传统 方法 将整个样本数据划分为训练集和测试集,滑动窗口法使得数据更具时效性,也更为符合投资实际应用场景。 具体 地 ,在每个数据窗口中,将数据分为训练区间、验证区间和测试区间。其中训练区间是进行模型参数调试和模型拟合,验证区间是为了校验选取最优参数;在确定最优参数后,在训练数据和验证数据合并,重新拟合模型;最后在测试区间上,应用拟合后的机器学习模型,检测样本外预测效果,并构建投资组合 ,动态滑动窗口请务必阅读正文 后的 声明及说明 6/29 Table_PageTop 金融工程研究 报告 如图 2 所示。 图 2:滑动窗口示意图 数据来源:东北证券 3.2. 模型调参 现实投资中,市场风格不断变化,为了使模型更能匹配当时市场环境,我们在每个滑动窗口期内,对模型进行参数调试 , 运用交叉验证方法,选取最优参数进行模型拟合,并应用到测试数据集,进行投资组合 的 构建 。 模型参数说明及 本文 具体取值范围如下表 所示 。 表 2:参数说明及取值范围 算法 参数 Support Vector Classier (SVC) Kernel:核函数,用于将样本点从低维空间投影至高维空间,取值为 rbf, linear。 C:惩罚系数, C 越小模型对样本的拟合程度越好,但可能产生过拟合,取值为 0.1, 1, 10, 100, 1000。 Gamma:核函数系数,取值为 10, 1, 0.1, 0.01, 0.001 Decision Tree (DT) max_features:划分时考虑的最大特征数 ,决策树在分裂节点时只考虑部分特征以控制生成树时间,取值为 5,7,9,11,13,15,35 min_weight_fraction_leaf:叶子节点最小的样本权重和,用以控制决策树的复杂度和大小,取值为 0,0.01,0.02,0.03,0.04,0.05 Random Forest (RF) n_estimators:基分类器个数,取值为 100, 200, 300, 400, 500 criterion:用以评判分枝效果的标准,取值为 gini, entropy max_depth:决策树最大深度,用以控制树的大小,取值为 3, 5, 7, 9, 11, 13 max_features:划分时考虑的最大特征数 ,决策树在分裂节点时只考虑部分特征以控制生成树时间,取值为 5,7,9,11,13,15,35 AdaBoost (AB) n_estimators:基分类器个数,取值为 100, 200, 300, 400, 500 learning_rate:学习率,控制每个弱学习器的权重修改速率,取值为0.05,0.1,0.2,0.3,0.4,0.5,1 max_features: 划分时考虑的最大特征数 ,决策树在分裂节点时只考虑部分特征请务必阅读正文 后的 声明及说明 7/29 Table_PageTop 金融工程研究 报告 以控制生成树时间,取值为 5,7,9,11,13,15,35 min_weight_fraction_leaf:叶子节点最小的样本权重和,用以控制决策树的复杂度和大小,取值为 0,0.01,0.02,0.03,0.04,0.05 Gradient Boost Decision Tree(GBDT) n_estimators:基分类器个数,取值为 100, 200, 300, 400, 500 learning_rate:学习率,控制每个弱学习器的权重修改速率,取值为0.05,0.1,0.2,0.3,0.4,0.5,1 max_depth:决策树最大深度,用以控制树的大小,取值为 3, 5, 7, 9, 11, 13 max_features: 划分时考虑的最大特征数 ,决策树在分裂节点时只考虑部分特征以控制生成树时间,取值为 5,7,9,11,13,15,35 loss:损失函数,用以优化梯度提升过程,取值为 deviance, exponential XGBoost (XGB) n_estimators:基分类器个数,取值为 100, 200, 300, 400, 500 eta:类似于 learning_rate,取值为 0.05, 0.1, 0.3, 0.5, 1 max_depth:决策树最大深度,用以控制树的大小,取值为 3, 5, 7, 9, 11, 13 colsample_bytree:在建立树时对特征采样的比例,取值为 0.5, 0.7, 0.8, 0.9, 1 数据来源:东北证券 4. 机器学习模型实证 4.1. 决策树 决策树是一种简单却 应用 广泛的分类器,通过训练数据建立决策树,将不同类别数据贴上类别标签,使分类后的数据集纯度最高,并且能通过选择合适的特征 加快 分类速度,减少决策树深度。 设训练数据集 D,可以取得 v 个特征值,对 D 进行划分,第 v 个特征值对应数据集记为 vD ,判断分类数据纯度一般运用三种指标: 信息增益:1|( , ) ( D ) ( )|vV vvDG a i n D a E n t E n t DD 21( ) l o gKkkkE n t D p p , kp为 D 中第 k 类样本所占比例。信息增益越大,分类数据纯度越高。 信息增益率: ( , )n _ r a t i o ( D , a )()G a i n D aG a i I V a21| | | |( ) l o g| | | |vvVvDDI V a , 信息增益率越大,反映了模型分类数据纯度越高。 基尼指数:1|_ ( , ) ( )|vV vvDG i n i i n d e x D a G i n i DD 请务必阅读正文 后的 声明及说明 8/29 Table_PageTop 金融工程研究 报告 21( ) 1 K kkG i n i D p Gini( D)反映了从 D 中抽取两个类别标签不一致的概率,基尼指数越小,分类数据纯度越高。 分类数据纯度一般运用信息增益、信息增益率、基尼指数等三种指标。根据特征选择方法的不同,决策树算法中比较具有代表性的有 ID3、 C4.5 以及 CART 算法, CART分类树算法使用基尼系数来代替信息增益比,基尼系数代表了模型的不纯度,基尼系数越小,则不纯度越低,特征越好,因此考虑到算法效率及分类效果,本文采用决策树中的 CART 树算法进行实证 。 通过模型拟合和测试,按照决策树模型分类(所属类别为 1)输出概率值排序,分为十组,分别计算秩相关系数 IC 与分组超额收益如下图所示,回测期内 IC 均值为0.032,中位数为 0.022,正显著比率为 43.9%,负显著比率为 21.4%。 图 3:秩相关系数(均值: 0.032) 图 4:决策树分组月度平均超额收益率 数据来源:东北证券 数据来源:东北证券 不考虑交易费用情况下,决策树 模型结果十组 收益风险指标如下: 表 3:决策树模型分组收益 组别 第 1组 第 2组 第 3组 第 4组 第 5组 第 6组 第 7组 第 8组 第 9组 第 10 组 年化收益率 -1.2% 9.1% -0.5% -26.8% -15.6% 32.7% 63.8% 18.8% 6.1% 11.7% 年化波动率 35.4% 33.6% 35.9% 39.5% 32.9% 35.3% 37.8% 33.2% 31.1% 35.4% 最大回撤 -64.9% -50.5% -61.4% -90.1% -77.6% -37.5% -27.0% -43.8% -52.3% -45.7% 夏普比率 (0.03) 0.27 (0.01) (0.68) (0.47) 0.93 1.69 0.57 0.20 0.33 Calmar 比率 (0.02) 0.18 (0.01) (0.30) (0.20) 0.87 2.36 0.43 0.12 0.26 数据来源:东北证券, Wind 收益最高组出现在第 7 组,收益最低组出现在第 4 组,而且不同分组收益率差距较大。因此,仅分析一下第 10 组与第 1 组多空净值供参考,多空组合年化收益率 11.75%,年化波动率 14.87%,最大回撤 28.9%。 请务必阅读正文 后的 声明及说明 9/29 Table_PageTop 金融工程研究 报告 图 5:决策树模型多空组合净值 数据来源:东北证券 表 4:决策树多空组合收益 年化收益率 年化波动率 最大回撤 夏普比率 Calmar 多空组合 11.75% 14.87% -28.90% 0.79 0.41 数据来源:东北证券 从分组平均超额收益率来看,决策 树 模型没有明显的分类效果,表现最好一组是第七组,收益分布和组次没有明显的关联关系,单个决策树 模型 分类效果不好。 4.2. 支持向量机 支持向量机 SVM 是一种基于统计学习的机器学习方法,由于在文本分类中表现出特有的优势,成为机器学习领域研究的热点。 SVM 的学习方法主要包括:线性可分向量机、线性支持向量机以及非线性支持向量机。 SVM 主要思想是,建立一个最优决策超平面,使得该平面两侧距平面最近的两类样本之间的距离最大化,从而对分类问题提供良好的泛化能力。 SVM 采用核函数技巧将原始特征映射到更高维空间,将分类问题转化为一个凸二次规划问题的求解,可解决原始低维空间线性不可分的问题。 在线性可分的情况下,最优超平面的构建转化成下面最优化问题: . . ( ( ) ) 1 0TTiim i ns t y x b 在线性不可分情况下,引入误差带宽和惩罚函数,构造并求解约束最优化问题: 请务必阅读正文 后的 声明及说明 10/29 Table_PageTop 金融工程研究 报告 1 2. . ( ( ) ) 1 00iTiiTi i iim i ns t y x b 其中 是分类向量, b 是常数,i是样本点 i 的松弛变量, C 是对松弛变量的惩罚系数, ()ix是将原始特征值映射到高维空间的核函数。 SVM 的核心问题是选取合适的核函数,将低维空间的原始特征映射到高维空间。SVM 核函数分为线性核函数、多项式核函数、高斯( RBF)核函数、 sigmoid 核函数,其中高斯核函数、线性核函数应用较广泛,本文在调参过程中确定最优核函数。 数据实证,将分 类 模型输出 概率 值 作为单因子值,进行分组回测,秩相关系数 IC与分组超额收益如下图所示,回测期内 IC 均值为 0.051,中位数为 0.06,正显著比率为 52.1%,负显著比率为 17.3%。 图 6:秩相关系数(均值: 0.051) 图 7:支持向量机分组月度平均超额收益率 数据来源:东北证券 数据来源:东北证券 表 5:支持向量机模型分组收益 组别 第 1组 第 2组 第 3组 第 4组 第 5组 第 6组 第 7组 第 8组 第 9组 第 10 组 年化收益率 -6.1% 5.4% 5.2% -10.5% 2.0% 23.2% 36.7% 22.7% 12.2% 11.2% 年化波动率 32.6% 31.9% 34.9% 35.0% 32.9% 34.1% 37.7% 33.8% 30.9% 33.2% 最大回撤 -64.5% -51.0% -55.1% -80.8% -62.9% -41.0% -42.4% -47.1% -48.2% -54.3% 夏普比率 (0.19) 0.17 0.15 (0.30) 0.06 0.68 0.97 0.67 0.40 0.34 Calmar比率 (0.09) 0.11 0.09 (0.13) 0.03 0.57 0.86 0.48 0.25 0.21 数据来源:东北证券, Wind