前情回顾
上次说到:

(1)我们可以把股票的收益分为“共同因素”关联部分()和除此之外的部分(ui),写做公式是

(2)共同因素的选取方式多种多样,有成熟的商业模型,也有自己关在家里鼓捣出来的“秘密武器”。
(3)所有的统计模型和统计结论都是带有不确定性的,但是“大数定理”在一定程度上拯救了我们,应用因子模型分析股票组合的相关特征是靠谱的。
本期我们来谈谈组合的风险问题。是的,本期仍然没有赚钱相关内容,嘿嘿,你越想听的部分我越是最后说。

组合的风险
首先,我得声明一下,我真不是不想讨论赚钱的问题,但有一句至理名言需要给大家分享:做投资请永远先考虑风险!
不计后果地下注是赌博,不是投资。我们不能只盯着预期收益率,还必须考虑它可能的波动情况(一般用波动率表示,也就是收益率的标准差)。

如果一个组合的预期收益率是15%,但是波动率却是20%,那么这个15%的收益是非常不稳定的,组合很有可能在投资期间的某个(或者多个)时点上是-10%这样的负收益。在这种时候,如果你是个人投资,那多半是吃嘛嘛不香,咋睡睡不好。如果你是资产管理人,那投资人如果还没撤资也是在撤资边缘了。所以,我们为了能吃好睡好,在投资前最好能够充分地估计组合的风险情况。
继续上面的例子,投资一篮子股票,约莫大几十至几百只吧,这一篮子股票构成的组合的波动率到底如何估计呢?
常规的方法是,估计每只股票的波动率(),然后估计每两只股票之间的相关系数(),这样就可以计算出股票组合的波动率(的平方):

其中wi是每只股票的权重。
可以看出,使用这种方法的话,我们需要估算n(n+1)/2个参数(因为,其中n为股票总只数),下图是一个25只股票的组合的相关性矩阵所需要估计的参数,大家随意感受下。

一般的组合投资,100只股票是个起步数目,这样至少需要估计5050个参数!

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

一般而言,共同因素的总数K是远小于股票的总数n,既然股票收益率是跟因素变动率相关,那我们是否可以先估计因素的波动率和因素之间的相关性(需要估算的参数总数是K(K+1)/2个),然后通过它们来计算股票收益的波动率和它们之间的波动率呢?
这个方法是行得通的!
打个比方,假设万物都由几种基本元素构成,每个物体所含各个元素的比例不同。要想测算所有物体两两之间的作用关系,那工作量巨大,得测算到天荒地老。但是如果我们能够测算出每两种基本元素之间的相互作用关系,那么每两个物体之间的作用关系就仅仅是使用元素比例的直接计算了,不需再进行测算。
细心的读者可能发现了一个问题,在上面的因子模型中,股票收益率是由共同因素部分()和非共同因素部分(ui)组成的。你仅仅通过共同因素的波动特征来计算股票收益之间的波动特征怕是不合适吧,非共同因素部分不会产生影响吗?
这个问题实在是问得好!

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


这里,是股票特异收益率的波动率,是共同因素的波动率,是共同因素之间的相关系数。只要把这些值估计出来(当n=100, K=10的时候,总共需要估计155个值,远远小于刚才需要的5050个),那么所有股票的波动率和它们之间的相关性就可以通过上面的两个式子直接计算出来,股票组合的波动率也就可以计算出来。
这个模型是不是给我们省了很多事?
不仅仅如此,由于共同因素本身的波动特征和它们之间的相关性相对于股票收益而言具有更高的稳定性和可预测性,通过这种方式估计的组合风险精度一般也更高!既省事效果又更好,事半功倍,统计模型是不是很牛X。

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

可以看出wi(每只股票的权重)这个变量是我们可以任意设置的:权重分配方案不同,组合也就会有不同的波动率。通过数学上的优化算法,我们可以计算出合适的权重分配方案,使得组合的波动率最小。
这样就行了吗?
没有这么简单!纸上谈兵总是很美好,实际情况总是太复杂,理论上的东西离实际应用总是很遥远,多少让人信心满满的投资模型实际一使用就立即把你从“指日赚取一个亿,登上人生巅峰”的梦想中拉回残酷的现实。

上面的“最小波动优化”结果,直接用的话会有各种问题。这里简单列举两点:
(1)这样的权重优化结果对于波动率估计的准确性非常敏感:波动率估计稍有变化,权重优化结果会有很大变化,这个结果不稳定。由于我们对波动率的估计结果是带有不确定性的,这个不确定性就会被传导到权重优化的结果上,甚至会被放大,所以这个结果就很不让人放心了。如何解决这个问题,由于篇幅有限,这里不能详述,放几个相关的名词供有兴趣的读者去探索:robust optimization, resampled efficient frontier, Bayesian rescaling。
(2)只考虑最小波动的优化很容易把权重大量地分配给某只(或某几只)对组合波动影响较大的股票上,从有可能造成的损失角度考虑,这是不太明智的作法:把宝押在几只股票上,一旦它们出了问题,后果会非常严重。解决办法包括做优化的时候添加对权重分配的限制规则、从损失角度考虑的风险均价(risk parity)方法等。
好的,如果组合收益的波动风险我们想办法控制了,然后呢?
让我们再回到因子模型,把它应用到股票组合上面,可以得出股票组合的预期收益为

其中分别是股票组合的特异收益和因素暴露。组合对某个因素的暴露参数越大,那么该因素的变化对组合收益的影响就越大。如果对于某个因素,我们对它未来一定时期的变化无法判断:通货膨胀变化将会是个什么情况,原油价格会怎么走,人民币汇率还扛得住吗,股票收益动量效应未来能否持续,等等。
有没有什么办法消除这个因素对组合收益的影响呢?
聪明的读者可能已经想到了办法:想法子使得组合对这个因素的暴露为零就可以了嘛!这样的话,不论未来这个因素如何变化,组合收益都不受它的影响,关于这个因素的可能风险就消除掉了。的确是如此,而使得组合对某个因素零暴露的方法主要有两种:
(1)通过调节股票权重,使得组合的因素暴露为零,即使得。当个股暴露取值有正有负的时候,只通过做多就可以实现目标。否则我们只能分配给部分股票负的权重,也就是做空部分股票来实现目标(就是融券卖出,但A股融券成本很高,很坑爹)。
(2)找到一个成本可控、可做空、对目标因素有暴露(最好对其他因素无暴露)的投资标的,通过做空该标的方式来对冲股票组合在目标因素上的风险。国外的话此类标的有很多,在国内的话一般就只能用股指期货了,主要用于对市场因素的对冲。
至此,我们发现可以通过波动控制、合理的分散、因素暴露控制在一定程度上控制投资组合的风险。