打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
风禾资产王黎:机器学习在CTA中的潜在应用


时间:2017年1月5日PM
地点:上海香然会
主题:中融-量邦 高级量化投资方法闭幕研讨会 第一期现代CTA暨程序化交易



个人简介:王黎,风禾资产创始人。曾就职于世界顶级资产管理公司美国贝莱德(BlackRock)公司,任大中华地区首席基金经理及量化分析师,研制的量化投资模型在亚洲、新兴市场及北美股票市场中控制着上百亿美元资产的交易。全国物理奥林匹克竞赛获奖后,保送进入清华大学计算机系,后赴美进修获得一个博士学位和四个硕士学位,研究覆盖金融、统计、运筹学和计算机科学等多个领域,学术水平在数据挖掘和人工智能等领域达到世界领先水平。




正文:今天非常高兴有机会来上海跟大家交流,非常感谢冯博士的邀请,我们认识将近有十年了,我记得是在大雪纷飞的中午,冯博从芝加哥开车来访问,聊一些学科的知识,也将近十年了。冯博组织的会一定要过来捧场。

今天的题目一开始定的是机器学习在CTA中的应用,我最后改成了潜在应用,刚才冯博非常谦虚觉得自己诚惶诚恐,其实我觉得诚惶诚恐的应该是我,因为对于我自己的经验来说,以前讲这个题目,虽然机器学习是我在做博士的时候一个主要方向,研究了很长时间,同时量化还有CTA也是在投资中用的方法,但是把两者多么深的结合在一起,其实我们倒没有做的非常好。在我们自己的投资里面虽然用到了机器学习,但更多的是以非常简单的一些方法,没有用到以前读博士期间使用的或者研究的很多很深入的方法,所以我觉得今天主要还是抛砖引玉,对我们自己还没有做到的复杂的方法,能够在CTA或者量化投资里使用,可能今天更多的是从我自己本身的感受,本身我在机器学习和CTA和量化投资里面,有很多年的经验,但是没有非常好的把它们结合在一起,所以今天更多是抛砖引玉,看看大家有什么样的想法能够一起交流,也希望从大家身上学到很多有利的东西,所以我今天把题目改成了潜在应用,更多的是从自己的经验,更多的谈机器学习,另外一个是量化或者CTA这部分,怎么具体结合也是我想从大家身上获得的。

先简单介绍一下风禾的背景,今天也看到很多朋友,很多师弟都在现场,我们是完全做量化投资、量化对冲的一家公司,从投资理念上来说我们是一个不偏科的公司,从股票、大宗商品、CTA还有宏观对冲,只要是国内外比较成熟的策略,我们听说过都愿意去实践、研究,在我们的基金里面进行实践。我在北京一开始是学计算机,在清华大学读的本科,后来开始在美国读的硕士学位,后来转到密西根大学读的管理博士。我本身对机器学习的理解是从弗吉尼亚的时候,当时做的是文本搜索,当时编了很多程序,当时还是C++的编程,做了大量的搜索引擎。2000年我大学毕业然后出国,在美国的雅虎是非常如日中天的,谷歌刚刚开始,当时我们做文本搜索是属于非常先进的技术,刚刚开始,谷歌是当时的一个新秀,完全没有像现在这么如日中天。

当时在弗吉尼亚的时候做了大量的文本挖掘,包括当时用的各种各样的算法,包括基因分析很多。更多的不是一个统计的方法,当时做的很多的机器学习,是计算机的一些方法,通过编程实现,本身统计对于数学的要求还不是特别高。

