机器学习量化投资实战指南
由bqmesu0a创建,最终由qxiao 被浏览 428 用户
本文14323字,阅读约28分钟
导语:本文旨在用精炼的语言阐述实操层面的机器学习量化应用方法,包括给出实践中一些常见、实际问题的处理方案,并结合了量化应用实例。读完后大家可以在本平台进行实践检验。
文章概览:
1.人工智能量化投资概述
2.人工智能技术简介
3.机器学习在量化投资中应用的具体方法解析
AI相对于传统量化投资的优势 传统的量化投资策略是通过建立各种数学模型,在各种金融数据中试图找出市场的规律并加以利用,力所能及的模式或许可以接近某一个局部的最优,而真正的全局“最优解”或许在我们的经验认知之外。如同不需要借助人类经验的Alpha Zero,不仅能够自发学习到人类经验,还能够摆脱人类认知的局限,发展出更优的解。人工智能能够探究复杂的非线性规律,在模型上,弥补了人脑逻辑思维模式的单一性,在计算能力上,能够通过算法实现海量数据的挖掘。
未来的方向:“AI+”量化投资模式 人工智能的发展,需要经历“机器辅助人——机器与人合作——机器完全自我学习” 三个发展阶段。完全强化学习虽然在围棋中取得突破,但其受适用环境约束,离普适还有相当距离,可以预见,在未来的相当长一段时间内,将会是人与机器融合的模式。对于量化投资来说,将会是分析师的智慧和人工智能相融合。人脑的经验常识、抽象思维、情感思维是目前的AI不具有的,而AI的模糊运算和计算能力也是人脑不能企及的。“AI+”量化投资模式将会成为人工智能应用于量化投资中的发展方向。
机器学习流程全解析 介绍了一个完整机器学习流程的详细步骤,包括各种数据预处理中的问题、模型性能的评估方法、参数调优的方法以及组合不同模型的方法。
主流机器学习方法的应用 将机器学习的主流方法按最常用的应用方式分类介绍,回归、分类、聚类、降维、强化学习,分别给出了实例。
概述
(一)从“Alpha Zero”谈起
1、完全强化学习的应用——“Alpha Zero” 近日谷歌DeepMind团队在Nature发表了关于新一代围棋AI“Alpha Zero”的学术论文,展示了强化学习在围棋应用上新的突破。新版本不需要借助人类经验数据,主要依赖深度强化学习,仅通过4个TPU和72小时的训练后就能以100-0战胜上一版本AlphaGo。
新版本的一个重要突破是在算法上将价值网络和策略网络整合为一个架构,可同时输出策略和价值,使训练效率大幅提升,此外还运用了残差网络结构,提升了网络深度。这两点结构上的改进使得深度神经网络具有更强大的特征提取能力和寻找更优解的能力。
完全强化学习不需要人类经验数据的输入,其成功应用的意义使其更容易适用于缺乏大量标注数据的应用。
目前,完全强化学习仍有其适用的约束条件和任务环境,尚不能普适于所有应用,仅适用于状态空间搜索几乎零成本且探索过程不影响假设空间的任务。
2、何为人工智能 人工智能,是能遵照思维里的逻辑规律进行思考的计算机程序。一个早期人工智能应用成功的实例是“专家系统”,它存储了特定领域内人类专家知识和人类逻辑推理规则,能够代替人解决特定领域内的专家问题。另一方面,从心理学和生物学角度出发,通过研究人脑的工作方式,模仿大脑神经元对信息的传递和处理过程,出现了“人工神经网络”。随着GPU、TPU、云计算能力的发展,深度神经网络得以应用,强化学习也得到了进一步的发展。
人工智能是研究使计算机来模拟人的某些思维过程和智能行为(如学习、推理、思考、规划等)的方法,从而能够通过对环境的感知,做出最大化效果预期的行动。
(二)“AI+”量化投资模式
1、相对于传统量化投资,AI的优势在哪里?
传统的量化投资策略是通过建立各种数学模型,在各种金融数据中试图找出市场的规律并加以利用。无论是根据人的经验判断,还是通过经典的数学模型,力所能及的模式都是有限的。从探寻股票市场的全局来看,人类积累经验的研究可以接近某一个局部的最优,而真正全局的“最优解”或许超出了目前传统量化力所能及的范畴。
一方面,对于市场中蕴藏的复杂的非线性规律,很难通过传统数学模型进行挖掘;另一方面,对于海量数据的挖掘,困于计算机运算能力的限制,如果不利用数据挖掘算法,往往需要耗费大量时间。人工智能能够提供非线性关系的模糊处理,弥补了人脑逻辑思维模式的单一性,同时,如果加以利用相关算法,可以大幅提高规律的搜索效率。人工智能的引入也使得投资策略更加丰富,如AI算法对于非线性模式的因子挖掘在多因子领域比传统线性多因子模型更加敏锐。
2、“AI+”量化投资模式 人工智能的发展,需要经历“机器辅助人——机器与人合作——机器完全自我学习” 三个发展阶段。虽然完全强化学习在围棋上取得了突破,但目前仅在解决封闭空间的简单任务中取得成功,离普适还有一定距离,可以预见,在未来的相当长一段时间内,将会是人与机器融合的模式。对于量化投资来说,将会是分析师的经验和人工智能相融合。“AI+”量化投资模式将会成为人工智能应用于量化投资中的发展方向。人脑的抽象思维、情感思维是目前的AI不具有的,而AI的模糊运算和计算能力也是人脑不能企及的。两者互补将会成为未来AI量化投资的方向。
(三)AI在国内外投研领域的应用发展
1、AI的历史进程
人工智能最早由McCarthy于1956年提出,后经历了三次大的浪潮。
第一波浪潮出现在60年代,其最核心的概念为逻辑主义,即让机器通过严密的逻辑符号推理来证明一些知识。
第二次浪潮出现在1977年,随着Feigenbaum提出“知识工程”的概念和BP神经网络的诞生,人类开始让机器模仿神经元网络进行知识的学习,专家系统出现,并在很多模式识别的领域得以开始应用,人工智能走向实用化。
随着2006年加拿大多伦多教授Geoffrey Hinton对深度学习的提出,以及模型训练方法的改进和计算能力的不断发展,打破了BP神经网络发展的瓶颈。随后数年,在机器视觉、语音识别等多个领域,神经网络的错误率降低了1~2个数量级,近年来,甚至优于人类平均水平。
2、AI在国外投研领域的应用 国外在智能投研领域应用包括非结构化信息的获取、分析,构建知识图谱,提供投资建议,优化投资结构。
Rebellion Research的人工智能系统通过自我学习全球53个国家股票、债券、外汇、大宗商品的交易数据,评估各种资产组合的未来收益和潜在风险,并用于配置资产。公司的人工智能系统基于贝叶斯算法,对宏观、行业和公司三个层面的数据进行分析,模型自动将历史数据和最新数据进行整合,使模型能够预测市场走势。公司在2007年推出的第一个人工智能投资基金,基于贝叶斯机器学习,结合预测算法,对历史的金融和贸易数据进行分析之后,成功地预测2008年的股市崩盘,并在2009年9月给希腊债券F评级,当时惠誉的评级仍然为A,Rebellion比官方提前一个月给希腊债券降级。
Man Group规模最大的一只基金AHL Dimension Programme目前管理着51亿美元资产,从2014年开始使用机器学习技术,到今年6月,3年间获得了15%的收益,约为行业平均水平的2倍,其一半的利润是由人工智能贡献的。在算法上,Man Group也运用了深度学习和强化学习技术。目前,Man Group已经有四只基金融合了人工智能技术,共计约123亿美元资产。
Palantir Metropolis平台整合多源数据,将不相干的多个信息置于一个统一的定量分析环境中,构建动态知识图谱。Visible Alpha通过设立专有的新数据集和智能工具套件以增强机构投资者对公司未来基本面的量化见解能力。Dataminr收集Twitter等公共来源上的实时数据,利用人工智能技术转化为实际行动信号。
美国的Wealthfront和Betterment、英国的MoneyonToast、德国的FinanceScout24、法国的MarieQuantier等成功将人工智能引入投资理财,目前智能顾问已掌握大量资产。
Kensho是智能投研领域的先行者,Kensho主打产品“ Warren”是金融数据收集、分析软件,拥有强劲的云计算能力、良好的人机交互界面和深度学习能力,目前产品只在高盛内部试运行,没有正式上市。据福布斯介绍,“在能够找全数据的假设下,对冲基金分析师团队需要几天时间才能回答的问题,Warren可以通过扫描超过9万项全球事件,如药物审批,经济报告,货币政策变化和政治事件及其对地球上几乎所有金融资产的影响,立即找到超过6500万个问题组合的答案。”可以看到, Kensho试图构建最全的国际事件数据库及知识图的综合图表模型,解决了当今华尔街投资分析的三大挑战,即速度,规模和自动化。
Two Sigma和Renaissance Technologies这些以数据为中心的对冲基金也依靠智能投资系统。系统可以完全自主地识别和执行交易,借助了包括基于遗传算法、概率逻辑等多种形式的人工智能技术。
3、AI在国内投研领域的应用 国内也有多家公募基金、私募基金、资管纷纷试水,设立或在积极筹备相关研究部门及团队,运用AI辅助投资决策,研究内容包括非结构化信息的分析、择时及资产配置建议、FOF、选股策略研究等。机构专门人员负责研究开发全套的智能投研体系,在数据获取和信息处理方面,快速及时地运用NLP技术提取公司公告、行业动态中的有价值信息,并给出相关投资建议。有些机构与互联网公司合作,并在积极研究布局融合人工智能技术的主动量化基金。
4、AI在投研领域应用的局限性 AI在国内的应用仍有一定的局限性,目前AI在国内投研投顾领域主要用于辅助决策与用户画像上。将来有望落地的将会是“AI+”的量化投资模式,即在传统量化思想的基础上,恰当地运用一些AI算法,帮助贡献有益的投资决策。长期来看,全面AI还很遥远。这一方面是由于,AI学习的效果跟数据的质量有很大关系,我国A股市场发展的时间还不长,数据量不够充足,噪声也比较多,使AI学习效果的稳定性不能得到充分的保证。另一方面,脱离人类经验的完全强化学习目前仅在有特定约束条件的环境下成功运用,离普适还有相当距离,深度学习、强化学习等技术仍需要GPU、TPU发展的支持。
人工智能技术简介
(一)人工智能、深度学习、机器学习的关系
人工智能、机器学习、深度学习是依次包含的关系。人工智能是一个大概念,它的研究范畴包含机器学习、自然语言处理、语音识别等等。机器学习是人工智能中的一个技术流派。深度学习是机器学习中的一种,主要以深度神经网络等为代表。
(二)机器学习分类
1、机器学习算法分类 主要分为三种类型,监督学习(Supervised Learning)、无监督学习(Unsupervised Learning)和强化学习(Reinforcement Learning)。
监督学习的主要目的是使用有类标的训练数据构建模型,我们可以使用经训练得到的模型对未来数据进行预测。术语监督是指训练数据集中的每个样本均有一个已知的输出项。如利用分类对类标进行预测、使用回归预测连续输出值。
在无监督学习中,将处理无类标数据或者总体分布趋势不明朗的数据,通过无监督学习,我们可以在没有已知输出变量和反馈函数指导的情况下提取有效信息来探索数据的整体结构。如通过聚类发现数据的子群,数据压缩中的降维。
强化学习的目标是构建一个系统,在与环境交互的过程中提高系统的性能。环境的当前状态信息中通常包含一个反馈信号,我们可以将强化学习视为与监督学习相关的一个领域,然而,在强化学习中,这个反馈值不是一个确定的类标或者连续类型的值,而是一个通过反馈函数产生的对当前系统行为的评价。通过与环境的交互,系统可以通过强化学习来得到一系列行为,通过探索性的试错或者借助精心设计的激励系统使得正向反馈最大化。一个常用的强化学习例子就是象棋对弈的游戏,在此,系统根据棋盘上的当前局态(环境)决定落子的位置,而游戏结束时胜负的判定可以作为激励信号。AlphaGo就是强化学习的成功应用。
2、应用场景分类
(三)机器学习的工具和平台
机器学习工具可以分为机器学习平台和机器学习库。
机器学习平台提供了从头到尾完成一个机器学习项目的功能。也就是,数据分析,数据准备,建模和算法评估及选择。界面可以是图形化的,也可以是命令行,平台将所有的或部分界面结合起来。常见的机器学习平台,如: Tensor Flow,Torch,Azure Machine Learning Studio(AMLS)等。
机器学习库提供了完成一个机器学习项目部分模块的功能。比如,一个库可能提供了一系列建模算法。机器学习库的接口通常是需要编程的应用程序编程接口,且他们为特定用例,问题类型或环境量身定制。常用的机器学习库,如Python中的scikit-learn。
(四)机器学习流程全解析
1、建模流程 对于一个典型的机器学习预测模型,完整的机器学习步骤包含预处理、学习、验证、预测四个部分。下面是一个使用机器学习预测模型进行数据分析的流程图:
2、数据处理 数据的两个维度直接影响了机器学习算法最终的学习效果:数据质量和数据中蕴含有用信息的数量。数据处理一般包含以下步骤:
缺失数据的处理:处理缺失值的两个方法是删除或填充。删除是直接将包含缺失值的特征或样本删除。填充是为了避免删除整个特征或样本会损失很多有价值的数据。缺失值的填充可以使用各种插值技术,最常用的是均值插补(meaneinputation),此外还有中位数插补、众数插补等。
类别数据的处理:类别数据有两个类型:标称特征(nominal feature)和有序特征(ordinal feature)。
对于有序特征,我们可以建立起一个映射字典,将类别字符串与整数建立映射。比如小盘股、中盘股、大盘股分别映射为1,2,3。
对于标称特征,我们固然可以将字符串分别映射为不同的整数,比如将价值股定义为0,周期股定义为1,成长股定义为3,但这样做会导致机器学习算法认为这两个特征是有大小顺序的,这样学习的结果将不是最优结果。解决这一问题的常用技术是独热编码(one-hot encoding)技术。独热编码是构建一个虚拟特征(dummy feature),用二进制来标识样本类别。利用独热编码技术,价值股的虚拟特征为(1,0,0),周期股(0,1,0),成长股(0,0,1)。
数据集的划分:为了保证算法不仅在训练数据集上有效,同时还能很好地应用于新数据,我们通常会随机地将数据集划分为训练数据集和测试数据集。我们使用训练数据集来训练及优化我们的机器学习模型,用测试数据集对模型进行评估,如果对评估效果满意,那么可以用此模型对新的数据进行预测。
为了找出能够在实测数据上有更好表现的模型,可以采用交叉验证技术,将训练数据进一步分为训练子集和验证子集,对模型的泛化能力进行评估。
特征缩放:如果数据尺度相差较大,一般的学习算法将主要根据较大值的误差进行权重优化,为避免此类错误,需要将不同的特征数据缩放到同一区间。决策树和随机森林是机器学习算法中为数不多的不需要进行特征缩放的算法。 特征缩放有归一化和标准化两种常用做法。
归一化将值缩放到[0,1]区间,通常可以使用min-max缩放: 标准化将值转换为服从均值为0,方差为1的标准正态分布:
对于大部分机器学习算法,标准化方法更易于权重的更新,因此更加实用。
此外,还可以进一步对数据降维,以及使用超参优化技术提升模型性能。
3、模型评估与参数调优 过拟合与欠拟合
如果模型的训练准确率和验证准确率都很低,说明模型欠拟合,是一个高偏差模型。如果模型的训练准确率与验证准确率之间有很大差距,说明模型过拟合,是一个高方差模型。
对于欠拟合模型,通常做法有:增加参数数量、构建额外特征、降低模型的正则化程度。
对于过拟合模型,通常做法有:增加训练集样本数、降低模型复杂度、特征提取、降维。降低模型复杂度可以通过增加正则化参数实现。增加训练集样本数不适用于数据中噪声过多的情况。
交叉验证
为了使模型在欠拟合(高偏差)和过拟合(高方差)之间找到最优平衡点,我们可以使用holdout交叉验证或k折交叉验证优化模型的泛化性能。
Holdout交叉验证是将模型划分为三个部分:训练数据集、验证数据集和测试数据集。验证集用来进行对模型性能的评估。Holdout方法的流程如下图:
K折交叉验证使用无重复抽样技术,在k个训练数据子集上重复holdout方法k次。不重复地随机将训练数据集划分为k个,其中k-1个用于模型训练,剩余1个用于测试,重复此过程k次,通常k取10。相较于holdout方法具有更好的鲁棒性。K折交叉验证方法流程如下图:
性能评价指标
我们可以用一个混淆矩阵展示学习算法预测结果,并通过混淆矩阵构建模型的性能评价指标。
准确率PRE:
召回率REC:
F1分数(准确率与召回率的调和均值)表达式如下: 实践中通常用F1分数作为评价指标。
ROC曲线
ROC曲线是受试者工作特征曲线(receiver operator characteristic,ROC)的简称。横轴为假正率,纵轴为真正率。完美分类器真正率为1,假正率为0,其ROC曲线应为横轴0与纵轴1组成的折线。对角线可以理解为随机猜测。
训练结果的ROC曲线越接近完美性能曲线越好,如果低于对角线,说明训练效果比随机猜测还差。ROC的线下区域(area under the curve,AUC)与ROC一起用来刻画模型性能。
4、预测 在使用训练数据集勾出一个模型后,可以采用测试数据集对模型进行测试,预测该模型在未知数据上的表现并对模型的泛化误差进行评估。如果我们对模型的评估结果表示满意,就可以使用此模型对以后新的未知数据进行预测。
5、集成学习 我们可以将不同的分类器组合,成为一个元分类器,使得元分类器的整体性能优于其中任意一个单独的分类器。集成学习就如同把N位专家的预测进行组合,比单独一个专家的预测具有更好的鲁棒性和准确性。有两种常见的集成学习框架:并行方法bagging,串行方法boosting。
Bagging
将训练数据集进行N次有放回的随机抽样得到N个训练数据子集,对每个子集使用相同的算法分别建立决策,最终的分类(或回归)结果是N个决策的结果的多数投票(或平均)。
Boosting
基本思想是先赋予每个训练样本相同的权重,然后进行T次迭代,每次迭代后,对分类错误的样本加大权重(重采样),使得在下一次的迭代中更加关注这些样本。如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集合策略进行整合,得到最终的强学习器。
机器学习在量化投资中的应用
本章对机器学习的主流方法按最常用的应用方式分类介绍,实际上,各种方法的应用模式可以互相交叉。
(一)监督学习:对未来事件进行预测
1、回归——预测连续型目标变量
(1)OLS回归
OLS回归的目标是:求误差的最小平方和。
对于线性回归模型,最小二乘有解析解,即 :
非线性最小二乘没有解析解如下,通常用迭代法求解。
最小化代价函数的迭代法有:梯度下降法,可以用于线性和非线性模型;高斯-牛顿法,用于非线性模型; Levenberg-Marquardt法,结合了梯度下降和高斯-牛顿法,用于求解非线性模型。
(2)正则化方法——岭回归、LASSO回归、弹性网络
正则化是通过在模型中加入额外信息来解决过拟合的一种方法。加入的信息称为惩罚项,惩罚项增加了模型的复杂度,但降低了模型参数的影响。
常用的正则化线性回归方法有:基于L2罚项的岭回归、基于L1罚项的LASSO回归,以及结合了L1与L2的弹性网络。
岭回归:在最小二乘的代价函数中加入权重的平方和。其中增加超参的值可以增加正则化的强度,同时降低了权重对模型的影响。
其中,L2:
LASSO回归:在最小二乘的代价函数中加入权重绝对值的和。
其中,L1:
弹性网络:包含L1罚项和L2罚项。
(3)评价回归模型性能的方法
残差图:对于一个好的回归模型,期望误差随机分布,残差也随机分布于中心线附近。
均方误差(MSE):最小化误差平方和(SSE)的均值,可用于不同回归模型的比较,参数调优和交叉验证。
决定系数(R²):MSE的标准化版本,预测值的方差。
(4)实例:OLS、LASSO、岭回归拟合月收益率
以沪深300成分股为基础,选择PE、PB、ROE、LFLO、20日资金流量、应付账款周转率、净利润增长率、当前价格处于过去1年股价中的位置这8个因子构造模型,使用20110801-20130531的月数据用来训练,20130601-20171001进行回测,按月调仓;
首先对数据进行去极值、中性化、标准化、归一化处理,再分别采用三种不同的模型在训练集上获取回归系数,根据调仓日前一天的因子与回归系数的乘积作为分数,取排名前20的股票,按分数在合计分数中的比例计算买入权重;
分别应用OLS、LASSO回归、岭回归的回测结果净值如下:
2、分类——预测分组或标签 (1)logistic回归
逻辑斯蒂回归(logistic regression)是一个分类模型。它通过一个Logistic函数将输入映射到[0,1]区间,logistic函数又称sigmoid函数,形式如下:
其中,输入Z:
逻辑斯蒂回归模型可以看做由两部分组成,一部分和线性回归一样,另一部分是sigmoid函数。直观形式如下图:
逻辑斯蒂模型的求解:归结为以似然函数为目标函数的优化问题,用迭代法求解。 逻辑斯蒂回归并不是硬性地将分类结果定为0或1,而是给出了0和1之间的概率。这相当于对分类结果给出了一个打分。例如我们想选出沪深300成分股中上涨概率最大的前30只股票,我们可以用逻辑斯蒂回归的结果对每只股票算出一个打分,分数越接近于1上涨概率越大,只要选出打分排名前30的就可以了。另外也可以规定一个阈值,大于阈值的归为一类,小于阈值的归为另一类。
(2)SVM
SVM(support vector machine),俗称支持向量机,是一种监督学习算法,可用于分类和回归。它在解决小样本、非线性及高维模式识别中表现出许多特有的优势。
支持向量机分类的原理如下:
假设有两个类别:实心圆和空心圆,我们的数据有两个特征:x和y,需要得到一个分类器,给定一对(x, y),输出实心圆和空心圆。我们将已标记的训练数据展示在下图:
假设我们要把实心圈和空心圈分成两类。支持向量机会接受这些数据点,并输出一个超平面(在二维图中是一条直线)将两类分割开来。两类中,分别有距离分界线最近的点,被称为支持向量(图中加粗的圆点)。而我们要寻找的最优的分界线要满足:支持向量到最优分界线的距离最大。
用数学表达式表述:
定义直线
任意点x到该直线的距离为
N个训练点的信息记为
分类器满足
以上分类原理可拓展至高维平面。
我们已经了解到了SVM处理线性可分的情况,对于非线性的情况,SVM的处理方法是选择一个核函数,通过将数据映射到高维空间,最终在高维特征空间中构造出最优分离超平面,来解决在原始空间中线性不可分的问题。
(3)决策树、随机森林
决策树
决策树最吸引人的地方在于其模型的可解释性。正如其名称“决策树”所意味的那样,我们可以从树根开始,根据节点的不同变量值划分建立树的分枝,自顶向下重复建下层和分枝,直到完成建立整棵决策树。
在每一个节点,选择可获得最大信息增益(information gain,IG)的特征来对数据进行划分。通过迭代重复此划分过程,直到叶子节点。在实际应用中,这可能会导致生成一棵深度很大、拥有众多节点的树,即发生过拟合,为此,一般通过“剪枝”限定树的最大深度。
最大信息增益即每次划分时优化的目标函数,为了实现每次划分对信息增益的最大化。
信息增益:
其中,f为将要进行划分的特征, Dp和Dj分别是父节点和第j个子节点,I为信息含量,Np和Nj分别为父节点和子节点中的样本数量。所以信息增益即父节点信息与子节点信息之差。 信息I一般有三个度量标准:基尼系数(IG)、熵(IH)、误分类率(IE)。
最常用的是熵,其定义为:
其中,p(i|t)为节点t中,属于类别c的样本占节点t中总样本数的比例。
随机森林
随机森林可以看作多棵决策树的集成,通过多数投票的方式对每棵决策树的结果汇总。随机森林具有更好的鲁棒性,因此一般不需要剪枝。
(4)K-近邻算法
K-近邻算法(K-nearest neighbor,KNN)是惰性学习算法的典型例子,惰性学习在学习阶段的计算成本为0。
KNN算法非常简单,首先,选择近邻的数量k和距离度量方法;然后找到待分类样本的k个最近邻居;最后,根据最近邻的类标进行多数投票。
(5)神经网络、深度学习
神经网络
人工神经网络是模仿大脑神经元之间信息传递的模型,可以以任意精度逼近任意函数,能够处理各种复杂的非线性关系,多用于处理分类问题。
下图描述了一个简单的神经元:
这个神经元是一个以X1、X2、X3及截距+1为输入值的运算单元,其输出为:
函数f被称为激活函数。常用的激活函数有sigmoid函数:
双曲正切函数tanh:
神经网络是将多个单一神经元联结在一起,一个神经元的输出可以成为另一个神经元的输入。
神经网络由最左边输入层、最右的输出层(本例中,输出层只有一个节点)和中间隐藏层构成。上图的神经网络例子中有3个输入单元(偏置单元不计在内),3个隐藏单元及一个输出单元。
深度学习
当前多数分类、回归等学习方法为浅层结构算法,其局限性在于有限样本和计算单元情况下对复杂函数的表示能力有限,针对复杂分类问题其泛化能力受到一定制约。深度学习可通过学习一种深层非线性网络结构,实现复杂函数逼近,具有强大的从少数样本集中学习数据集本质特征的能力。
深度学习的实质是通过构建具有很多隐层的机器学习模型和海量的训练数据,来学习更有用的特征,从而最终提升分类或预测的准确性。
深度神经网络的训练机制与传统神经网络不同。传统神经网络采用反向传播的训练机制,即通过残差的反向传播调整权重。深度神经网络层数较多,残差传播到最前面的层已经变得太小,会出现梯度扩散的问题。
深度神经网络采用的训练机制为逐层初始化。
简单的说,分为两步,一是每次训练一层网络,二是调优。
深度学习训练过程具体如下:
1)使用自下上升非监督学习(从底层逐层向顶层训练):
采用无标定数据(有标定数据也可)分层训练各层参数,这一步可以看作是一个特征学习过程,是和传统神经网络区别最大的部分。逐层学习每一层的参数,每一步可以看作是得到一个使得输出和输入差别最小的三层神经网络的隐层。使得得到的模型能够学习到数据本身的结构,得到比输入更具有表示能力的特征;
2)自顶向下的监督学习(就是通过带标签的数据去训练,误差自顶向下传输,对网络进行微调):
基于第一步得到的各层参数进一步微调整个多层模型的参数,这一步是一个有监督训练过程;第一步类似神经网络的随机初始化初值过程,由于深度学习的第一步不是随机初始化,而是通过学习输入数据的结构得到的,因而这个初值更接近全局最优,从而能够取得更好的效果;所以深度学习效果好很大程度上归功于第一步的特征学习过程。
(6)实例:决策树对沪深300走势分类
模型构建:
模型的输入因子,我们选取了三个大类,分别是市场前期走势、宏观经济指标和利率因素。
市场走势中选取沪深300指数上一个月收益率、上一个月区间波动率作为因子,以期反映市场在波动、动量等维度的信息;在宏观经济指标中,我们选取了GDP(国民经济生产总值,当季同比)、CPI(消费者物价指数)、PMI(采购经理人指数)、Capital Investment(固定资产投资完成额,当月同比)等与A股市场关系密切的变量作为因子;类似地,在利率因素中则选取了YTM1Y(1年期国债到期收益率,当月同比)、M2(广义货币,当月同比)。宏观经济指标和利率因素数据中由于CPI、M2等数据一般都在月中公布,因此我们在预测中使用的是滞后一期的数据。
时间区间为2005年1月至2017年7月,训练时间为36个月,采用滚动训练预测的方式。用t-36到t-1月的因子数据为训练样本,进行样本内的参数测算,再用其来预测第t个月沪深300指数的涨跌。
所有的数据我们都进行了异常值、缺失值等各种预处理。在每个月的月末判断下个月沪深300指数的涨跌,并将该结果与下个月的真实涨跌情况进行比较,计算决策树方法预测的准确率(预测正确个数/预测期总月份数)。
采用改进后的CART方法,加入了自动剪枝过程,从而减少过拟合。
下图为一个样本生成树的示例:
下图显示了决策树(CART)模型的涨跌预测准确率的变化过程。在总共114个预测期内我们预测大盘涨跌正确的月份达到68个,也就是说准确率达到了60%的水平。从准确率随时间变化趋势来看,除去刚开始时的波动,后期基本稳定在60%上下,整体准确率还算是较为理想。
接下来我们考虑以上述决策树预测为基础的择时策略(对应下图中CART Strategy):如果模型看涨则在下一个交易日全仓买入,看跌则在下一个交易日清仓(假定初始购入资金为10万,单边买卖的成本定为0.5%)。与之对应的为基准交易策略(对应下图中HS300 Strategy),即在开始时全仓购入沪深300指数并持续持有。由此我们得到了下图中两种策略的资产净值比较:尽管2008-2017年期间大盘整体表现不佳,但决策树策略仍然保持了为正的累计收益率,并且其收益率比持续持有沪深300指数要高出21.3%。
从下图中可以看出,这部分高出的收益率主要来自于决策树策略能够有效地规避大部分下跌(大盘指数下跌时CART Strategy曲线大多走势平缓),并且把握住了主要的上涨行情。但我们也发现决策树策略的上涨行情的把握略差于对下跌行情的规避,尤其是2015-16年间的一波中级牛市,基本没有较大幅度的上涨(还好规避掉了后来大盘的下跌)。究其原因,我们认为像经济指标的滞后、因子覆盖面不足(例如忽略了市场情绪变化)等都是可能干扰决策树模型的噪声。
(二) 非监督学习:发现数据的潜在规律
1、聚类——无类标数据潜在模式的挖掘
(1)K-means
K-means计算高效,易于实现,是一种经典的聚类技术。它是根据样本之间的相似性对样本进行分组,划分为k个类簇,组内的对象之间具有更高的相似度。相似性的度量通常采用欧氏距离的倒数。
初始状态下,随机选取k个点作为初始类簇中心。随后将每个样本依据相似度划分到离它最近的中心点,并重新计算每个簇的中心。重复这一步骤,直到中心点不变或者达到预定的迭代次数时终止。
实际运用中,初始k个中心点的选取以及聚类簇数k对结果的划分有较大影响。
因此,除了随机选取初始中心,我们还有两种其他的方式选取初始中心。
初始中心的选取
1、选择批次距离尽可能远的k个点:首先随机选择一个点作为第一个初始类簇的中心点,然后选择距离它最远的那个点作为第二个初始类簇的中心点,然后再选择距离前两个点的最近距离最大的点作为第三个初始类簇的中心点……直到选出k个初始类簇的中心点。
2、选用层次聚类或canopy算法进行初始聚类,然后利用这些类簇的中心点作为k-means算法初始类簇中心点。
K值的确定
通过选定一个类簇指标,比如平均半径或直径,当假设的簇数k大于等于真实的类簇数目时,该指标上升很慢,而少于真实数目时,该指标会急剧上升。类簇指标变化的拐点最接近真实类簇数目。
其中,类簇的半径指类簇内所有点到类簇中心距离的最大值。类簇的直径指类簇内任意两点之间的最大距离。
(2)层次聚类
层次聚类无需事先指定簇数量。层次聚类有两种:凝聚(agglomerative)层次聚类和分裂(divisive)层次聚类。
凝聚层次聚类是一个自下而上的聚集过程,初始时把每个样本看作一个单独的簇,重复地将最近的一对簇合并,直到所有样本都在同一个簇中为止。由此生成整个树形图。在这个过程中,度量两个簇之间距离的方式有三种:
单链(single-link):不同两个聚类簇中离得最近的两个点之间的距离(即MIN);
全链(complete-link):不同两个聚类簇中离得最远的两个点之间的距离(即MAX);
平均链(average-link):不同两个聚类簇中所有点对距离的平均值(即AVERAGE)。
而分裂层次聚类是自上而下的,首先把所有样本看作在同一个簇中,然后迭代地将簇划分为更小的簇,直到每个簇都只包含一个样本。
层次聚类的缺点在于计算开销比较大。
(3)实例:趋势动量模式聚类选股模型
策略思路:使用聚类的方法,找到短期内表现较好股票的动量和趋势模式特征,选择最接近该特征的股票构建投资组合,使得组合能够在较短周期内取得较好收益。
策略的大致流程如下所示:
1.在t时刻,计算所有股票在t–20时刻的动量和趋势指标值(计算方法见下),根据股票的指标值和市值(均已去极值标准化处理)对所有股票进行K-means聚类,得到M个股票组(类别);
2.每个股票组构成一个投资组合,假设对组合内每只股票等权重分配资金,计算每个投资组合从t–20持有至t天的组合收益值;
3.对M个组合的收益值进行排序,找到排序最高的股票组合,并得到这个类别的指标中心向量,记为center;
4.在t时刻下计算所有股票的指标向量,计算每个向量与最优中心center的欧氏距离,按照距离由小到大排序,得到前20支股票,作为当前选出的股票组合进行投资,持有20天后卖出;
5.策略逐日滚动。
策略所采用的动量和趋势指标计算方法如下:
ROC(rate of change) = (Pricetoday – Pricen days ago) / Pricen days ago * 100
TrendIndicator = (Price - EMA) / EMA * 100
其中,EMA为股价的指数移动均值。分别选取125天ROC、20天ROC和200天TrendIndicator、50天TrendIndicator为长、短周期动量和趋势指标。
对2007年1月1日至2017年7月14日全A股市场所有股票的日线数据进行分析,基准分别选取上证综合指数和沪深300指数。
交易手续费设置为双边千分之三,使用收盘价计算策略指标,使用发出交易信号第二天的开盘价进行交易。初始资金等分为20份,用于一个20天周期内不同交易日的策略交易,各份资金之间互不影响。
在构建投资组合时,剔除停牌以及上市未满一年的股票。策略表现如下:
2、降维——数据压缩
(1)主成分分析
对不适合正则化的模型,可以用主成分分析或者线性判别分析降维。
主成分分析是一种常用的降维方法,能够在尽可能多地保留相关信息的情况下,把多指标转化为少数几个综合指标。
其基本原理是把数据沿着方差最大的方向映射到维度更低的子空间上,新特征的坐标相互正交。如果原始数据是d维,新的子空间是k维(k≤d),那么我们需要构建一个d*k维的转换矩阵W。
构造转换矩阵的基本步骤是:首先对数据标准化,并构造样本的协方差矩阵,求协方差矩阵的特征值和特征向量,选择与前k个最大特征值对应的特征向量构建映射矩阵。
(2)线性判别分析
线性判别分析(linear discriminant analysis,LDA)是一种监督的数据压缩方法。使用PCA降维时, PCA可以把两个特征合并为一个,但PCA没有类别标签,如果这两个特征对于类别标签的分类没有任何影响,那么我们完全可以把这两个特征去除。LDA就是要从高维特征中抽取出与类别标签关系最密切的低维特征。
假设我们有两个类别标签,当原始数据是二维,想将二维降到一维,我们可以把数据投影到最佳向量w上,使得类别间的距离最大,每个类别内部点的离散程度最小。
找最佳向量w的过程如下:
1、对d维数据进行标准化处理,并计算d维的均值向量:
2、构造类间散布矩阵SB及类内散布矩阵SW:
其中,m为全局均值,
3、计算矩阵 SB/SW的特征值及特征向量;
4、提取前k个特征值所对应的特征向量,构造d*k维的转换矩阵W,其中特征向量以列的方式排列;
5、使用转换矩阵把样本映射到新的子空间。
(3)实例:主成分因子降维
我们选取2017年第一季度沪深300成分股的每股收益和资产收益率,并进行标准化,得到下图的二维数据点。我们希望找到一条直线,使得这一方向上的数据值对方差的影响最大,即,将数据点投影到这条直线后,得到的方差最大。
上图的直线是第一主成分所在的维度。新特征Z为第一主成分:
通过主成分分析的方法,我们将相关性较高的两个因子,每股收益和资产收益率降为一个一维特征。
(三)强化学习:交互式最大化收益 1、强化学习
强化学习(Reinforcement Learning)是让计算机实现在特定的情况下,通过不断地尝试, 从错误中学习, 最后找到规律, 找到可以获得最大回报的行为。强化学习有四个基本组件,包括输入:环境(States),动作(Actions),回报(Rewards)以及输出:方案(Policy)。和监督学习不同,强化学习没有确定的标签,需要机器自己摸索,每一个动作对应一个奖赏,最后得到一个奖赏最大的方式进行数据处理。AlphaGo就是一个强化学习的实例。强化学习的主要算法有:Sarsa,Q Learning, Policy Gradients, Actor-Critic, Deep-Q-Network等。
强化学习的目标是发现最优策略π(x),使得达到最优价值Q。主要有两种途径可以学习最优值函数:一种是基于模型的学习, 在学习的过程中对模型进行估计, 如实时动态规划(Real-Time Dynamic Programming, RTDP);另一种是无模型学习, 在学习的过程中直接估计最优行动值。
Q学习算法是Watkins在1987年提出的一种无模型强化学习算法:它用状态s下采取行动的下一个状态,对假定的行动所对应的最大值Q更新当前的值Q。
2、实例:Q学习优化投资组合权重
由前文介绍可知, 对于系统环境变动频繁的动态决策问题, 强化学习Q算法具有不断试错、优化调整的特点。而量化投资同样面临着具有高风险和高不确定性的环境,而且往往需要在不同阶段动态调整不同股票的投资比例,这些问题通过强化学习Q算法可以得到较好的解决。
假设此组合投资系统在第t-1阶段投资时对股票i的未来绩效评价值为Y(i,t-1),期望值为
在第t-1期投资结束时,对投资结果进行评价,并计算下一期绩效的期望值:
第t期结束后,计算股票运作绩效变化率:
接下来对该股票的投资权重K(i,t-1)进行调整:
其中a是一个决定学习速度的正恒量,一般取a=0.1。
也就是说,如果
即股票i在第t期的表现超出预期,则对其进行“奖励”,增加股票i的投资比例;否则其将受到惩罚, 即调低该股票的投资比例,直到退出为止。最后对所有股票的权重再统一乘以一个系数,以保证所有权重的加总为1。
总结和展望
人工智能,在金融领域已经开始逐步从探索走向应用,从金融大数据,到智能投顾、智能投研,在不断取得新的应用进展。依托于计算机和数据信息的发展,“AI+”的模式将给我们的投资研究带来更多的助益。未来将在“AI+”量化投资中探索更多的想法和应用。