现代量化投资组合方法简介

发布时间: 2019/3/26 1:12:30 51473浏览
摘要:我们在进行同时投资多个对象的组合投资时,总是希望尽可能获取高的收益率,而又可以控制住投资的风险(即波动率)。我们能否做到这一点呢?以及如何做到?本文将重点围绕这些问题讨论量化组合投资的收益来源和获取,以及风险的控制。

前言

首先,我们来看看几个重要的概念:

  1. 什么是组合投资?简单说就是同时投资多个对象,它们共同构成了一个投资组合。譬如同时投资股票、债券、外汇,也可以是仅仅投资股票,但同时投资多只股票,这些都是组合投资。
  2. 投资中最值得关注的目标是什么?收益和风险。获取收益是投资的目的,控制风险则是科学理性投资的关键。在量化投资中,收益的直接表达方式就是收益率,而度量风险最常用的指标则是波动率。

所以,综上所述,我们在进行同时投资多个对象的组合投资时,总是希望尽可能获取高的收益率,而又可以控制住投资的风险(即波动率)。我们能否做到这一点呢?以及如何做到?本文将重点围绕这些问题讨论量化组合投资的收益来源和获取,以及风险的控制。


收益来源和获取

股票投资的收益来自哪里?

大概每个人都能说出一些见解,谁对谁错这个事基本也说不清。但基本上,有一个大家都能接受的影响因素——市场(这里说的市场指股票市场的整体情况,可以通过市场指数进行反映,譬如A股市场的上证指数)。
每只股票在一段时间内的收益情况或多或少地都跟这段时间内的市场指数收益情况有相关性,这种相关性的强弱我们一般用一个量化的数值表示,就是“市场贝塔(market beta)”,记为\beta_M

假如,一只股票的\beta_M=1.1,那么当市场指数的收益率是r_M=5\%的时候,在这只股票的收益里面市场贡献的部分就是1.1*5% = 5.5%。但实际上,这支股票的真实收益率不一定就正好是5.5%,假设它的实际收益率是r=6%,那么多出来的部分6% - 5.5% = 0.5% 就是市场之外因素贡献的部分,一般称之为“阿尔法(alpha)”,记为\alpha。整体上写作公式的话,就是

r=\alpha+\beta_M r_M

伟大的“资本资产定价模型(capital asset pricing model, CAPM)”在上面公式的基础上认为所有股票的阿尔法部分的期望值是零,也就是说股票的期望收益只跟市场期望收益,以及该股票与市场的相关性(市场贝塔)有关。这个说法看似简单,但却极为牛X(不然也不能是诺奖呀),让后来的一堆经济金融学家争论了好多年,同时也为其他重要理论和模型的发展奠定了基础,其中一个就是“套利定价理论(arbitrage pricing theory, APT),【参考材料见附件】”。


多因子模型

套利定价理论拓展了上面的思路,认为不仅仅是市场因素,我们可以使用更多的“共有因素”来解释股票收益。在这个思想的指引下,一些人(当然都是些牛人)提出了宏观经济因素,譬如通货膨胀率、工业生产变化率、信用风险变化率等等,他们研究发现这些因素都还是挺有效的。如此一来,上面那个公式就可以变成,

r_i = u_i + \sum^{K}_{k=1}{\beta_{ik} f_k}

f_k表示共同因素的变化情况,\beta_{ik}表示这只股票受这种因素的影响程度,u_i 表示共同因素影响之外的收益部分,这个模型也就是常说的“宏观经济因子模型(macroeconomic factor model, MFM)”。除此之外,常用的还有“基本面因子模型(fundamental factor model, FFM)”和“统计因子模型(statistical factor model, SFM)”,这几个模型的公式形式完全一样,只是因子内容和构造方式各有不同,这里就不多废话了(小小的声明一下:本系列主要是介绍基本的思想,后面的相关介绍默认以MFM为例,实际应用中FFM和SFM的使用有各自的套路,这个不是本系列打算涉及的内容)。

考虑国内市场的话,上面提到的几种因素是否仍然有效?还能不能加其他因素?这个仁者见仁,毕竟中国A股市场是个比较奇葩的市场,今天主要介绍构造模型的思路,真正好用并且适合自己投资目标的模型还是得靠大家回家自己摸索。