后来在读计算机期间,当时经历了2001年的IT泡沫破灭,当时也看到这个行业里非常惨,整个做IT的大家都找不着工作了,觉得非常郁闷,当时就琢磨自己该转业了,本来计算机是一个很好的行业,结果怎么一夜之间就找不到工作了。我就琢磨往金融的方向转,所以当时去了密西根大学读管理学。在国内管理学是一个比较文科的学位,但是在海外属于比较偏数学的,所以我当时做的也都是机器学习,机器学习涉及的非常广,你要通过计算机实现,要会计算的编程,涉及到很多统计学的原理,统计是非常重要的,对于优化来说,很多的算法是基于优化的,所以当时本身涉及到大量不同的专业,计算机本身就是本科和研究生都学的。很多人问我说为什么学了这么多学科,就是为了当时研究的需要,本身是想做机器学习,涉及统计,我就读了很多统计的课,一看读了很多课那我再读几门就可以拿一个学位了,所以就把统计拿下来了。工业工程设计到优化,机器学习很多实现了以后,怎么实现优化的算法非常重要,一个好的算法能够很快的收敛,到它优化的点,不好的话你可能会很慢,它计算的程度是不一样的,所以当时为了学习优化在工业工程那边学习所有的优化课程,毕业之前想我再学几门课就可以拿一个学位,再努力一把又读了一个学位。

金融工程是当时读统计学、工业工程的时候,金融工程的同学我都认得,有些交叉学科也同时上这些课,经常问我一些问题,跟他们也很熟了,后来我想这么多课了,我干脆再多读几门课,所以金融工程也这么拿下来了,整体来说在读书期间一直是围绕着机器学习,心里想的是怎么能够把它用在金融市场。

所以我记得当时冯博来密西根访问的时候,我每天想着怎么把自己学的机器模型,各种各样的模型怎么样用到金融市场里面来。在这个行业里摸索了很久,直到后来我真正的进入华尔街,进入这个行业,跟着做投资的人去学习,后来发现机器学习这些方法,其实非常丰富多彩,我自己也是遇到了一些困扰,后面也会谈到,当时在学校里面毕业以后,进入了美国的贝克莱全球投资股票投资的领域,当时遇到了一个很大的冲击。本身我在去量化投资这个岗位之前,我想象的是量化投资是用大量的非常复杂的、很先进的模型,在股票市场里面进行搜索,找各种各样的规律。但去了以后发现真正在行业里面,最起码在我所在的部门,大家用的复杂的东西非常少,反而是一些简单的统计,算的是平均值、方差、线性回归,顶多算一下相关的矩阵,可能这是用的优化的一些东西,这是用的最多的,很复杂的一些在当时是没有用到,更多的还是在股票领域,用的更多的还是基本面的分析,对于金融市场的理解,每天更多地做的是跟分析师见面,把思路提纯出来,在自己的模型里面根据他们的经验我们编出来这种相应的模型,回撤,倒没有数据挖掘。

在整个组里面大多数人是做会计和金融的,我的想法是教会大家怎么样使用这些复杂的模型,但呆了几年以后反而被当时的环境给颠覆了,用的所有方法都是基本面的方法,很简单的一些统计的方法。但这样的方法在当时基金操作里面已经用得非常好,像当时做的股票的多空,在亚洲新兴市场的基金,在贝莱德内部属于非常优秀的,收益非常高,用的全部是基本面的建模的方法。

2012年回国创建了杭州龙旗科技这家公司,做了主要创始人,搭建了股票模型和股票的量化团队,这家公司发展非常快,2012年开始建立,2013年发第一支产品,到2015年已经管了一百多亿的资产。目前我们团队有20多个人,做量化研究、交易的有十几个人,背景跟我很像,计算机、工程相关的。我们公司学金融、会计的也有,全部在市场部,真正的投研团队是一个非常传统的量化投资的团队,全部是理工男。

我们现在做的东西相对来说比较全面,以前在美国做了各种择时类的,大宗商品、CTA、宏观对冲还有债券类的,是一个非常丰富的策略。我们从2016年开始公司正式运营,2月份发的第一支产品,到现在运行了将近20个产品,规模在10个亿左右,跟很多的券商、期货公司都建立联系,包括跟浦发银行也设立了第二支基金。我们在非常动荡的2016年里还是非常稳健的,经历了双十一、双十二,很多的黑天鹅不断,我们采用了非常分散的方式,控制不同风险度的产品,风险度比较大的、操作比较重的蓝线可以达到年化30%的收益,最大回撤是在2%以内,从月度来看。从日度来看可能是3%以内。比较稳健的红线基本可以做到年化15%左右,月度来看回撤是小于1%的。这是多策略的优势,每一个基金就是不同的策略同时运行的。

