2.1 量化投资策略开发框架流程

量化投资策略的开发是一个较为复杂的过程,每个子过程之间都有着紧密的联系,总体而言,量化投资策略的开发主要包括以下几个过程。

①数据的准备与预处理

②量化投资策略的构建

③策略的回溯测试

④策略的优化

⑤量化投资策略的交易

2.1.1 数据的准备与预处理

1.数据的获取

进行量化投资策略的开发,离不开大量数据的支持,因此数据的获取是量化投资策略开发需要面对的一个首要问题,同时也是一个较为让人棘手的问题。许多数据的获取都需要耗费较高的成本,并且市场上数据的质量参差不齐,这都为策略开发人员带来了一定的困扰。一般来讲,数据的来源主要有以下几个方面。

(1)收费的数据来源。收费的数据是量化投资策略的开发人员主要获取数据的方式,如国内的Wind金融终端、国外的彭博系统都能够提供较为全面的金融数据。但是收费的数据来源一个主要的缺点就是成本高昂,并不十分适合个人量化投资者。正因如此,量化投资开发人员多集中于机构中,可以依托于金融机构的财力来获取较为全面的数据。

(2)免费的数据来源。另一个获取数据的方式就是通过免费的软件获取。目前许多金融软件都提供了历史数据的下载,但是免费的数据存在一个显著的问题就是数据质量较差,数据的错误和缺失均是较为常见的现象,因此通过这种来源获取数据进行研究会对策略开发的准确性产生一定的影响。

(3)量化交易平台来源。随着量化投资的关注热度的不断提高,量化交易平台在国内也开始兴起,从平台上获取数据成了一种新的来源。一般而言,量化交易平台会免费为注册用户提供数据进行研究,这大大降低了量化投资的门槛,使个人投资者可以参与其中。但是,平台的数据可以在其网站中使用,却不能够下载至本地,这也使研发人员必须依赖于平台进行策略研究,从而产生一定的局限性。

2.数据的清洗与修正

从各种来源获取数据后,需要将数据进行清洗。通常我们获得的数据可能来自多个方面,会出现数据格式不统一、数据错误、数据缺失、数据重复等问题。因此首先要将数据进行清洗与修正。此外,不同频率的数据有着不同的用途,因此也需要进行适当的处理。诸如此类问题非常繁杂,因此,一般的量化投资团队都会有专人负责数据的处理,这是一个非常耗时的工作。

3.数据的预处理

将数据清洗和修正完毕后,还需要根据不同的策略开发要求对数据进行预处理。最常见的预处理有去除极端值、取对数、标准化等。本书后面章节如有需要对数据进行预处理的地方,均会单独介绍。例如,第3章多因子模型中对于数据的标准化的介绍等。

2.1.2 量化投资策略的构建

量化投资策略通常起源于一个想法,这个想法可以简单也可以复杂,关键在于将这个想法数量化,进而构建一个模型。这里要确保策略开发者的想法是可以被量化的,想法越能够被精确量化,构建的模型与想法的贴合度就越高。一个完整的策略构成至少要包括三个部分:买入和卖出、风险管理以及仓位控制。

1.买入和卖出

首先,策略要确定买入的资产和卖出的资产,同时还要确定买入和卖出的时机,这其中又可分为选股过程和择时过程,即选择预期收益为正的资产,并通过各种策略方法判断买入和卖出的时机。在量化投资策略中,买入和卖出的判断基础可以是比较简单的原则,如经典的“上穿10日均线买入,下穿10日均线卖出”,也有更加复杂的原则,其中包括了许多数量模型,当一个或者几个条件同时触发时才释放买卖信号。本质而言,策略原则的简单与复杂并不是策略好坏的判断标准。但是,随着科学技术的发展,越来越多的专业人士开始从更加复杂的理论技术中寻求买卖策略的原则,并且普遍从中能够获得更好的收益。尽管如此,不能忽视的是,模型的条件和原则越复杂,在量化策略编程实现和回测交易的难度就越大,同时,也会面临着诸如过拟合等陷阱。