这里也简单介绍一个著名的商用模型(这个是FFM模型,当然暂时可以不用管这些)供大家有个直观的感受,BARRA China Equity Model CNE5。这是大名如雷贯耳的BARRA公司(2004年被摩根斯坦利旗下的MSCI收购)编制的中国股票市场第五代模型CNE5(前身是CNE2,第三、四代模型貌似没有为中国市场编制),它包括三类共同因素:
1) 国家因素(country factor):1个,类似于全市场因素,反映整体的收益情况;
2) 行业因素(industry factor):32个,反映各行业的收益情况;
3) 风格因素(style factor):10个,反映各种风格特征的收益情况。
详细信息大家可以参看《CNE5 Empirical Notes》【参考材料见附件】。


收益的获取

从上面的多因子模型中我们可以看出:收益由共同因素收益和特异收益两部分构成,

r_i = u_i + \sum^{K}_{k=1}{\beta_{ik} f_k}

那么要获取收益自然也得在这两方面下功夫。
首先我们来看看如何获取共同因素带来的收益?以获取市场因素的收益为例,最简单的方法就是投资市场指数,由于直接投资全市场组合基本上不可能,主要可行的投资办法包括:
1.买指数期货
2.买指数ETF
3.买指数基金
4.构造“跟踪”市场指数的股票组合(如何构造高效的跟踪组合有一套独立的技术,这里不讨论了)

这个挺直观和容易操作的,那么如何获取其他因素的收益呢?譬如我们想获取工业生产因素的收益,没有相关的投资标的咋办?
国外不少投资机构提供各种目标明确的可投资指数和投资产品能满足这方面的需求,国内貌似还没有。只能自力更生,自己构造股票组合来达到目标了。做这件事一般需要先弄清楚“纯因子组合(pure factor portfolio)”,或者叫“因子模仿组合(factor mimicking portfolio)”,它们是理论上仅仅反映目标因素收益的一个股票组合(对其他因素的暴露都是零)。这种组合一般本身无法直接投资(跟全市场组合类似),但有了目标我们自然就能“跟踪”,亦步亦趋还是可以实现的。

说到这就不得不提,最近慢慢开始流行的“聪明的贝塔(smart beta)”。Smart beta产品一般可以以原有的市值权重指数为基础,通过改变权重分配方案生成新的指数,或者直接构建以因子值为基础的权重指数。Smart beta产品的构建、调仓等管理规则都是事先定好的,透明公开,使用基于因子值和波动特性的非市值权重方案,本质上也是为了获取目标因素的收益。国外这种投资方式已经流行多年,管理的资金规模年年增长,很是风光(不过,一窝蜂大干快上之后现在也有人开始讨论它的危险性,主要是担心同质化引起的系统性崩溃)。国内市场这方面才刚刚起步,个人认为这种投资方式目标明确,管理透明,风险可控,资金容量大,未来必然有广阔的前景。

【参考材料见附件】

这里插播些小知识,上面的投资方式有一个特点,就是不对未来做预测,选了一个投资因素(大多数情况下指市场因素)就砸钱,坐等结果,这种一般称为“被动投资(passive investing)”。市场有效假设和CAPM理论都认为“自作聪明”想打败市场是痴心妄想,同时考虑到股票市场长期看总是上涨的,所以大家就老老实实构建类似市场指数的组合,投资市场因素就好了,做被动投资。
但是总有人不信这个邪,想靠自己的聪明才智发现一些特别的规律,打败市场获取超额收益,这些人江湖上被称为“主动投资经理”(active investing/management manger)。相对于被动投资,“主动投资(active investing)”的主要特点是得对未来做预测,根据预测结果投资,一般投资过程中进行的调整也更频繁些。在两者之间,也有些投资方式被称为半被动投资,譬如smart beta。

好的,轮到特异收益的获取了。这里基本是主动投资的天下,得对特异收益做预测。如何做预测是个世界性难题,有效的预测方法和模型都是对冲基金严格保密的“聚宝盆”,方法不一而足,八仙过海各显神通。既然写到这了,我也斗胆提几点个人认为重要的问题(说得不好的话,别打脸):
1.既然是特异收益,那么就得注意“特异”这两个字。对所有股票都有效的因素可以划到共同因素那里去,可以通过获取共同因素收益的方式获取,剩下的是针对个股或某小范围股票有效的因素,这里就得弄清楚因素的适用范围,然后来理解它和获取它。
2.相对于共同因素来说,关联特异收益的因素一般不那么稳定,得动态地检测和调整。