接下来进入今天的主题,对于机器学习在金融中间应用的探索。从机器学习来说,它是人工智能的一个分支,它更多的是根据数据去改变模型,根据数据去改变模型的参数,最后它的用处是未来做预测,有新的数据进来你不知道结果的,你把它放到经过衡量的模型里面给出你一个预测,从本质上来说,当我第一次接触机器学习的时候我就非常兴奋,为什么呢,因为它是预测未来的,预测未知的。当时我非常喜欢炒股票,是我个人的一个爱好,我当时第一个反应是我拿它去预测股票是不是可以预测涨跌,机器学习本身的目的就是为了预测,它是一个多领域交叉的学科,涉及到非常多的领域,包括统计、优化,计算机也非常重要,如果你自己真的做到算法级别的话。如果是应用的话还好,只是使用这些模型,但是如果你要改变算法,改变机器学习的模型的时候,这个时候一定要自己去实现自己的算法。

机器学习在工业中有非常广泛的应用,包括医疗、搜索引擎,像百度、谷歌用了大量的机器学习的方法,像做自然语言处理,我自己本人一开始读计算机的时候,基本是一直围绕着自然语言处理,文本挖掘这个方面,用大量的不同的人工智能的方法,通过计算机学习的方法。传统的计算机程序是你写好了,你有数据,然后你写好一个逻辑,让这个逻辑沿着你的数据让计算机运行,最后根据你强调的逻辑,根据数据产生结果。机器学习跟传统的从概念上是不一样的,因为我们是有数据,有了结果,我们通过计算机去发现数据和结果之间的关系,学习出来的结果是一个程序或者说是一个模型,比如说把一大堆数据给他,计算机帮你不断地通过它的算法找到数据和结果之间的数学模型。比如我当时做文本挖掘,什么叫文本挖掘,就是说你有一篇文章,你想找到相似度最近的另外一万篇文章,就像做谷歌搜索一样,你打出几个关键字,怎么样在一万篇或者上亿篇文章里面找到与这个关键字最近的,它能知道你到底要找什么,这是当时要做的。一般的传统的方法是通过人,通过专家,通过知道这个词怎么样最后变出一个搜索的方法,通过人为的方法,非常像我们做股票的时候基本面的方法,把这个数据带进去进行搜索。

机器学习像我们当时用的基因算法,它是另外一种完全以数据为导向的方法,你把最匹配的结果告诉它,通过专家读完以后告诉它,比如你现在找一百篇文章,读完以后你告诉它跟你的搜索最近的十篇文章是什么,它已经知道结果的情况下,它去寻找数据和结果之间有什么联系,基本来说机器学习可能跟传统的是不一样的,在于它是以数据为导向的,你告诉它结果,它去帮助你找寻一些人为发现不了的,或者不好去解释的联系。机器学习本身的发展历史是从1960年最早的邻居法,对数据进行归类的方法。到了1970年出现了一些线性的判别分析,到1980年出现了当时非常热的人工神经网络还有决策树,在1990年和2000年之间是支持向量机是当时非常流行的算法,包括我在读博士期间做了很多的支持向量机的研究,创建了很多支持向量机的方法。后面的10年可以说是随机森林非常流行的方法,它是把不同的非常弱的一些好的预测模型叠加在一起,最后形成一个非常强的,但是这些弱的之间要非常独立。从我们做龙旗和风禾我们实现的理念就是随机森林的方法,我们创建一些弱的模型,每个模型都不会非常强,但是当你有一大批非常独立的模型结合在一起,最后就形成了一个非常强的模型,它的适应性也非常强。到2010年以后就出现了深度学习的算法。

