量化交易策略的研发流程


(suibiantell) #1

新书《中低频量化交易策略研发(上)》免费发布也没多少人看,很是捉急。借着专栏宣传一下,下面的内容来自原书第二章。

这里在精炼量化交易策略基本研发结构的基础上,通过介绍有限的几个组成部分,对一个较为完整的量化交易策略进行了初步说明。希望读者通过阅读体量不大的文字内容之后,对量化交易策略的研发形成一个大致的概念和逻辑上的了解。图1给出了一个最为基本的量化交易策略研发流程,该流程是一个较为松散的、但是同时相对典型的研发流程。

![](data:image/svg+xml;utf8,<svg%20xmlns=‘http://www.w3.org/2000/svg’%20width=‘266’%20height='188’>)

在整个量化交易策略的研发流程当中,买和卖是最为基本的量化交易策略组成部分,而这个部分的设定主要与收益情况相关。这里所说的相关,具体分为两种不同的情形,一种是总体的关联性,即基于买点、卖点的选择,买卖策略应该得到一个正的整体收益。另一种则来自于对交易资产未来收益的判断、或者说预测,即判断交易资产的未来收益为正时,就买入资产;判断交易资产的未来收益为负时,则卖出或卖空资产。实际操作中,这两种关联关系的情况可能更为复杂一些。有的时候,买和卖的具体操作也可能受到风险方面设置的影响,例如为了限制单次交易的最大损失而采取止损之类的操作时,用于清仓的买卖设置就会相应的变动,这也是作者将风险和买卖用虚线相连的原因。不过在大部分情况下,买卖这一最为基本的组成部分还是与收益的关系最大,研究者也应该在研发这一个组成部分时,着重考虑收益情况的具体影响。

对量化交易策略风险的控制可能会影响到量化交易策略中的买卖设置,但是在更普遍的情况下,风险这一因素主要影响的是交易仓位的设置。当然,前提条件还是需要买卖策略的总体收益为正,在这样的条件下再结合仓位的设置,才能够在合适的风险水平下取得达到要求的收益。通过对交易资产具体仓位的调整,交易者可以比较直接的控制单次交易以及整个交易策略的风险水平。例如在满仓交易的情况下,定量的判断了当前交易的风险之后,觉得风险过大无法承受,那么最为直接的处理方法就是在满仓的基础上相应的降低仓位的大小。在仓位降低之后,对于整体资金而言风险也就随之降低了。由于仓位本身具有量化、直观的特性,因此当交易者希望将风险处理到一个特定的水平时,调整仓位是一个比较方便的手段。

需要说明的是,前面已经提到了买和卖是量化交易策略最为基本的组成部分,实际上仓位的设定是根据买卖决策和风险两个因素共同形成的,不建立在买卖之上的仓位选择是空洞没有意义的。此外还有一个更为极端的情况,仓位的正确设定有助于进一步优化策略的整体收益,之后要介绍的凯利公式的意义正在于此。在图1中由买卖到仓位的箭头,实际上可以看作是收益、买卖这一个整体部分指向仓位的箭头。不过在实际使用中,凯利公式所导出的仓位设定往往过于偏激,超过正常风险控制下的最高仓位值,因此仓位仍然与风险的关系更为紧密。

在图1这个较为松散的量化交易策略研发流程中,交易成本是和买卖以及仓位具有同等地位的组成部分。在实际操作中,就是首先基于对收益和风险的判断得出合适的买卖和仓位选择,然后在买卖和仓位共同组成的量化交易策略当中考虑交易成本,也就是在建立仓位和退出仓位等操作中扣除所需要承担的交易成本。随后再次判断该量化交易策略所代表的收益和风险情况,只有这两个因素仍然在接受范围之内,才能确认这是一个可行的量化交易策略。虽然最后用来执行的组成部分只有买卖和仓位,但是交易成本作为对量化交易策略的一个实际化修正,也是策略研发流程中一个不可或缺的组成部分。

上面提到的对量化交易策略收益和风险情况的判断,实际上是一个综合性的评价问题。一个最为重要的参考依据应该是策略在整个交易过程中的净值走势,通过对策略净值走势的分析,就可以建立起该量化交易策略运行情况的全面判断。但是净值走势本身由于细节过多,因此无法简单的用来进行策略之间的横向对比。这时就需要精炼净值走势中所包含的信息,选取合适的部分形成量化的评价指标,从而进行量化交易策略的进一步判定。就作者看来,评判一个策略的标准中最重要的仍然是策略在整个交易过程下的收益情况,一个负收益的量化交易策略根本无需考虑其风险即可排除。而当收益为正时,再结合风险的度量进行具体的取舍,就可以直观的给出量化交易策略是否合格的评判标准了。作者心目中最重要的风险指标是策略净值的回撤水平,在后面的案例分析中也会重点查看回撤的结果。

于此同时,一些量化交易策略在进行收益和风险情况的判断时,仅仅针对策略自身的净值走势进行研究是不够的,给出一个合理的基准来进行对比往往是更为有效的判别方法。例如后面的案例中会涉及到的量化选股策略,当交易选择仅限为对具体的股票进行持仓,而不考虑空仓或者卖空时,选取一个特定的基准进行对比就会是一个更为有效的判别方法。这主要是由于量化选股策略的仓位始终为多头,因此不论如何配置,策略所持仓位都含有资本资产定价模型中所提到的市场成分。而选股策略本身的意义在于选择更好的股票、不在于获取市场收益,因此将市场走势作为对比、或者在策略收益中剔除掉市场成分就是一个更合理的做法。

上述所有的操作,都需要建立在对历史数据的分析之上,在量化交易领域当中一般称之为回溯测试,或者简称回测。所谓回溯,也就是将交易的过程在历史数据上复现一遍,这里面包含了一个假设,即历史数据在量化交易策略中展现出的样本特征在未来的交易中依然存在,否则回溯测试就失去了意义。关于这一假设的分析其实在诸多技术分析著作中均有涉及,一般被称为“历史会重演”,这里不再继续展开。不同于传统技术分析的是,量化交易策略的研发过程更加深入具体,在涉及到策略的参数设定、模型设置等具体问题时,需要采用数量化的方法、也就是最优化等技术手段进行解决。例如如何设置买点和卖点可以使得相应的总体收益最大等等,都是很典型的最优化数学问题,那么找到合适的最优化技术和算法并加以应用,就能够确定量化交易策略的最终形式,用以进行实际交易。

图1中所展示的是一个较为松散的一般性框架,用来总领性的说明量化交易策略的基本研发流程。在具体的策略研发过程中,这个框架经常会因为具体研发设置和策略设置的不同而产生变化。例如当量化交易策略的主要作用不是在时间轴上选择具体的买卖时点,而是在同一个时间点上对多个资产进行选择和配置时,图1中的一些说明就显得有些含混不清。量化选股策略就是这一类策略中最为常见的形式,因此这里在整体框架不变动的情况下,针对图1进行了文字上的调整,用以说明量化选股策略的运行框架与研发流程。当然,使用选股策略的框架体系来处理多个资产甚至多个策略的挑选、配置也是可以的,在不复杂的情况下只需要稍作联想即可。

![](data:image/svg+xml;utf8,<svg%20xmlns=‘http://www.w3.org/2000/svg’%20width=‘266’%20height='188’>)

买卖和仓位虽然是更为通用的说法,但是更适合于描述择时策略,放在选股策略的研发框架中会显得比较突兀,因此图2将买卖换成了选股,仓位则换成了配比,这样更容易让读者领会该研发流程的含义。实际上,对于每一期的选股而言,如果选择了原先没有仓位的股票,那么对应的操作就是买入该股票,如果已经建仓的股票没有被选入这一期的股票池,那么对应的操作就是卖出该股票。而配比则是在买卖的基础上,通过仓位大小的变化来实现具体配置。因此,选股和配比实际上可以算作是买卖和仓位选择的特殊情况,只是这种说法更为贴合量化选股策略本身。

略有不同的,是风险在量化选股策略研发流程中的具体含义。由于选股策略的仓位操作涉及到多个股票之间的配比问题,因此这里的风险不仅包括单支股票的风险,也涉及到多支股票之间的风险程度,后一种风险一般采用股票收益之间的相关性来进行描述。例如在一般性的最优投资组合理论当中,经常使用协方差矩阵来刻画整个资产组合的风险水平。虽然从实际情况来看,相关性这一度量方式与风险的直观感受之间有一定的差距,但是在多资产环境下,一般都将资产间的相关性视为风险的来源之一,这是一个偏学术的、约定俗成的做法。

上面的例子是针对选股策略进行的文字上的变动,实际上量化交易策略研发流程的变化更多来自于各个研发组成部分不同的结合方式。而不同的结合方式,对应的是策略研发过程中不同的目标和需求。例如图1所介绍的松散的研发流程,是在确定好买卖行为和仓位设定之后,再针对实际交易中所产生的交易成本进行二次测试。这样的做法虽然简便易行,但是忽视了交易成本本身对于收益的影响,以及更进一步对于买点和卖点的影响。因此,在确定买卖设置的步骤中就考虑交易成本的影响,应该是一个更贴近于实际的研究框架。图3给出了相应的流程刻画,如图所示,在判断收益因素时,同时考虑交易成本对于收益的影响,从而优化出更为实际的买卖设置。再根据相应的风险控制,结合买卖点的选择,得出最后的仓位设置。在确定了买卖和仓位这两个部分之后,就获得了一个完整的量化交易策略。

![](data:image/svg+xml;utf8,<svg%20xmlns=‘http://www.w3.org/2000/svg’%20width=‘251’%20height='188’>)

图4给出了一个更紧凑、更贴合实际操作的量化交易策略研发流程。在该流程中,买卖和仓位的设置是同时作为参数进行优化的,优化的目标函数也进行了唯一化,即量化交易策略的风险调整后收益。而在确定需要优化的目标函数时,交易成本也如同上一个研发流程一样同时被考虑进去,从而保证买卖和仓位优化结果的准确性。毫无疑问,相较于上面所涉及到的研发流程、特别是图1中较为松散的研发流程,该量化交易策略研发流程的各个组成部分更为紧密,因此在优化过程中所产生的与实际操作的偏离也就越小,买卖和仓位设置的准确度也就更高。但是在实际工作中,如果想参照这一流程进行研发,那么就需要比较强的计算能力,数据量的大小也要达到一定要求,同时优化方法和目标函数的设定要能够同时覆盖买卖和仓位的所有参数,因此往往也只有极为简单的策略思路可以采用这样的流程框架进行研发。

![](data:image/svg+xml;utf8,<svg%20xmlns=‘http://www.w3.org/2000/svg’%20width=‘262’%20height='211’>)

在实际的量化交易策略相关工作中,研发只是整个工作流程的一部分,还有两个组成部分需要着重强调。基于此,图5在图1所示的研发流程的基础上给出了一个更为完整的工作流程。如图所示,需要增加的部分包括处于研发过程之前的数据准备工作以及处于研发过程之后的策略执行工作。这两项工作与前面所论述的研发流程具有很强的逻辑关联性与内在依赖性,三者结合起来形成的一个整体,基本上可以涵盖量化交易策略具体工作的绝大部分内容。

![](data:image/svg+xml;utf8,<svg%20xmlns=‘http://www.w3.org/2000/svg’%20width=‘364’%20height='368’>)

首先论述数据准备的工作,循着图5中的箭头可以看到,在量化交易策略的整体工作中,既要为研发过程准备相应的研究数据,也要为策略执行准备相应的实时数据。在研究数据方面,由于寻找合适的量化交易策略需要不断重复研发流程,因此对于数据的要求更偏重于准确性和覆盖能力。同时,对数据的清洗和转换也是一项重点工作,在大部分的数据科学研究、包括量化交易策略的研发当中,数据特征的合理抽取对于整体效果提升的重要性有时甚至要高于精巧的模型,当然很多时候数据的转换和模型的构造是相互融合的,针对具体情况应当采取具体的分析和处理。而在策略执行数据方面,则更应该关注于数据获取的及时性。至于数据的清洗和变换,只需要完全复制研发得到的量化交易策略下的数据准备工作即可。另外,为了保证数据的及时性,最终进行的数据清洗工作对时间消耗存在一定的要求。

然后讨论策略执行的工作。策略执行,是在量化交易策略研发完成之后,最终产出实际效能的组成部分。执行时应该遵循尽量贴近研发完成的量化交易策略的原则,与量化交易策略所确定的买卖、仓位等设置尽可能的保持一致,这样才能最真实的反映出前面量化交易策略的研发结果。同时,策略执行的结果也可以用来反向支持具体的研发流程,通过对策略执行所得到的收益、风险情况的判断,实时的重新进行研发,对量化交易策略进行修改,从而使得策略能够及时的得到现实的反馈,增强自身的稳健程度。值得一提的是,后面将要介绍的推进分析是一种模拟策略执行的回溯测试技术,读者可以在运行推进分析时有限度的了解到量化交易策略实际执行时的种种状态。

------我是广告线------

《中低频量化交易策略研发(上)》的电子版本已经上传到网上,请有兴趣的朋友下载阅览。

百度网盘地址:

http://pan.baidu.com/s/1bobB7BL

人大经济论坛:

http://bbs.pinggu.org/thread-4150803-1-1.html