跨学科的AI量化其实很简单
BigQuant是以AI为核心的投研和投资平台。提供量化数据服务中台、多种投资算法、量化投资最佳实践等,提供机器学习等在量化的技术探讨和解决方案。在BigQuant技术社区,我们会发布与AI量化相关的科普内容和研究过程、研究成果,填补AI量化的知识空缺。
邵守田在宽邦科技(BigQuant母公司)担任高级策略工程师,曾在私募基金管理过数亿规模资产。现专注AI策略研究,参与BigQuant的模块建设、算法研究、策略开发,主导了CNN\DNN等算法模型研究和构建,同时主导金融机构客户的的策略研究工作。
介绍一下自己和从业的工作
大家好 ,我是邵守田,毕业于东北财经大学行为金融硕士研究生。曾在私募机构任职基金经理,管理上亿规模资产,并且也取得了良好的成绩。我学习的是行为金融,本身就是一门跨学科研究的专业,结合了金融、数学、计算机三个领域的知识。在2016年以前,我还在私募担任基金经理,但在一次宽客交流会上,结识了宽邦科技的创始人兼CEO梁举,也是第一次接触到BigQuant,正巧AI+量化也是我正想探索的领域,于是不谋而合加入了宽邦科技,成为了其中的一名策略工程师,主要专注AI+量化的融合研究。
什么样的动力驱使你和BigQuant结缘?
虽然我毕业于行为金融,但本身计算机能力并不算强,所以在跨学科的实践上也会困难重重。但是在BigQuant上,我可以比较自如地研究AI量化策略了。和梁总接触了解到他的主攻方向后,我几乎是两眼放光。量化在美国已经很成熟,但是在中国起步晚,发展落后,再加上近几年国内投资市场活跃、金融数据爆发式地增长,再用传统的方式来研究量化投资已经不能跟上时代的脚步了。从那以后,我就加入了AI量化的大军,也加入了BigQuant的技术社区,从事算法策略的研究。
社区里发布了大量跟AI量化相关的科普知识和研究模型,还比较有体系,是什么原因想去构建这样的体系?
AI量化是一个新的学科和新的挑战,目前市面上还没有全面、标准的教程和材料,在这方面都是东拼西凑,零碎的内容。包括我自己做研究也是,国内外的论文、券商的研报等都是研究的对象,这样的材料繁杂且多,而且大家使用的工具也千差万别,比如有的是自己搭建的平台、有的是用的开源框架、有的是用的市面上成熟的平台,比如BigQuant,以至于大家在使用的过程中标准并不统一,参考的材料等也是参差不齐。选择BigQuant是因为他是一个所有人都可以用的web平台,有专业的工程师维护,这样节约了在研究平台搭建的时间。
回到刚刚说的为什么要整理AI量化的内容。AI量化是跨学科的领域,基于这个领域的知识有限、零散,对AI量化感兴趣的人一开始可能摸不到头脑,不知道从何下手,所以我也牵头建立了AI量化的宽客学院,社区上发布的内容都来自于宽客学院的内容,希望大家准备进入这个领域的时候能找到方向。
社区里发布了很多前沿算法的研究成果,在这些过程中有遇到什么困难吗?
AI量化的内容比较多,影响过程和结果的因素也非常多,在整个过程中,我们也遇到过很多问题,虽然目前已经解决了大部分,还是可以分享给大家。
数据集如何划分
AI量化策略与量化策略的第一个不同就是怎么划分数据集。在传统量化策略里,一般以整个历史区间来回测策略,如果效果好就进行模拟交易或者小资金实盘,当然也有稍微严谨一点的:把历史区间的数据预留出一小部分进行二次验证。AI对数据的划分是必然的,图像识别和语音领域常见的做法是把数据分成训练集、验证集、测试集。AI量化至少要划分出训练集和测试集,而且是完全按时间节点划分,一定不能出现训练集和测试集有时间上的交叉,即使是不同的样本。这里面临的一个问题就是,如何确定训练集的时间长度呢,到底是一年合适还是两年,甚至三年呢,不同的时间范围的数据训练出来的模型差异可能很大,有的在测试集上是赚钱的,有的可能就是亏钱的,因子数据集的划分是一个难题。
模型可解释性
AI量化的黑箱是不能被很多人接受的最主要的原因,没办法对算法、模型的运作机制和原理进行合理的逻辑解释。在公募基金甚至一些大的机构,一个策略的上线甚至要回答盈利逻辑。所以模型可解释性是一个很重要的话题,这两年在整个AI领域都是一个非常前沿的话题,我们也看到了研究员能够进一步对模型有更深入的理解,不管是通过损失函数曲线、特征重要性、超参搜索等方法,其目的都是想打开这个黑箱。ai算法寻找的是全局最优解,不是局部最优解,所以难免理解起来很困难,在AI已经完全战胜人类选手的领域,比如围棋、德州扑克、星际争霸等,其实AI的决策和行为都是难以被人所理解的,但这并不影响AI的威力。
过拟合
AI量化常常面临两个问题:过拟合和欠拟合。欠拟合被讨论的少,只要加大模型的复杂度,就可以避免欠拟合。另一个就是过拟合,但过拟合还是有不少的规避方式。在图像识别、文本处理领域已经有不少的技巧,比如观察模型在训练集和验证集上的损失函数提前停止训练、减少模型复杂度、数据增强、正则化等。AI量化同样可以使用这些技巧,这里我们需要说明的是,其实预测的事情本身就是拟合问题的应用,所以传统量化同样面临过拟合这个难点,而且很多时候比AI量化更容易陷入过拟合的陷进。
随机性影响
机器学习涉及到模型训练,很容易引入随机性的影响。统计机器学习比如随机森林,涉及到行采样、列采样,如果不固定随机种子的话每次训练的结果会有差异,即使固定了随机种子,如果在运行时没有指定并发数量结果也会有差异,这是我们实际工作中遇到的问题。如果是深度学习算法,因为采用的是随机小批量梯度下降方式,每次是一个batch的数据训练模型,也会遇到训练参数不一致情形,再加上dropput这个参数的话,模型更是不好控制。这是模型层面的,另外就是如果训练集多一天的数据、或者少一天的数据,那么训练的模型可能差别很大,这也是起始时间选择带来的随机性影响。目前我们正在着重研究这块内容,希望能够对模型进行debug,看看能不能找到一些原因。
算力的迫切需求
算力、算法、数据是AI的三大要素,因此需要算力,尤其是GPU计算资源,提升运算性能。如果是百万级别数据,那么cnn\lstm这类算法也是可以使用CPU运算的,但是,如果是数亿、数十亿的数据呢,可能内存都装不下这些数据,因此AI平台的资源池化和调度管理、GPU管理显得尤为重要,这也是AI工程化的价值。
模型评估及方案
模型评估是一个重要内容,只有建立一个评估基准才能更好的开始试验研究。AI量化的模型评估与AI领域的模型评估有些不同。一般而言,AI量化是通过模型在测试集上预测得到预测结果,可以称为score或者预测label,最直接的评估就是基于预测结果构建交易策略,看看效果如何,这里要注意一点的就是尽量不要引入交易层面、策略层面的因素,因为资金分配、仓位管理、风险控制甚至组合优化都会影响到模型的策略效果。因此我们目前是通过对预测结果进行一些分析来作为模型评估的一部分。
目前在量化上,哪种算法的效果比较好?
目前一些统计机器学习排序算法和深度学习算法初步看到了一些效果。统计机器学习算法,比如xgboost、GBDT、lightGBM,还包括BigQuant自主研究的StockRanker排序算法可以用来开发多因子选股策略。全球第一支纯人工智能算法驱动的基金AIETF就是一种股票排序算法,每天收集全市场的股票的数十个甚至数百个因子,然后结合模型预测结果进行排序选股。另外就是深度学习算法,这里主要指基于多个隐藏层的神经网络模型。
AI量化目前的技术发展到了什么程度?未来的发展是什么样子的
目前来说,量化平台有很多,AI量化平台却很少,跟本身较为复杂的底层平台有关。一般人如果想要使用AI量化,有三种途径:
- 自建。自建平台比较复杂,技术出身的工程师应该更懂搭建一个AI平台比普通平台要复杂的多,虽说是个人使用,但其中所需要的东西却一个都不少。
- 利用开源框架。开源框架是大家比较青睐的,现在有很多的技术社区,例如Github、CSDN等,都会发布相关的开源框架。
- 使用成熟的AI量化平台。成熟的平台有专业的工程师维护和客服解决问题,出问题也能及时得到解决,一般来说是免费使用,除非需要升级更高的功能或者资源才会付费。
以上三种途径,根据实际情况可以各取所需。AI量化目前发展良好,熟悉的有BigQuant、微软Qlib,其他的都是普通的平台需要自己再嵌入算法,微软入局AI量化也说明了这个细分领域的发展趋势良好。
对后来进入到AI量化的人,你有什么建议?
1. 做好长期深耕AI量化准备
AI量化在16年那会跟别人谈论的时候,很多人抱着陌生并且怀疑的态度,但现在再和别人谈论AI量化,别人一般都会已经有所接触,并且很多人已经在实践探索,这就是最近几年的一个直观感受。但是AI量化并不是一蹴而就,也不是调用几个机器学习框架就能称为AI量化,本身还是有不少实践和落地经验,包括怎样才能进行滚动训练,怎样避免过度拟合,如何进行超参搜索等等,这都需要时间来积淀,所以需要做好持久战准备。
2. 降低对AI量化预期,AI量化并不神秘
经过这十来年的发展,大家都量化的预期有所降低,再也不会认为量化就是稳赚不赔、量化是自动交易躺着赚钱割韭菜的误解。AI量化亦是如此,只是一种投资方式而已,所以万万不可对AI量化抱着不切实际的预期,认为AI量化是机器智能投资,可以像围棋领域的alphago战胜人类世界冠军,这都很不现实。其实AI量化并不神秘,甚至传统的barra多因子模型也可以称为AI算法,因为使用的是多元线性回归算法,这是机器学习入门的一个最简单的算法。AI量化是量化投资的一个子集,一般使用机器学习、深度学习算法来进行选股或者择时的策略也都可以称为AI量化。
3. 学习编程和算法知识
AI是一个跨学科的交叉领域,因此除了金融、交易知识经验外,还需要基本的编程和算法知识。学习编程这个好理解,即使是传统量化投资、程序化交易也学习学习计算机编程知识,这两年比较火的概念”AI工程化“更是对大家提出了计算机知识的要求。算法知识的学习是更好地能够理解模型、构建模型、评估模型等,直接关系到模型的泛化能力和策略的运行效果。除了模型本身以外,机器学习可解释性、AutoML等前沿的研究也学习对算法有一些了解,仅仅只会做一个机器学习开源框架的调包侠是不足的。
传送门:BigQuant人工智能量化平台