除了获取这两方面的收益,我们还能干点什么吗?
能的!
还有一个重要的收益获取来源——择时收益(timing skill)。从大的方面看,我们可以进行宏观择时,这方面的择时结果一般应用于战术资产配置(tactical asset allocation,【参考材料见附件】)。其次,可以对共同因素收益择时,择时结果可以直接用来指导我们对组合进行因素倾斜(factor tilting)。再次,可以进行个股级别的择时,用于选择个股。


风险的控制

如何估算风险?

前面提到过组合投资的风险一般以波动率来表征,它一般是如何计算的呢?
常规的方法是,估计每只股票的波动率(\sigma_i)然后估计每两只股票之间的相关系数(\rho_{ij}),这样就可以计算出股票组合的波动率(的平方):

\sigma_p^2 = \sum^{n}_{i=1}{w_i^2 \sigma_i^2} +\sum_{i \neq j}{w_i}{\sigma_i}{\rho_ {ij}}{\sigma_j}{w_j}

其中w_i是每只股票的权重。
可以看出,使用这种方法的话,如果投资组合中包含n个投资对象,我们需要估算n(n+1)/2个参数(因为\rho_{ij}= \rho_{ji})。一般的组合投资,100只股票是个起步数目,这样至少需要估计5050个参数!下图是一个25只股票的组合的相关性矩阵所需要估计的参数,大家随意感受下。

统计学中的参数一般是没法知道它的真实值的,只能利用可观测、能够收集到的数据通过合理的方法去估算,而为了估计值具有较好的精度一般又需要大量的有效数据,需要估计的参数越多,数据量的需求一般就越大。上面提到的方法所需要估算的参数数量以n^2的速度增加,而股票可观测的收益数据是有限的,再考虑到数据的时效性,这个数据量很难给出所有参数的良好估计。更别说我们这里需要的是对波动率未来预期的估计,不是对历史波动率的估计。

那怎么办呢?

还得靠上面的因子模型呀,让我们再看看它,

r_i = u_i + \sum^{K}_{k=1}{\beta_{ik} f_k} , i=1,\ldots\ , n

一般而言,共同因素的总数K是远小于股票的总数n,既然股票收益率是跟因素变动率相关,那我们是否可以先估计因素的波动率和因素之间的相关性(需要估算的参数总数是K(K+1)/2个),然后通过它们来计算股票收益的波动率和它们之间的波动率呢?

这个方法是行得通的!

打个比方,假设万物都由几种基本元素构成,每个物体所含各个元素的比例不同。要想测算所有物体两两之间的作用关系,那工作量巨大,得测算到天荒地老。但是如果我们能够测算出每两种基本元素之间的相互作用关系,那么每两个物体之间的作用关系就仅仅是使用元素比例的直接计算了,不需再进行测算。
细心的读者可能发现了一个问题,在上面的因子模型中,股票收益率是由共同因素部分(\sum^{K}_{k=1}{\beta_{ik} f_k})和非共同因素部分(u_i)组成的。你仅仅通过共同因素的波动特征来计算股票收益之间的波动特征怕是不合适吧,非共同因素部分不会产生影响吗?

这个问题实在是问得好!

一般而言,在选择了合适的共同因素f_k后,每只股票收益的大部分都由它们解释了,剩余的收益来自于股票特有的特征,所以u_i一般也被称为“个股特异收益(security-specific return, idiosyncratic return)”。由于它来自于股票特有的特征,因此一般和共同因素的相关性很低,股票与股票之间的特异收益部分相关性也很低。所以,特异收益自身的波动和共同因素引起的波动一起组成每只股票自身的波动率,而股票与股票之间的相关程度仅由共同因素部分产生,这句话写成公式就是,

\sigma_i^2= \sigma_{s,i}^2 + \sum_{l,m=1,\ldots\ ,k}\beta_{il} \sigma_l \rho_{lm} \sigma_m \beta_{im}

\sigma_i \rho_{ij} \sigma_j= \sum_{l,m=1,\ldots\ ,k}\beta_{il} \sigma_l \rho_{lm} \sigma_m \beta_{jm}

这里\sigma_{s,i}^2是股票特异收益率的波动率,\sigma_l\sigma_m是共同因素的波动率,\rho_{lm}是共同因素之间的相关系数。只要把这些值估计出来(当n=100, K=10的时候,总共需要估计155个值,远远小于刚才需要的5050个),那么所有股票的波动率和它们之间的相关性就可以通过上面的两个式子直接计算出来,股票组合的波动率也就可以计算出来。