这个图是说明一下机器学习的分类,如果从大类上来说,机器学习可以分成监督学习和无监督学习,另外一个角度从我们想预测的变量上面可以分成分类变量和连续变量。监督学习先从列来看,监督学习是在学习的过程中,首先我们有一些数据,这些数据我们知不知道结果?如果知道结果你就要监督学习,非监督学习就是我们不知道结果。像我刚才说的一大堆文章,有一万篇文章,我们这边有一些搜索的关键字,如果我们通过专家把这一万篇文章都读出来了,我们知道跟这个关键字最匹配的有一百篇文章,剩下的都是不相关的,这样我们知道一个结果,有结果的话我们根据这个结果进行学习,从这个数据里挖掘出来它们之间的相关性是什么样的。希望未来一旦学习好了这样一些模型,或者一些规律,当出现一个新的搜索字的时候,我们知道在一万篇里面怎么去找。在未来没有见过的数据里面,它可以找到我们想要的东西,或者作出预测。

无监督学习就是我们不知道结果,可能是一些聚类,一大堆个体怎么把它分类,还涉及到一些降维的研究。从变量,我们感兴趣的是分类变量还是连续变量,比如一万篇文章,有一百篇是相关的,其他的都是不相关的,那么就是零一的区别。假如我们预测股票市场或者大宗商品的收益,它是连续的,可能是涨1%,也可能1.2%,也可能1.25%,它是一个连续的或者负的,这个时候就是连续变量,一般在实际中用得最多的是线性回归或者神经网络,包括支持向量机,可以做分类变量也可以做连续变量。

刚才说做一个分类变量。每个股票都有很多不同的特征,根据它的指标我们怎么样通过一个算法能够把这些不同的股票聚类聚在一起,可以把它分类,这样就有大量的聚类算法。

这个图就显示了,在左边是指监督少,右边指的是监督多,一般我们在左边这些例子里,因为是一种无监督学习,这里面所有的图片都混合在一起,没有任何规律,没有任何结构,需要计算机它能够做出来一些分类,能够把这些人、考拉,有人和考拉在一起,有汽车,怎么把这些个体分出来,这是无监督学习。右边已经是人为的读这些图片,或者通过计算机产生很多的特征,这里面就把这些人、考拉还有汽车,首先人可以把它分出来了,其次还有很多根据相应的物体它的特征,产生了一定的变量。中间这个例子是把人、考拉、汽车分开了,但是没有做更多的处理,叫弱监督学习。计算机是不是产生了很多特征值,这个叫做监督学习。如果你不知道结果,更多的是在探索数据结构的特征,探索它的一些统计的特点的时候叫做无监督学习,两者之间的就叫做弱监督学习。

机器学习涉及到两个概念,一个是训练集,一个是测试集。训练集是什么意思呢?大家知道机器学习都是一个数据为导向的方法,你有了这些数据根据计算机的算法,最后找出一个规律。作为任何一个模型你有大量的参数可以去调整,有各种各样的选择,神经元网络有很多不同的层,怎么去使用这也是一个参数。像支持向量机它本身有很多的选择,有线性的,非线性的,在这些选择里面哪个比较好呢?一般是通过测试集。比如我们可以通过不同的参数在训练集里面,我们可以把它找出相应的模型,每一个模型找出不同的参数的选择。一旦决定了以后,两层还是三层还是四层,它根据已有的数据,出来的模型是不一样的,你在测试集上进行测试,你可以知道哪个更好,是两层的好还是三层的好,一般是用预测值,以预测的精准度作为衡量,你可以选择到底什么样的结构是最优的。

当然我刚才说的方法是有很大问题的,看似我们在训练集上进行训练,找出模型,不同的选择,再一个完全独立的测试集上开始测试,看似非常合理,但是这样潜在的危险是非常大的。其实不光是机器学习,任何一个统计方法过度拟合都是非常危险的,拼命的找出很多方法,找出比行业标准增加5%或者10%,然后写一篇文章,再少的话3%也不好写文章,其实很多都是过度优化的结果。但是当时在学术界没有办法,大家发文章的压力太大了,毕业的时候必须得发。很多时候你都没有意识到你在做过度优化的事情,你是在已有的数据里面进行大量的挖掘,最后好像选出一个模型,或者追求一个方法,能够更好的预测,但其实本身你是经过了大量的尝试,最后找到了,本身它也是一个过度拟合的错误的方法。

