2.1 量化交易策略的基本研发流程
本书将在后面的章节中,通过流程化的说明和一些中国市场上的实际例子来介绍量化交易策略的具体研发框架。通过整本书的内容,读者将遵循一定的逻辑来具体了解量化交易策略是怎样构成的以及是如何被研发出来的。
在本章中,作者在精炼量化交易策略基本研发结构的基础上,通过介绍有限的几个组成部分,对一个较为完整的量化交易策略进行了初步说明。希望读者通过阅读体量不大的文字内容之后,对量化交易策略的研发形成一个大致的概念和逻辑上的了解。图2-1给出了一个最为基本的量化交易策略研发流程,这是一个较为松散但同时相对典型的研发流程,对于本节中的基础性介绍而言较为合适。
图2-1 量化交易策略的基本研发流程
在整个量化交易策略的研发流程中,买和卖是最为基本的量化交易策略组成部分,而这个部分的设定主要与收益情况相关。这里所说的相关,具体分为两种不同的情形,一种是总体的关联性,即基于买点、卖点的选择,买卖策略应该得到一个正的整体收益。另一种则来自对交易资产未来收益的判断或者说预测,即判断交易资产的未来收益为正时,就买入资产;判断交易资产的未来收益为负时,则卖出或卖空资产。
实际操作中,这两种关联关系的情况可能更为复杂一些,读者可以通过第4章的内容进行具体的理解。有的时候,买和卖的具体操作也可能受到风险方面设置的影响,例如为了限制单次交易的最大损失而采取止损之类的操作时,用于清仓的买卖设置就会相应地变动,这也是作者将风险和买卖用虚线相连的原因。不过在大部分情况下,买卖这一最为基本的组成部分还是与收益的关系更大,研究者也应该在研发这个组成部分时,着重考虑收益情况的具体影响。
对量化交易策略风险的控制可能会影响到量化交易策略中的买卖设置,但是在更普遍的情况下,风险这一因素主要影响的是交易仓位的设置。当然,前提条件还是需要买卖策略的总体收益为正,在这样的条件下再结合仓位的设置,才能够在合适的风险水平下取得达到要求的收益。
通过对交易资产具体仓位的调整,交易者可以比较直接地控制单次交易以及整个交易策略的风险水平。例如在满仓交易的情况下,定量地判断了当前交易的风险之后,觉得风险过大无法承受,那么最为直接的处理方法就是在满仓的基础上相应地降低仓位的大小。在仓位降低之后,对于整体资金而言风险也就随之降低了。由于仓位本身具有量化、直观的特性,因此当交易者希望将风险处理到一个特定的水平时,调整仓位是一个比较方便的手段。
需要说明的是,前面已经提到了买和卖是量化交易策略最为基本的组成部分,实际上仓位的设定是根据买卖决策和风险两个因素共同形成的,不建立在买卖之上的仓位选择是空洞没有意义的。此外还有一个更为极端的情况,仓位的正确设定有助于进一步优化策略的整体收益,第10章10.1节所要介绍的凯利公式的意义正在于此。在图2-1中由买卖到仓位的箭头,实际上可以看作收益、买卖这一个整体部分指向仓位的箭头。不过在实际使用中,凯利公式所导出的仓位设定往往过于偏激,超过正常风险控制下的最高仓位值,因此仓位仍然与风险的关系更为紧密。
在图2-1这个较为松散的量化交易策略研发流程中,交易成本是和买卖以及仓位具有同等地位的组成部分。在实际操作中,就是首先基于对收益和风险的判断得出合适的买卖和仓位选择,然后在买卖和仓位共同组成的量化交易策略当中考虑交易成本,也就是在建立仓位和退出仓位等操作中扣除所需要承担的交易成本。随后再次判断该量化交易策略所代表的收益和风险情况,若这两个因素仍然在接受范围之内,则确认这是一个可行的量化交易策略。虽然最后用来执行的组成部分只有买卖和仓位,但是交易成本作为对量化交易策略的一个实际化修正,也是策略研发流程中一个不可或缺的组成部分。
上面提到的对量化交易策略收益和风险情况的判断,实际上是一个综合性的评价问题。一个最为重要的参考依据应该是策略在整个交易过程中的净值走势,通过对策略净值走势的分析,就可以建立起该量化交易策略运行情况的全面判断。但是净值走势本身由于细节过多,因此无法简单地用来进行策略之间的横向对比。这时就需要精炼净值走势中所包含的信息,选取合适的部分形成量化的评价指标,从而进行量化交易策略的进一步判定。
就作者看来,评判一个策略的标准中最重要的仍然是策略在整个交易过程的收益情况,一个负收益的量化交易策略根本无须考虑其风险即可排除。而当收益率为正时,再结合风险的度量进行具体的取舍,就可以直观地给出量化交易策略是否合格的评判标准了。净值的回撤水平是作者在研判交易策略净值时比较偏好的一个风险度量指标,在后面的案例分析中我们也会重点查看回撤的结果。
与此同时,一些量化交易策略在进行收益和风险情况的判断时,仅仅针对策略自身的净值走势进行研究是不够的,给出一个合理的基准来进行对比往往是更为有效的判别方法。例如,后面的案例中会涉及量化选股策略,当交易选择仅限为对具体的股票进行持仓,而不考虑空仓或者卖空时,选取一个特定的基准进行对比就会是一个更为有效的判别方法。这主要是由于量化选股策略的仓位始终为多头,因此不论如何配置,策略所持仓位都含有资本资产定价模型中所提到的市场成分。而选股策略本身的意义在于选择更好的股票,不在于获取市场收益,因此将市场走势作为对比或者在策略收益中剔除掉市场成分就是一个更合理的做法。
第5章和第8章中的因子选股策略就使用了沪深300指数作为基准进行了比较,同时简单地用策略收益率减去指数收益率形成新的收益率序列,进而研究该收益率序列所形成的净值走势情况。当然,由于做空也需要保证金的投入,因此这样简单的减法处理虽然直观有效,但同时也欠缺一定的实际操作意义。一个更加贴合实际的做法是以市场中性组合的方式进行策略构建,进而研究中性策略的净值走势,有兴趣的读者可以自行进行研究。
上述所有的操作,都需要建立在对历史数据的分析之上,也就是前面章节提到过的回溯测试。所谓回溯,是将交易的过程在历史数据上复现一遍,这里面包含一个假设,即历史数据在量化交易策略中展现出的样本特征在未来的交易中依然存在,否则回溯测试就失去了意义。关于这一假设的分析其实在诸多技术分析著作中均有涉及,一般被称为“历史会重演”,这里不再继续展开。
不同于传统技术分析的是,量化交易策略的研发过程更加深入具体,在涉及策略的参数设定、模型设置等具体问题时,需要采用数量化的方法进行解决。例如,如何设置买点和卖点可以使得相应的总体收益最大、如何设置模型参数使得收益率预测最为准确等,都是很典型的最优化数学问题。那么找到合适的模型、最优化技术和算法并加以应用,就能够确定量化交易策略的最终形式,用以进行实际交易。
2.2 量化交易策略研发流程的进一步论述
2.2.1 量化选股策略的研发流程
图2-1中所展示的是一个较为松散的一般性框架,用来总领性地说明量化交易策略的基本研发流程。在具体的策略研发过程中,这个框架经常会因为具体研发设置和策略设置的不同而产生变化。例如,当量化交易策略的主要作用不是在时间轴上选择具体的买卖时点,而是在同一个时间点上对多个资产进行选择和配置时,图2-1中的一些说明就显得有些含混不清。
在本书中,作者将在后面介绍的选股策略就是这一类策略中最为常见的形式,因此这里在整体框架不变动的情况下,针对图2-1进行了文字上的调整,用以说明量化选股策略的运行框架与研发流程。当然,使用选股策略的框架体系来处理多个资产甚至多个策略的挑选、配置也是可以的,在不复杂的情况下读者只需要稍做联想即可。
买卖和仓位虽然是更为通用的说法,但是更适合于描述择时策略,放在选股策略的研发框架中会显得比较突兀,图2-2将买卖换成了选股,仓位则换成了配比,这样更容易让读者领会该研发流程的含义。实际上,对于每一期的选股而言,如果选择了原先没有仓位的股票,那么对应的操作就是买入该股票,如果已经建仓的股票没有被选入这一期的股票池,那么对应的操作就是卖出该股票。而配比则是在买卖的基础上,通过仓位大小的变化来实现具体配置。因此,选股和配比实际上可以算作买卖和仓位选择的特殊情况,只是这种说法更为贴合量化选股策略本身。
图2-2 量化选股策略的研发流程
风险在量化选股策略研发流程中的具体含义则略有不同。由于选股策略的仓位操作涉及多个股票之间的配比问题,因此这里的风险不仅包括单只股票的风险,也涉及多只股票之间的风险程度,后一种风险一般采用股票收益之间的相关性来进行描述。例如在一般性的最优投资组合理论当中,经常使用协方差矩阵来刻画整个资产组合的风险水平。
虽然从实际情况来看,相关性这一度量方式与风险的直观感受之间有一定的差距,但是在多资产环境下,一般都将资产间的相关性视为风险的来源之一,这是一个偏学术的、约定俗成的做法。
就实际意义而言,我们可以这样理解。当我们知道了一个投资组合中各个资产间的协方差矩阵之后,就可以根据公式计算出整个投资组合的方差,这代表了投资组合这一整体的风险水平。其他情况也是类似的,当我们已知多资产的风险和资产间的相关性程度时,就可以估算出投资组合整体的风险。
由于这种风险刻画的方式主要针对多个资产的投资组合,因此在第9章论述风险时并不涉及,而在第12章讨论投资组合决策时进行有针对性的说明,并在第13章介绍实际的量化选股策略时给出具体的协方差矩阵估计方法。
2.2.2 量化交易策略研发流程的变化形式
上面的例子是针对选股策略进行的文字上的变动,实际上量化交易策略研发流程的变化更多来自各个研发组成部分不同的结合方式。而不同的结合方式,对应的是策略研发过程中不同的目标和需求。
例如图2-1所介绍的松散的研发流程,是在确定好买卖行为和仓位设定之后,再针对实际交易中所产生的交易成本进行二次测试。这样的做法虽然简便易行,但是忽视了交易成本本身对于收益的影响,以及更进一步对于买点和卖点的影响。
因此,在确定买卖设置的步骤中就考虑交易成本的影响,应该是一个更贴近实际的研究框架。特别的,当某些情况下交易成本对整体业绩影响非常之大时,如交易频率较高的情况,这样的考量就显得很有必要了。
图2-3给出了相应的流程刻画,如图所示,在判断收益因素时,同时考虑交易成本对于收益的影响,从而优化出更为实际的买卖设置。再根据相应的风险控制,结合买卖点的选择,得出最后的仓位设置。在确定了买卖和仓位这两个部分之后,就获得了一个完整的量化交易策略。
图2-3 收益和成本共同决定买卖的研发流程
图2-4给出了一个更紧凑、更贴合实际操作的量化交易策略研发流程。在该流程中,买卖和仓位的设置是同时作为参数进行优化的,优化的目标函数也进行了唯一化,即量化交易策略的风险调整后收益。而在确定需要优化的目标函数时,交易成本也如同上一个研发流程一样同时被考虑进去,从而保证买卖和仓位优化结果的准确性。
图2-4 买卖和仓位同时优化的研发流程
毫无疑问,相较于上面所涉及的研发流程,特别是图2-1中较为松散的研发流程,该量化交易策略研发流程的各个组成部分更为紧密,因此在优化过程中所产生的与实际操作的偏离也就越小,买卖和仓位设置的准确度也就更高。但是在实际工作中,如果想参照这一流程进行研发,那么就需要比较强的计算能力,数据量的大小也要达到一定要求,同时优化方法和目标函数的设定要能够同时覆盖买卖和仓位的所有参数,因此往往也只有极为简单的策略可以采用这样的流程框架进行研发。例如后面会详细介绍的双均线策略,实际上是可以通过这样的研发流程来完成的,有兴趣的读者可以自行研发。
2.2.3 量化交易策略的整体工作流程
在实际的量化交易策略相关工作中,研发只是整个工作流程的一部分,还有两个组成部分需要着重强调。基于此,图2-5在图2-1所示的研发流程的基础上给出了一个更为完整的工作流程。如图2-5所示,需要增加的部分包括处于研发过程之前的数据准备工作以及处于研发过程之后的策略执行工作。这两项工作与前面所论述的研发流程具有很强的逻辑关联性与内在依赖性,三者结合起来形成的一个整体,基本上可以涵盖量化交易策略具体工作的绝大部分内容。
图2-5 量化交易策略的整体工作流程
首先论述数据准备的工作,循着图2-5中的箭头可以看到,在量化交易策略的整体工作中,既要为研发过程准备相应的研究数据,也要为策略执行准备相应的实时数据。
在研究数据方面,由于寻找合适的量化交易策略需要不断重复研发流程,因此对于数据的要求更侧重于准确性和覆盖能力。同时,对数据的清洗和转换也是一项重点工作,在大部分的数据科学研究、包括量化交易策略的研发当中,数据特征的合理抽取对于整体效果提升的重要性有时甚至要高于精巧的模型,当然很多时候数据的转换和模型的构造是相互融合的,针对具体情况应当采取具体的分析和处理。
而在策略执行数据方面,则更应该关注数据获取的及时性。至于数据的清洗和变换,只需要完全复制研发得到的量化交易策略下的数据准备工作即可。另外,为了保证数据的及时性,最终进行的数据清洗工作对时间消耗存在一定的要求。
然后,讨论策略执行的工作。策略执行,是在量化交易策略研发完成之后,最终产出实际效能的组成部分。执行时应该遵循尽量贴近研发完成的量化交易策略的原则,与量化交易策略所确定的买卖、仓位等设置尽可能保持一致,这样才能最真实地反映出前面量化交易策略的研发结果。
同时,策略执行的结果也可以用来反向支持具体的研发流程,通过对策略执行所得到的收益、风险情况的判断,实时地重新进行研发,对量化交易策略进行修改,从而使策略能够及时地得到现实的反馈,增强自身的稳健程度。值得一提的是,第6章将要介绍的推进分析是一种模拟策略执行的回溯测试技术,读者可以在运行推进分析时有限度地了解到量化交易策略实际执行时的种种状态。
由于数据准备和策略执行两个部分都重在实际操作,比较难以呈现在纸上,因此后面的内容不会对这两部分给出单独的介绍,整本书主要集中讨论量化交易策略的研发流程。而在量化交易策略研发流程的诸多框架类型当中,则选取作者认为最为基本的流程进行研究和阐述,即量化择时策略采用图2-1的研发流程,量化选股策略采用图2-2的研发流程,希望读者能够根据最为基本的框架举一反三,并在实践中慢慢掌握如何根据具体的研发环境选择最为合适的流程框架。