2.风险管理

学术界普遍将风险定义为“不确定性”,这种“不确定性”会对量化投资策略的业绩产生影响,通常用来衡量风险的指标为波动率。而在投资领域,人们更加关注风险作为“不确定性”中的“负的不确定性”的情况,即会对投资策略造成潜在损失的风险。查理•芒格也曾表示过其对于用股票波动来衡量风险的质疑,他认为风险主要包括两个方面:一个是永久失去资本的风险;另一个是所获得的回报不足的风险,典型的风险可分为策略风险和技术风险。

1)策略风险

策略风险主要是指使用某种量化投资策略或者投资模型的潜在的风险。市场环境瞬息万变,任何策略都有可能在一段时间后失效,如量化策略在执行一段时间后,市场条件便不能够满足模型设计时所依赖的假设,这就会导致模型的失效。以我国A股市场为例,过去很长的一段时间,市场都存在显著的小盘股效应。所以根据过去A股数据所设计出的许多主动量化投资策略的模型都存在着将投资重点放在小盘股上面的情况,而2017年度,大盘股的涨势要明显超越小盘股,所以便导致了部分量化策略的失效,造成了资产的损失。此后,许多量化策略开始注重市场风格转换的监控。此外,过拟合、前视偏差都会对策略产生重要影响,也是策略风险的重要内容,本书将在量化投资策略注意事项中进行重点介绍。

【2-1】小盘股效应

小盘股效应又称规模效应、公司效应,是指投资于小市值股票所获收益比大市值股票收益高的金融现象。这种现象发生的主要原因在于市场存在风险溢价、忽略效应、基本面风险等情况。但是在中国股票市场更多是因为小盘股的股本总值较小,较少的资金就可以让其价格剧烈波动,而投资者可以从中承担高风险获得高收益。因为小盘股效应的独特性,在考虑投资策略时应该对小盘股效应给予充分关注。

2)技术风险

技术风险主要是指量化策略的开发和实践中所需要的许多基础设施与重要技术的潜在风险。首先,量化投资面临的一个技术风险就是策略开发和回测与交易技术的问题。在策略开发、回测与执行过程中,对于编程语言的掌握程度会对策略产生重要的影响,语言的使用不当和错误使用会导致开发过程出现策略无法执行、回测效果不准确,或者更为严重的错误交易行为,同时操作的不当也可能会导致巨大的损失。对于许多个人投资者而言,其技术风险主要来源于量化回测过程,许多个人量化投资者不具备独立开发回测系统的能力,因此多依托于第三方策略开发回测平台进行策略的开发与回测。投资者有时会出现回测效果与实盘效果差距很大的问题,很大的原因便是回测平台出现了问题,好在随着国内平台数量的增多,各个平台也都在不断完善,技术风险出现的可能性也在不断降低。此外,数据的问题也是产生技术风险的重要来源。量化投资策略对于数据的要求非常高,许多免费的数据普遍存在数据缺失、错误等问题,而依据这些数据设计的策略十分容易产生风险,这也是为什么即使有偿数据的成本居高不下,但各金融公司仍旧花费大量资金购买的原因。

3.仓位控制

仓位控制与选择是投资策略的一个重要问题,仓位过重可能会导致潜在的损失过大,仓位过轻又会导致潜在的盈利过少。过去主观投资者根据经验总结了多种仓位控制和资产配置的方法,并将其视为交易系统中的重要组成部分。而在量化投资策略的开发与构建过程中,对于仓位控制和资产配置的实现通常是通过科学可量化的手段进行的,更多的是借助数学的应用来得以实现的。

2.1.3 策略的回溯测试

