AI+投资其实并不新鲜,但为什么不少模型和算法的表现都不尽如人意?
在微软亚洲研究院副院长刘铁岩看来,原因之一是动态变化的股市里,人们往往很难确定各种投资因子到底在哪个时段更加有效,如果机器能识别出当时的市场是否“正常”,学透不同的历史规律,那无疑会给投资策略带来更有效的决策依据。
创办时间超过二十年的微软亚洲研究院被誉为“AI黄埔军校”,AI+投资也正是这家科研机构长期关注的领域之一。近日,在通联数据主办的全球资产管理数字化转型峰会上,副院长刘铁岩就以《共同探索智能投资研究的新边界》为主题进行了分享。
刘铁岩从高频数据、市场状态、交易成本等多个角度出发,详细介绍了他们对于智能化投资的研究,并讨论了金融投资的实战和研究之间存在的巨大鸿沟:算法有时只在论文的小型数据上有效果,研究者不清楚金融场景特有的实现细节,缺乏领域知识,缺乏稳定公开的数据源等等。
以下是刘铁岩的演讲内容,雷锋网AI金融评论做了不改变原意的整理和编辑:
今天跟大家探讨一下我们在智能投资研究方面的心得体会。
微软亚洲研究院是微软在海外最大的基础和应用型研究机构,在过去20年间,我们在计算机领域,全球最顶级的会议和期刊上发表了大量学术成果,被MIT技术评论誉为全球最火的计算机实验室。中国各大高校的学界精英、各大高科技企业的领军人物,很多都是微软亚洲研究院培养的院友。
虽然我来自这样一个基础科研机构,但和金融也不是毫无关系。2017年微软亚洲研究院成立了创新汇,它的目标是和中国各行各业领军企业一起探索智能化、数字化转型。正是借助创新汇的平台,我有幸和金融界的朋友探讨智能化投资话题,也激起了我本人的兴趣。
所以在过去的一段时间里,我们针对智能投资做了一系列的研究工作,这也正是今天想要和大家分享的内容。
作为一名学者,我关心的并不是股市的风云变换、大盘的涨跌起伏,相反更关注的是投资背后的科学规律,希望从表象能抽取出行之有效的技术框架,能够服务更多的金融机构和行业。
我们虽然关注的是金融投资方面的研究,但是也不完全是纸上谈兵,过去4年中我们研发了一系列金融投资场景下的技术,也和合作伙伴一起进行了AI技术的实盘测试。
这张图展示的是其中一个AI模型在过去一年的表现,对标的是中证500,与指数相比大概有超过30%的超额收益。
不过,今天和大家分享的并不是这个模型,而是从更广泛的角度探讨AI对于资管、投资行业有什么样的启示。
在过去几年间,我们开发了一套自顶向下、比较完善的智能投资技术框架,包含:
数据智能:从海量的数据当中挖掘有效的α因子;
智能预测:针对市场动态性自适应地训练高效的人工智能模型;
智能策略:基于AI的风险分析和投资组合构建,
智能交易:用AI技术辅助自动化订单执行。
不过,这里我想强调的是,所有这些技术都只是一种工具和服务,是用来辅助人类投资者的,只有HI(human intelligence,人类智能)+AI,才能实现混合智能,做出最好的投资决策。
在金融投资中,当进行日频、周频、月频投资时,很少利用高频交易数据。那些关心高频数据的人,很多是为了实现日内的算法交易。这里其实有一个很有意思的问题:在做中低频投资时,高频交易数据到底有没有用?
智能投资的优势在于,从更广泛更海量的原始数据里,抽取有效的投资信号。某种意义上来讲,在金融投资这个大型博弈场里,谁拥有更多的数据,谁对数据挖掘的更充分、更全面,谁就占有更多的先机。
从这个角度讲,高频数据应该是有价值的,因为它确实包含了更加丰富的信息。但是天下没有免费的午餐,高频数据的信噪比很低,有时高频数据所蕴含的趋势和规律与中低频数据可能存在矛盾。
另外,虽然有高频数据作为输入,但是我们能够利用的反馈信号(如收益),通常还是中低频的。这种中低频反馈信号对于高频数据而言,密度很低且有效性存疑。
为了解决这些问题,我们的研究团队开发了一套基于自监督对比学习的表征预训练方法。该方法的基本想法是:人为定义一些反馈信号用以提高反馈信号的密度,如果设计得当,它有可能作为高频数据和中低频预测目标之间的桥梁。
为此,我们利用了两种依赖关系:
一、空间依赖,指来自高频数据和中低频数据的信息,要在某种程度上保持一致;
二、时间依赖,指的是在时间轴上不太远的两个高频数据,需要具有某种一致性。
有了这样的自监督对比学习方法,我们有望从高频数据里去伪存真,找到对我们有用的信息。那么效果如何呢?
首先来看一下左边这个图,它是直接使用纯粹的高频数据,不使用额外的自监督对比学习方法。其中,红点是未来一周按照股票价格走向衡量表现最差的20%股票,绿点是表现最好的20%股票。
可以看到,直接对比二者的高频信号,其实没什么区别;但使用自监督对比学习之后得到右图,可以清晰地看到,头部20%和尾部20%的区分力被明显扩大。
我们对自监督对比学习进行了更系统的评估,计算了它所对应的Rank IC。
蓝色:简单使用中低频(日频)信号;
橙色:把日频信号和高频信号简单拼接在一起;
灰色:用自监督对比学习技术从高频数据中学到的因子。
可以看出,通过使用自监督对比学习,我们得到了更好的投资有效性。在将近一年的时间里,其整体预测效果明显超越只使用日频或者简单拼接日频+高频的方法。
用自监督对比学习方法解决了反馈信号密度的问题,但还有一个问题没有回答——反馈信号的有效性。有关这个问题,我们需要考察两点:
一,频率的差别。从中低频数据中得到反馈信号,去指导高频学习,这种频率之间的跨越是不是需要一些技术来填补;
二,投资链条很长,预测只是其中一环,如果用下期的预测目标作为反馈信号,有可能并不能代表未来整体投资的收益,是否应该重新考量如何定义反馈信号。
为了解决这些问题,我们发明了基于元学习的模块,为预测模块提供新的反馈信号。
图中画圈处(Meta Model)即是元学习模块,它的输入既有高频数据也有低频数据,既有历史数据又有未来数据,在此基础上为预测模型提供反馈信号。
而反馈信号好坏的评价准则,是整个投资链条最后的收益。其实元学习是近年来人工智能领域的常用技术,换句话说就是用机器学习来指导机器学习。预测模型是一个机器学习任务,元学习也是一个机器学习任务,后者对前者的训练过程进行指导。
为了更好地展示元学习模块的效果,我们限定它的行为——要求它只对未来20天的预测目标进行加权平均,用它来作为预测模型的反馈信号。从图中可以看出通过引入元学习模块,我们在年化收益的层面上有了大幅度提高。
图中绿色曲线表示元学习模块给预测模块提供反馈信号;而蓝色曲线表示用下一期的目标作为反馈信号指导预测学习。
通过调整投资过程的交易成本,我们发现随着交易成本的提升,元学习模块会把权重更多的分配给更长期的目标值。
换言之,交易成本越高,元学习模块越希望我们频繁交易,算法希望关注长期趋势。这说明元学习模块可以自动学到有用信息,提高预测模型的反馈信号效果。
大家知道,金融投资有个很大的挑战:股票市场是动态变化的,各种投资因子的有效性随着时间此起彼伏;其中的悖论就是,我们不能确定哪一个因子在哪一个时间段更加有效。
面对这一复杂问题,我们并不是无能为力,至少能做如下的问题拆解:
第一,判断一下当前的市场状态是否在历史上曾经出现过?一旦出现过,就可以利用历史数据中的蛛丝马迹,对当前市场进行处理;如果当前市场状态在历史上从未出现过,说明这是异常的市场,其实我们也不必纠结,“躺平”也许是最好的办法。
第二,假设当前市场状态在历史上曾经出现过,我们需要对历史数据进行充分的学习和总结,以希望从中找到有用的规律。那么相关的问题就是:历史规律是否只有一种?如果有多种相互矛盾的规律,比如动量和反转,又该如何学习?
第三,假设我们已经可以学习了不同的历史规律,那么针对当前市场,该如何动态选择一种或者几种历史规律,做出最好的投资决策呢?
为了回答这些问题,我们研发了基于市场状态调整和选择投资策略的框架。
我们使用了自编码器对市场状态进行表达,再把这种表达传给异常检测模块。如果异常检测模块对当前市场状态给予非常低的置信度,我们应该采取被动的投资策略。如果置信度比较高,说明我们有一定自信,可以通过组合历史数据和历史规律处理当前情况。
右图是异常市场检测模块的性能,蓝色对应指数波动,橙色对应于异常检测模块给出的置信度。可以看见,2015年股灾附近,异常检测模块就给了很低的置信度,并且提前有所预警。
可能有人会说,当时整个市场走势异常肉眼可见,何必使用那么复杂的模型来判断呢?
那我们再看一个例子:2019年贸易战期间的市场状态,变化其实没有那么剧烈,人眼不太看出得来。但事实上当时很多行业受到打击,也有很多行业因此得到机会,行业结构的调整,单从指数上是看不到的,但是自编码器就能充分感知。这就是为什么我们的模型,在2019年之初就有非常明确的预警信号。
当我们能够判断当前市场是异常或正常之后,接下来的任务,就是从历史数据中找到未来可以借鉴的规律。
但难点在于,因为历史数据存在各种互不兼容的规律,这些规律反复出现,不同时段出现的频率也不稳定。如果忽略规律的矛盾性,只简单学习一种模型,那这种模型通常会顾此失彼,学到模糊的平均状态,对每一种历史规律的刻画都不到位。
我们的做法是:同时学习多个模型,希望这些模型尽可能不同,尽可能体现出各自的特点,并且能够对市场有一个非常好的解释。
我们发现,这个任务和最优运输问题异曲同工。我们的任务是把每一条历史数据分配到某个历史规律之下。历史数据相当于最优运输问题里的物品,历史规律相当于最优运输问题里的目的地。而历史数据和规律的契合度,就相当于物品到达目的地的运输成本。
做了这个对应之后,我们就可以利用最优运输问题的各种优化方法,帮我们实现高效的数据划分。
下图展示了基于最优运输问题进行数据划分,得到的各种历史模型之间的性能。
左边是一个基线算法,采取的是简单的多路神经网络,没有做预先的数据划分;右边这个图展示的是基于最优运输算法实现数据划分之后再进行学习的结果。左图中,各个模型表现大差不差,相关性非常高,在各时段的表现都没有那么亮眼。
相反,我们的方法可以学到相关性比较低的多个模型,这些模型在不同时间段的表现非常不同,这就给我们提供了机会——因为这些模型越不同,越此消彼涨,我们就越有机会用动态的方式组合它们,最终应对比较复杂的市场。
为了动态组合这些模型,我们使用了注意力网络。所谓注意力网络,是近年来人工智能领域非常有用的技术。从本质上来讲,它是对既有的神经网络结构和参数根据外部输入进行调整,所以我们得到的不是一张静态的神经网络,而是随着时间和外部信息动态变化的神经网络。
正是利用这种动态性,我们才有可能在跌荡起伏的股市上保证常胜状态。这个图告诉我们,在使用了自适应网络之后,最终可以取得各种模型性能的上包络。
俗话说:投资有风险、入市须谨慎。也就是说:风险控制是金融投资里面非常重要的环节。一个人之所以成为投资高手,不是因为他能发现一两个阿尔法因子,而是他能够有效地控制风险,能够在股市里面找到常胜的规律。
那么,投资过程中的风险有哪些类别?
首先,未来市场充满未知,我们总是会面临投资不确定性,这就是所谓的固有风险。
其次,在使用预测模型辅助投资时,因为模型本身的误差,会引入额外的模型风险。
只有在构建投资组合时,把所有这些风险都考虑在内,才能在投资时立于不败之地。
人们虽然对于风险因子的重要性没有什么异议,但是对风险因子的研究进展却非常缓慢。因为传统因子的构建需要依赖专家的理论创新和经验积累,同时对于不同的市场需要用不同的方式人工去定义因子。
大家知道,从最早的CAPM模型到Fama TFM模型经过了31年,也无外乎增加了size、value这几个风险因子。而从Fama TFM发展到BARRA CNE5,经过了20年,也只是增加了动量、成长等为数不多的几个因子。
在风险因子挖掘方面人工智能大有所为,因为人工智能可以自动从数据当中发现有用的规律,可以把风险因子的刻画做得更充实、有效、及时。在人工智能的眼中,所谓固有风险因子就是要学习出市场状态的正交基;而所谓模型风险就是刻画出预测结果的置信度和相关性。
具体而言,针对固有风险的学习,我们的任务是利用少量独立的风险因子解释市场,未来希望投资组合在这些因子上有充分的暴露。
用数学语言来描述,就是希望从高维非线性的原始数据空间,变化到低维的隐式风险因子空间。
为了实现这一点,要有一个优化目标,我们希望在低维的隐式风险因子空间里,各维度尽量独立,同时对市场解释能力足够强,这就对应于幻灯片里展示的优化式子。
这个式子的蓝色部分,表达的是最大化股票收益在这些因子上的投影;红色描述的是各因子之间的相关性,希望最小化相关性或者最大化差异度。
通过这个优化过程,我们可以自动学习出一组风险因子。它们可能不像传统风险因子那么容易解释,但它们对市场的描述更充分,并且先天具有非线性性。在构建投资组合时,效果更好。
接下来,我们谈一谈模型风险。单只股票的模型风险很容易理解,描述的是股票实际收益低于预期收益的情况——但并不是单只股票模型风险大,投资组合的风险就一定大。
比如左图里两只股票,预测得分都很高,但实际收益很低,显然单点的模型风险和组合风险是一致的。右图两个股票的预测值很高,但是实际上一个高收益一个低收益,这种情况下投资组合的风险其实是不高的。
投资组合之所以要做风险控制,就是希望至少有一些股票表示强劲,不要大家同涨同跌,所以在这种情况下我们认为投资组合的模型风险并不高。
换句话说,投资组合的模型风险,需要考虑股票之间的关系,而不是简单由每支股票自己的单点模型风险所决定的。
为了更好地给模型风险建模,我们考虑到图神经网络,在这里面每个点描述的是单只股票的模型风险,边描述的是两只股票之间的关联关系。
在整个图神经网络迭代的过程中,单点模型风险会不断修正投资组合的模型风险,反过来投资组合模型也会修正单点的模型风险。所以当整个图神经网络的学习收敛之后,我们就得到了一个整体的模型风险矩阵Σμ,这个矩阵加上之前自动学习出来的隐式固有风险的矩阵,共同用于投资组合的优化。
我们对于这种基于AI的风控方法进行了评测。右图中,蓝点表示基线方法(BARRA模型),红点使用了隐式固有风险技术,而绿点则同时考虑了隐式固有风险和基于图神经网络模型组合风险。
从图中可以清楚地看到,使用新的风险因子确实可以得到更好的收益和风险的平衡。
当我们有了好的投资组合之后,最后一公里的事情就是执行换仓的订单。
这个事情非常重要,因为给定一个换仓的订单,不同的执行方案会对应完全不同的交易成本,所以很多有实力的交易机构都会在日级别元订单的基础上,关注小时、分钟甚至秒级的操作,希望能控制交易成本。
而一个订单执行方法的好坏,通常我们会用订单完成后的平均价格去衡量。
这张图是订单执行策略的基本概念,如果有一组订单把他们按照时间均匀执行,就会得到按照时间加权的平均价格。
如果可以预测每一个时间段的交易量TWAP,并且按照这个预测结果调整订单速度,就会得到按照交易量加权平均的价格VWAP。
它们都是市面上常用的交易算法,但显然它们都不是最优的,因为如果我们真有本事在价值最高点去执行订单,一定会有更好的平均价格——但这个事情又不是那么简单,因为在任何时间点都有交易量的上限,很可能在价格最高点没有足够的市场容量去完成订单的交易。
因此,订单的执行不是一件简单的事情,需要很好的算法支撑。
我们尝试了使用强化学习来实现自动的订单执行。强化学习是人工智能领域非常重要的门类,大家都听过的AlphaGo就是使用深度强化学习的算法。
我们的订单执行任务因为可以很好地建模成强化学习的问题:给定一个状态(市场信息、剩余时间、剩余订单量),选择合适的动作(控制当前订单执行的速度),从而得到某种奖励(比如订单执行后的平均交易成本、订单是否如期完成、瞬间的交易量是否过大等等)。
看起来强化学习是非常好的工具,可以解决订单学习的问题,但如果大家是行家就知道,强化学习是不容易驾驭的工具。
强化学习有很多缺点,其中包括:训练过程不稳定;样本效率比较低。为了解决这些问题我们发明了一套新的技术,叫做先知教练,它具有完美信息的访问权,可以看到未来的价格和交易量,不需要去猜,所以可以通过优化的手段得到全局最优的执行策略。
有了先知教练之后,可以用它为基础,利用策略蒸馏的方式,把它的所知所得传递给RL智能体,以此提高学习智能体的学习效率和稳定性。
最终实际使用AI模型在线实现订单交易时,我们当然不能使用先知教练,但被完美先知教练调教出来的智能体已经有了很好的表现。
到此为止我向大家介绍了数据智能、智能预测、智能策略、智能交易等研究的进展。当然,四年的积累远比我今天介绍的内容多得多,如果大家有兴趣,可以通过微软亚洲研究院创新汇的平台和我们建立长期的战略研究合作关系,共同去探索智能投资的边界。
最后还想和大家分享一下我关于智能投资研究与实战的思考。通过这4年的亲身经历,我发现金融投资的实战和研究之间存在巨大的鸿沟,很多算法仅在论文里的小型数据上有效果,拿到实盘上测试表现就大相径庭。
其中一部分原因是这些研究者并不了解金融场景特有的实现细节,缺乏领域知识,缺乏稳定公开的数据源等等。我们只有填平这个鸿沟,架起连接研究和实战的桥梁,才能让学界和金融业界共同促进智能投资的发展。
怀着这样的愿望,我们团队开源了一个项目叫Qlib,是全球第一个智能辅助量化投资的技术框架。我们采用MIT协议,将我们的研究环境,向广大金融从业者开放,未来也会逐步将我们的研究成果通过这个平台进行分享。这个开源项目刚刚上线几个月就得到很多关注,在GitHub上收获了超过五千颗星,很多国际知名的投资机构都因为这个项目和我们建立了交流和合作。
那么我们为什么做这个开源项目呢?它对促进金融实战和研究的融合能够起到什么作用?
在做金融投资研究的过程中,我们需要构建数据集,这里其实有非常多的陷阱。比如,左图所示的幸存者偏差:其实很多股票在历史上都消失了,今天幸存的股票是比较常见有韧性的股票。
如果我们只关注存留的股票,忽略当时市场上存在的股票,我们学习的环境就会与当时的市场不一致,就会出现学习的时候不错,但拿到实盘上损失惨重的情况。
再比如,我们在构建数据集时,经常需要对股票价格进行处理。通常有两种方式,一是前复权价格,也就是把历史股价按除权后的价格进行调整,二是后复权价格,就是将当前股价按除权前的价格进行调整。
其实无论哪一种处理办法听起来好像都没有问题,但是当我们把它用于机器学习和人工智能的时候,就会出现一些隐患:
假设我们使用前复权,就会把股票未来的走势通过复权的行为融入到历史数据中去,这时学习过程中就会出现未来信息泄露的问题,学到了看似很有效的模型,在真实场景中使用就会出现很大的纰漏。
回测的时候也是一样,比如很多论文都没有考虑涨停不可买入,跌停不可卖出的现象,没有考虑最低交易量的种种限制,所以一旦把这些因素考虑在内,回测出的超额收益会有非常大幅度的变化。
所以我们认为有一套通用的、非常接近实盘操作的开源框架,是促进金融投资、智能投资方面的研究和实战的必由之路。
除了前面提到的几点以外,Qlib还在其他很多方面做了细致的工作。当然我们不可能面面俱到,所以我们非常期待金融界的同行去试用这个项目,发现其中的问题,和我们一起把这个做的更好,在学界和业界之间架起更加通畅的桥梁。
最后,我想说:金融领域的智能化进程刚刚拉开帷幕,虽然我们和合作伙伴一起在AI投资方面进行了一些令人鼓舞的研究尝试,但未来的路还很长。所以,我们呼吁大家一起努力,借助整个AI研究社区的力量,共同推动金融科技的发展。联手攻克核心技术,才能水涨船高,共同繁荣。谢谢大家!
雷锋网雷锋网雷锋网