在投资中间,其实是非常可怕的,像我们写文章,文章发了就胜利了。但是如果我们在实践中,尤其是我们每天做的事情,在投资的过程中过度拟合了会造成非常可怕的效果。这个是杭州某科技公司在发行产品的时候,它的宣传材料上写的,说他们通过这个方法,2015年限仓以后交易比较清淡,大家都在想怎么转型。它的回撤曲线非常漂亮,基本上一年里头有40%的收益,亏损的月份几乎没有,当时也受到了市场的追捧。但是当它的产品发出来以后,运行了一年半,它出现了一个什么情况呢,一年半以后这个产品跟它当时展示的回撤的结果完全不同,运行了一年半还是在亏钱,中间的最大回撤超过了10%,这是一个非常典型的训练集、回撤和实际的实盘相差非常远的过度拟合。过度拟合是怎么回事呢?这里要谈到几个概念,一个是偏差、一个是方差,一个是误差,偏差是模型本身的精准度,无论是从数据里学来的还是人工的经验编制出来的模型,它的准确程度、精准程度,方差是variance,反映了稳定度,因为我们的模型都是通过已有的数字调试出来了,通过业务连接的样本优化出来的,当你这些样本已经变了的时候,你对这个模型稳定度的变化就是方差。误差是指最后的模型预测的精准度,对于未知的这些数据预测的准确度是多少,这是误差。

所以通过一个数字的简单的方式,就像射箭一样,靶心是我们想达到的,靶心是真正的未来的数值,我们未知的数值,我们射箭的时候到底往哪里瞄,你可能瞄得非常不准,你看的是靶心,但其实你瞄的是旁边,像左边的图,这是偏差比较大的一个模型。你瞄得非常准,全部是冲着靶心,你的箭瞄的大方向是靶心,这个代表偏差小。

方差指的是什么呢?方差大指的就是一个模型如果像左边这样,它扰动非常大,每一箭你都不知道射在哪儿,虽然你瞄的很准,没有斜视,但是你手很潮,每次都不知道射到哪里,那么这就是方差。它的模型稍微变一点,会非常敏感,这就代表是一个方差大的模型。方差小是虽然射手瞄的很歪,但是他的手很准,全部射在歪的地方。那到底什么好呢?

我们认为一个预测或者机器学习的方法,最后预测的效果是由两部分共同决定的,是偏差和方差加在一起,所以无论是方差或者偏差哪个大了都不好,都会改变预测的精准度。但是也不是说这两个都要小,实际上这是鱼和熊掌不可兼得的事情,因为从现实来说,如果是降低了偏差,方差就会增加,相反降低方差,偏差就会增加,这是为什么呢?

这是我们最理想的情景,射箭的时候我们瞄的非常准,每次都正中靶心,而且非常得稳,每次都是在很小的范围里面,这是最理想的状态。但实际在建模的时候无论是统计模型还是机器学习的模型,实际中一定是在现实的两者之间的取舍。一般来说我们一定是给两者之间或者选择一,或者选择二,或者是选择两者中间的一个状态,很难达到最理想的状态。

从模型上来说,它有什么特点?这是一个模拟的例子,一个真正的模型是绿线,红点是模拟出来,随机生成的扰动,在我们做无论是统计模型还是机器模型,你可以有不同的复杂度,你观测到这些红点,如果你有一个非常简单的模型,比如这条线参数是非常少的,两个数值就决定这条线的斜度,或者是一个非常复杂的模型,可以完全根据数据去拟合,蓝线需要大量的参数,所以这两个模型是非常不一样的,一个非常简单,一个非常复杂。一般来说参数很少的话,大家知道肯定是很偏的,跟绿线偏差蛮大。但是它因为数据非常少非常简单,所以它非常稳定。如果你有很多参数,蓝线虽然也很不靠谱,这两个模型都是不靠谱的,但是蓝线离整体的平均值还是比较接近的,所以蓝线的这个复杂的模型它的偏差非常小,但是方差很大。因为它完全是由数据导向的,在哪里突然增加一个点它可能就鼓出一个包,受数据的影响非常大,所以不同的模型在机器学习里是非常敏感的,你参数的选择越多,你的偏差就越小,方差就越大,这是无法克服的。