将投资逻辑及想法通过量化的手段实现并按照相关软件的要求进行编程后,下一步要做的便是回溯测试,即回测。回测过程就是将构建好的量化投资策略模型放入到一段历史数据中进行检验,得出其在这段期间的收益情况和风险情况等指标,从而作出对于该策略的判断。如果回测效果不好,则需要改变策略或者完善策略模型;如果回测效果较好,则可以考虑进行模拟交易或者实盘交易。回测是量化投资中重要的过程,其主要检验策略存在以下三个问题。

1.确保之前步骤构建的量化投资策略模型和编程代码运行正常

回测首先要检验量化投资策略模型的构建以及将其转化成编程语言这两个过程的准确性。通过回测,可以很清晰地发现策略是否按照开发者的想法进行交易行为,也就是策略是否做其该做的事。在策略的研发过程中,出现策略实际交易行为和开发者的想法不同是初学者常见的错误。例如,以最简单的均线策略为例,如果开发者设计了某股票价格上穿10日均线买入,下穿10日均线卖出的策略,通过回测,可以判断策略是否真正按照规定执行。在量化实践中,通常模型的编程比较复杂,因此编程工作大多时候也比较烦琐,容易出现错误之处,如上述策略中将10日均线错误设定成20日、将卖出信号错误设定成买入信号等。即使一点小错误,如果没有在实际交易前被发现,那么实盘后这种错误就会对策略收益产生巨大的不利影响。

2.对于策略的评估

当确定量化投资策略能够按照要求正常运行后,回测关注的第二个问题就是对于策略的评估。回测的一个目的就是检验策略的效果是否符合设计者对于策略的预期。该过程需要对回测的结果进行综合分析,不仅要分析回测中具体的交易情况,也要分析风险和收益等情况。这要看该策略是否符合其设定的要求。例如,如果我们设计的策略是一个长期策略,那么就需要通过回测过程观察策略是否符合要求,如果策略交易过于频繁,那么显然是不符合长期策略要求的。而如果设计的策略是一个典型的趋势型策略,在明显具有趋势的回测区间中不能够获得良好的收益,也说明了该策略不能够达到对其的预期。在此需要强调的是,回测区间长度和范围的选择是回测中不可忽视的一个问题。对于回测长度而言,通常来讲,回测长度越长越好,也就是说我们能够用于回测的数据越多越好,因为长度越长,越能够更充分地包含价格运动的规律和特点。而对于回测区间的选择,要充分考虑策略的特点,以及样本特点的多样性。例如,上文提到的典型的趋势型策略,对于该种策略回测区间的选择就要选择具有明显趋势的区间,因为只有在此区间才能够发挥该策略的效果。许多时候,策略开发者还会将回测区间分段,对每个区间都进行回测,这样做的一个主要原因就是,存在着一种可能情况,即某个策略在一个较长的回测区间中得到了较好的结果,但是其主要的成功交易只局限于某段时间的几次获得较大盈利的交易,而在大部分时间都是亏损的。对于这种情况,显然要进行分段回测效果会更好。

3.通过回测找到潜在的可交易策略

回测的最根本原因和目的就是要寻找成功的策略。通过回测检验过程、根据具体的交易行为以及各种风险收益指标的分析结果,可以较为清晰地分辨出策略的优劣。如果一个策略回测中就很难获得较好的效果,那么该策略也极有可能是一个失败的策略。而对于回测效果较好的策略,可以对其进行进一步的调整和优化,并通过不断检验,最终将其应用到实盘交易当中。

2.1.4 策略的优化