这个模型是不是给我们省了很多事?

不仅仅如此,由于共同因素本身的波动特征和它们之间的相关性相对于股票收益而言具有更高的稳定性和可预测性,通过这种方式估计的组合风险精度一般也更高!既省事效果又更好,事半功倍,统计模型是不是很牛X。


如何控制风险?

估算股票波动率的方法是找到了,那么如何控制股票组合的风险呢?
首先,让我们再看一眼股票组合波动率\sigma_P^2的计算公式,

\sigma_P^2 = \sum_{i=1}^n w_i^2 \sigma_i^2 + \sum_{i \neq j} w_i \sigma_i \rho_{ij} \sigma_j w_j

可以看出w_i(每只股票的权重)这个变量是我们可以任意设置的:权重分配方案不同,组合也就会有不同的波动率。通过数学上的优化算法,我们可以计算出合适的权重分配方案,使得组合的波动率最小。

这样就行了吗?

没有这么简单!纸上谈兵总是很美好,实际情况总是太复杂,理论上的东西离实际应用总是很遥远,多少让人信心满满的投资模型实际一使用就立即把你从“指日赚取一个亿,登上人生巅峰”的梦想中拉回残酷的现实。

上面的“最小波动优化”结果,直接用的话会有各种问题。这里简单列举两点:

  1. 这样的权重优化结果对于波动率估计的准确性非常敏感:波动率估计稍有变化,权重优化结果会有很大变化,这个结果不稳定。由于我们对波动率的估计结果是带有不确定性的,这个不确定性就会被传导到权重优化的结果上,甚至会被放大,所以这个结果就很不让人放心了。如何解决这个问题,由于篇幅有限,这里不能详述,放几个相关的名词供有兴趣的读者去探索:robust optimization, resampled efficient frontier, Bayesian rescaling。
  2. 只考虑最小波动的优化很容易把权重大量地分配给某只(或某几只)对组合波动影响较大的股票上,从有可能造成的损失角度考虑,这是不太明智的作法:把宝押在几只股票上,一旦它们出了问题,后果会非常严重。解决办法包括做优化的时候添加对权重分配的限制规则、从损失角度考虑的风险均价(risk parity,【参考材料见附件】)方法等。

好的,如果组合收益的波动风险我们想办法控制了,然后呢?
让我们再回到因子模型,把它应用到股票组合上面,可以得出股票组合的预期收益为

\left. \begin{aligned} r_p = \sum_{i=1}^n w_i r_i \\ r_i = u_i + \sum_{k=1}^k \beta_{ik} f_k \end{aligned} \right\} \Rightarrow r_p = u_p +\sum_{k=1}^k \beta_{pk} f_k

其中u_p= \sum_{i=1}^n w_i u_i,\beta_{pk} = \sum_{i=1}^n w_i \beta_{ik}分别是股票组合的特异收益和因素暴露。组合对某个因素的暴露参数越大,那么该因素的变化对组合收益的影响就越大。如果对于某个因素,我们对它未来一定时期的变化无法判断:通货膨胀变化将会是个什么情况,原油价格会怎么走,人民币汇率还扛得住吗,股票收益动量效应未来能否持续,等等。

有没有什么办法消除这个因素对组合收益的影响呢?

聪明的读者可能已经想到了办法:想法子使得组合对这个因素的暴露为零就可以了嘛!这样的话,不论未来这个因素如何变化,组合收益都不受它的影响,关于这个因素的可能风险就消除掉了。的确是如此,而使得组合对某个因素零暴露的方法主要有两种:
1)通过调节股票权重,使得组合的因素暴露为零,即使得\beta_{pk} =\sum^{n}_{i=1}{w_i}{\beta_{ik}} = 0。当个股暴露\beta_{ik}取值有正有负的时候,只通过做多就可以实现目标。否则我们只能分配给部分股票负的权重,也就是做空部分股票来实现目标(就是融券卖出,但A股融券成本很高,很坑爹)。
2)找到一个成本可控、可做空、对目标因素有暴露(最好对其他因素无暴露)的投资标的,通过做空该标的的方式来对冲股票组合在目标因素上的风险。国外的话此类标的有很多,在国内的话一般就只能用股指期货了,主要用于对市场因素的对冲。

至此,我们发现可以通过波动控制、合理的分散、因素暴露控制在一定程度上控制投资组合的风险。

看空
看平
看多
知识分类
相关知识
智能助理

擅长领域