在实际中我们有计算机不同的算法,还有包括统计里面我们怎么样去选择什么是一个好的模型。比如横轴是模型的复杂度,左边是简单的模型,右边是一个复杂的模型,y轴是你真正预测的误差,就是你未来你在预测的时候的误差,这条蓝线是指你在已知的数据上面,产生的结果。蓝线相当于我们做量化投资的时候我们研究历史,根据历史找出了自己的量化模型,它可以是统计类的,可以是经验类的,也可以是机器学习类的。但是你真正用到实际中,横轴代表不同的模型,最后真正的预测是红线。所以当一个模型越复杂的时候,你可以在训练集,就是已知的数据上非常好的逼近已知的数据,你的模型越复杂,最后的误差就越小。但是实际上可能数据越复杂,出来的模型会产生一些非常不好的结果。

所以怎么样选出一个合适的模型,是非常重要的。过度拟合的特征是什么?在训练已知的数据上,因为人总是有一个倾向,在训练集上你会发现如果你逐渐增加模型的复杂度,就貌似能够非常好的预测,你就偏向于找这些复杂的,就逐渐的往这边移,在历史上你感觉自己像诸葛亮一样,能够非常好的预测历史,然后你就相信了,你认为未来也是这样。但是真正到了未来,往往是在不同的模型选择上是这样一个曲线,你需要选择一个比较适中的,一个过度优化的模型你会发现在历史上工作的非常好,像刚才展示的杭州某科技公司的回撤曲线一样非常好非常漂亮,但是真实的运行以后出现的结果是误差非常大的。

所以无论是任何方式在做量化的时候,这是一个一定要知道的曲线是实际当中跑不了的,因为我们做模型的时候非常愿意往右端去走,这样你看到数据非常漂亮,它的曲线非常美。但在未来实际交易的时候,就会有非常惊人的结果,意想不到的一些结果。

在实际中机器学习在金融市场除了交易以外,还可以做一些投资组合、优化、智能投顾,根据客户的收益目标和风险偏好提供投资建议,这是机器学习的一个很大的应用,另外在算法交易及高频交易里面有很多的应用,更多的在文本挖掘,根据新闻、社交一些文字出来的时候,它可以飞快进行处理,它可以对市场情绪作出判断,所以这三个方面可能是目前机器学习在金融行业最大的应用的地方。

再具体到CTA怎么去使用,因为我们自己确实既用机器学习也不用机器学习,在我们自己的投资里面用的是非常简单的、最基本的机器学习或者统计建模的方法,但这也是机器学习的一种,如果在CTA中间按照监督学习和无监督学习,你可以通过神经元网络,可以通过支持向量机,在历史上你知道收益,或者知道股票、商品的走势,你知道它历史上的结果,完全可以利用监督学习进行建模,相反如果你要是另外一些研究,可以通过无监督学习探索一些数据之间的结构、特点,如果你是连续变量的话,你可以直接预测它的收益的大小、正负多少。如果是分类变量的一些算法,比如说像SBI它的支持向量机,或者一些分类的方法,你可以把它的收益变成正负对它进行预测。一般来说机器学习的三部曲,首先是你选定了一个学习的方法,然后你在训练集上建模,你会发现训练集上一定非常漂亮,因为模型会逼近历史数据,最后一定会发现非常漂亮的曲线。

但是这样不行,必须在测试的数据上再进行测试,因为可能你发现有一些已经淘汰掉了,最后你在实际的交易中再进行观测,通过小的账户进行测试,看看实际中产生的效果跟你训练集、测试集是不是一样,一般这个过程需要长一些,足够长的时间,建立足够多的统计样本以后,最后可以把这样一个方法放到基金的操作里面去。

这就是我的一些抛砖引玉的想法,谢谢大家!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
张志华:机器学习=统计与计算之恋
模式识别和机器学习、数据挖掘的区别与联系
小朋友也能看懂的机器学习
基于机器学习模型的大数据挖掘优化算法
计算机试验简介
已经证实提高机器学习模型准确率的八大方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服