当量化投资策略模型被构建并且已经编程完毕后,可以对策略进行回测,从而得到对于策略的初步判断,对于那些效果较好或者有明显可改善空间的量化投资策略予以保留,下一步骤便是对于这些策略的优化过程。我们构建的量化投资策略模型通常都有着许多的参数。例如,一个简单的均线策略,对于多少日平均的选择就是一个典型的参数选择问题。因此,此处提到的策略的优化过程就是一个策略的参数的选择问题,通过对于待选参数的检验,选择出能够获得更好策略效果的参数。对于量化投资策略的最优化问题一直都存在较大的争议,对于最优化持肯定观点的人认为,策略的最优化可以使策略获得更好的效果;而持否定观点的人则认为,策略的最优化缺点较多,最为明显和严重的就是容易导致过拟合问题。过拟合问题简单来讲就是策略在样本内进行检验和完善,最终获得了良好的效果,但是到了样本外策略效果与样本内相差很大,很多时候,在样本内取得较好收益的策略到了样本外一度亏损,这就是典型的过拟合现象。除了过拟合问题外,参数最优化还有一个较为明显的缺点就是潜在的运行成本较高,虽然参数最优化过程是通过计算机完成的,但是当待选参数数量较多以及最优化方法较为复杂时,最优化过程将非常耗时。本书认为,适度的最优化过程是有必要的,但也应该注意规避过拟合等问题的发生。下面将介绍最优化一般涉及的几个方面:

1.参数选择问题

最优化问题首先要研究的就是有关参数选择的问题。首先,要确定量化投资策略模型中有哪些需要进行最优化的参数。许多复杂的模型都有着较多的参数,但并不是所有的参数都需要进行优化。值得关注的是,过拟合问题产生的一个重要原因就是量化投资策略模型的参数过多。因此,在构建量化投资策略模型时:一方面要限制参数的个数,另一方面在优化过程中也要考虑需要进行优化的参数。对于不需要进行最优化的参数而言,可以将其视为控制变量,并且设参数为固定值。而对于需要最优化的参数而言,通常要选择那些对量化投资策略效果有着明显影响的参数进行优化,也就是当参数值出现变化时,会导致策略效果发生显著变化的参数。以表2-1为例,现假设某量化投资策略模型有两个参数αβ,现需要判断哪个参数的优化意义更大,从表中可以看出,当控制β为1而变化α的值时,每次α变化1个单位都会导致策略的年化收益率变化10%;而当控制α为1而变化β值时,可以发现此时策略的年化收益率的变化非常小。因此,两个参数比较而言,α对于策略的影响更大,对于其进行优化的必要性也更强。

表2-1 参数选择示例

除了待选参数的选择问题以外,参数优化问题还要考虑参数变动范围和变动单位。仍旧以表2-1为例,如果策略只有αβ两个参数,并且选定每个参数可调整的变动范围是1~3,每次变动一个单位,那么两个参数的取值都可为1,2,3。则需要检验的参数组合就有9(3×3)个。如果变动范围是1~10,每次变动一个单位,那么需要检验的参数组合就达到了100(10×10)个;如果是三个参数,则待检验的参数组合就达到了1 000(10×10×10)个。正如前文所提到的潜在运行成本的问题,对于参数的取值范围和变动单位的选择非常重要。参数取值范围和变动单位的选择要充分考虑具体量化投资策略的情况与最优化过程的计算量。例如,对于一个关注于长期投资的量化策略,如果用到了均线指标,那么检验小于30日的均线就是不合时宜的。而对于一个关注于短期投资的量化策略,如果用到了均线指标,选择的均线范围是1~24,如果设定变动单位为8,这也是与策略的思想不符的。

2.优化测试区间的选择

前文介绍回测过程的部分已经提到了有关样本区间选择问题,一般而言,测试区间越长,对于策略效果的评估就越准确。但是,并不能肯定地说优化测试的区间越长或者价格信息越多,策略的优化效果就越好。对于优化测试区间选择的一个极为重要的条件就是,测试的区间要尽可能地包含市场的各种情形。我们以美国股市为例,金融危机爆发后,标准普尔500指数一路下跌,在2009年3月达到了最低点,随后整体趋势一路上升。如果以2009年3月以后的数据作为优化的测试区间,虽然测试区间较长,但是,整体市场的趋势是向上的。因而此时优化的策略如果发现在区间内效果较好,其实并不是模型构建或者优化得好,而是市场的整体行情好。而在波动较为剧烈的市场,优化后的策略效果如何,却无从得知。因此,一个较为优良的测试区间应该尽可能地包括市场的各种情形,至少也应包括牛市、熊市以及盘整期等情况,这样才能综合判断策略的效果。

3.优化目标的选择

最优化过程需要确定优化达到的目标,也就是说,参数最终的确定要有一定的标准,这也是策略好坏评估的方法。在最优化领域中,通常要设定目标函数,通过目标函数来确定参数的优劣。目标函数的选择是优化过程重要的一个问题,一个好的策略评估方法才能够选择出好的参数和策略。举一个较为极端的例子,如果认定年化收益率越高,则策略效果越好,可以想象到,最终形成的量化投资策略并不会有一个好的效果,因为只考虑收益而不考虑风险等其他因素是一种错误的做法。因此,一个好的量化投资策略应该具备以下几个特点。

(1)较为可观的收益。一个策略最重要的就是要有收益,评判每一个量化投资策略的好坏都无法离开对于收益的衡量。在风险程度可接受的情况下,收益率要尽可能的高。

(2)可接受的风险程度。除了收益以外,量化投资策略的潜在风险也是需要评估的指标,一个策略如果风险程度较高通常是不会被接受的。

(3)符合策略要求的交易次数。交易次数也是衡量一个量化投资策略好坏的标准。具体的衡量方法要根据策略的特点而定,但是一般对于一个较长的优化检验区间而言,交易次数不能过少,如果过少,将难以判定交易的成功是否是涉及运气等原因。

(4)交易情况的分布平均。交易情况的分布平均主要有两个方面:一方面是交易行为要能够分布在检验区间的各个阶段,最好不是仅在某个较短的时期内进行交易,而其他时期基本不进行交易;另一方面是交易的获利也要尽可能分布在区间的各个阶段。例如,如果一个策略大部分盈利的交易都发生在市场行情非常好的时候,而在盘整时期的交易几乎全部难以获得收益,那么也就无法说明该策略是好策略。

(5)正向的绩效趋势。绩效的趋势情况也是衡量量化投资策略优劣的一个标准。一个好的策略不应该只在前期有着较好的绩效,其趋势应该是显著向上的。

除以上特点之外,还有许多可判定策略优劣的方法,在此不一一列举。一般策略的开发和优化人员会综合考虑各种情况,设定一个有效的目标函数,进而进行参数优化过程。

【2-2】思考问题

假设某量化投资策略只有一个参数,在最优化过程中,其参数变化所引起的年化收益率变化如下表所示,这是一个稳健的投资策略吗?

4.策略优化方法

最优化问题一直是学术界研究的一个热点问题,随着研究的深入,许多复杂的最优化理论方法也被提出,并且都有着各自的优势和劣势。本书主要介绍两种常见的最优化方法。

1)交叉验证

交叉验证是一种常用的策略优化技术,用于评估模型如何推广到新数据之上,这种策略经常用于预测模型。从根本上讲,交叉验证的目标是最大限度地减少样本数据的误差,从而减少过拟合的问题。下面将介绍两种常用的交叉验证方法。

(1)双重交叉验证。双重交叉验证就是将历史数据集进行拆分(如资产价格的每日时间序列等),拆分成两个分量,而常见的分割比率通常在0.5~0.8。例如,当分割比例是0.8的情况下,就意味着80%的数据用于训练,20%的数据用于测试。所谓的测试集就是只利用这20%的历史数据进行计算来得到模型的具体参数,值得注意的是在计算模型参数时并没有用到训练集的历史数据,而是在得到参数之后再利用80%的训练集进行交叉验证,进而减少过拟合现象。

(2)K-折叠交叉验证。K-折叠交叉验证是对双重交叉验证的进一步扩展。在K-折叠交叉验证中,将该集合随机划分为k个相同大小的子样本,而不是将集合只划分为训练集和测试集两个部分。对于每次迭代,将k个子样本中的一个保留为测试集,而剩余的k-1个子样本一起形成训练集。通过k次折叠进而减少过拟合问题,使用K-折叠交叉验证的主要好处是,多次交叉验证更具有效果。

2)网格搜索

到目前为止,虽然双重交叉验证和K-折叠交叉验证都有助于避免数据的过拟合问题。但是对于优化特定统计模型的超参数问题同样不能忽视(超参数是指没有通过模型估计过程而直接获知的参数。实质上,超参数正是在初始调用每个统计模型时需要指定的参数)。对于这个问题,最优化常使用网格搜索的方法。其基本思想是采用一系列参数并评估范围内每个参数的性能。我们可以利用Python语言从而对一个对象产生一个Python字典列表,并将其输入统计模型,从而得到最终结论。

2.1.5 量化投资策略的交易

经过了一系列复杂的策略设计开发、回测、优化等过程,最终策略的开发者会收获一个满意并等待进行交易的策略。一个完整的量化交易过程是程序化的,交易行为通常也由计算机来控制,但是这并不代表量化投资的交易过程完全不需要人的参与和把控。在交易策略的过程中,交易人员应做好以下几项工作。

1.最后的检验

真正进行交易,通常涉及的资金量较大,一旦策略运行不佳出现亏损,代价较大。因此,本书建议对已经经过重重筛选、准备进行实盘交易的策略最后进行一次检验。主要的方法就是将该策略进行一段时间的实盘模拟交易,或者利用较少的本金,对策略进行实盘交易。通过一段时间的模拟或者小资金实盘交易,来对策略进行评估,进而决定是否加大资金量。当然,模拟交易和小资金的实盘交易都有一定的弊端,无法完全代表真正的实盘交易行为,但是会起到一定的辅助验证作用。

2.对于策略绩效的评估

当策略进行实盘交易时,交易员要时刻关注该策略的情况。要发现策略在实盘交易中的问题,并找到出现问题的原因。问题的发现主要是从策略业绩评估指标中得知。对于策略收益的观测和评价要结合整个市场的情况来看,如果策略收益差强人意,要分析是由于市场的原因还是策略自身的原因所导致。正如本书第1章曾经提到的,过去A股市场较少出现如2017年白马股的行情,量化投资策略模型在开发和优化过程中很难捕捉到这种趋势,因此,导致了2017年股票量化基金的收益普遍较低,这种未曾见过的行情也是导致收益不佳的一个重要原因,交易员和策略开发人员要注意这些问题。而在风险方面,交易员要时刻观察策略面临的风险和波动情况,确定在策略的风险或者亏损达到什么程度时,暂停策略的交易。交易员观察策略运行情况、评估绩效的一个重要原因就是要发现实盘交易与过去回测之间的差异,并找到这种差异的原因,对策略情况作出客观、正确的判断。具体的评估方法要综合多个指标来看,本书在策略优化过程和业绩评价部分介绍过类似内容,在此不再赘述。

3.严格的纪律性

严格的纪律性是交易成功与否的一个极为重要的因素。虽然我们说量化投资在很大程度上规避了人的主观作用。但是,即使是程序化交易,也离不开人的参与,交易员还是能够决定策略的执行与停止的。此外,还有许多量化投资的策略仍旧是采用手动交易,人的参与部分更多。因此,严格的纪律性就变得十分重要。交易员对于策略的细节要有着详细的了解,不能被情绪所左右。对于策略的跟踪和评估要谨慎与仔细,特别要能够区分哪些收益是运气使然,哪些收益是符合策略预期的。可以说,严守纪律的交易员也是策略成功与否的关键。

即使策略已经开始进行交易,也不能够停止对于策略的监控与优化。监控的目的是让我们时刻对策略可能面对的风险保持警惕;而持续的优化和完善是为了让策略能够取得更好的效果。