量化百科

你们对barra这么热情我一句话不说也不好

由polll创建,最终由polll 被浏览 39 用户

PS1.本来之前开这个专栏是想记录实习里的收获的,可是懒。。。不过前面回答了barra的问题发现感兴趣的人挺多的,就从头梳理了一下。

PS2.为什么是(四)呢是因为(三)留给之前做的择时模型。

PS3.知乎公式不好打,所以这里一个公式都没有,大家将就着看吧。

PS4.最后部分是重点,大家一定要看完呀。

虽然主旨是讲barra,开头还是要再强调一下基础数据和对应的分析回测平台的重要性。前一份实习在一家私募做股指日内,数据就是一个.mat矩阵,可以说做起来完全没有什么门槛,随便会个什么软件有点均线上穿下穿的想法就能做回测了。现在做阿尔法就完全不一样了,如果你没有一个完整的股票数据库以及对应的因子库和分析工具,可以说你连谈多因子的资格都没有。讲真多因子可不光是做个因子然后十分位分一分收益减一下这么简单。之前一个卖方有个报告大意是发现了一个对盈利预期因子的改进方法(这因子wind上就有),逻辑是觉得股价应当上涨等同于盈利预期上调的幅度,而其中一部分盈利预期的变动已经反映在当期的股价变动里头了,所以盈利预期实际带来的正向效应应当等同于盈利预期的变动减去同期股价的变动,也即是盈利预期变动还未被反映到股价上的那部分。逻辑很对有没有,然后信心满满的算出这个因子,分组,收益一减发现确实比原来的盈利预期因子增强了不少,然而真的是这样么。你回过头仔细看看盈利预测这个因子大概30%的股票是没有这个数据的,另外又有30%的股票因为盈利预期没变化所以值一直都是0,那这时这个加强因子就成了0-股价变动,其实就是反转因子了。而反转因子本身就是极强的因子,所以这里所谓的加强逻辑就存疑了,不做其他实验它其实看做是盈利预期因子和反转因子的叠加更合适点。

这个例子是什么意思呢,就是我们在讲风险模型精度高不高,组合优化质量好不好的时候那个背后的基础数据质量才是最关键的,如果不能了解清楚每个因子的数据特点,覆盖度有多少,原始数据用正态调整会不会偏,填充值用中位数还是均值,填充太多又有什么影响,要知道真正的股票数据什么奇怪的情况都有,这些不清楚真是连谈后面模型的资格都没有。。

好吧,其实我也没有。。只是用的师傅的成品因子库。。

回到正题,barra虽说叫风险模型,但据说人家以前是用来做收益归因的,风险部分其实是后来加上去的,所以说barra不包括额外的应用可以分成两部分,收益和风险:

1. 收益的拆分与归类

收益的分解其实本质是股票的定价的问题,找到那些对股价有影响的因子。以前阿尔法策略刚起步的时候大家一起找阿尔法,拿些基本面技术面数据加加减减算出因子,通过因子选出股票做个等权组合,发现,诶,能跑赢大盘,就叫做发现阿尔法了。再后来发现不说沪深300,能跑赢中证500的因子也有一大堆,大家就可以怀疑说我这到底是不是真的阿尔法。

比如某一天,你发现一个因子叫非流动性,定义大家自己找报告吧,多空一测收益很高,跑赢大盘很多,你觉得这是个阿尔法,但又有点怀疑,仔细看发现它选出来的股票基本都是小票,而本身市值因子在A股就是极强的因子,那这个非流动性的超额收益究竟是它本身带来的还是只是由于和市值因子的高相关性带来的就是个问题了。(大家仔细理解下这个例子和开头例子的差别。)

那要怎么解决这个问题呢,一个简单的做法就是把待检验的因子对着市值做回归,残差部分认为是扣除市值影响后的部分,也即这个因子是市值中性的,如果这样这个市值调整之后的因子还有阿尔法就可以认为确实引入了新的预测能力,至少是和市值无关的预测能力。

这样就解决问题了么,除了市值你又发现非流动性选出来的票还都是低换手的,这时又得把流动性因子也给回归掉,那还有没有别的呢。

这时就可以自然的引出barra了,barra模型给出了十个公认比较有效的定价因子,包括Beta,BP,EarningYield,Growth,Leverage,Liquidity,Momentum,NonlinearSize,Size以及用来标示行业的行业因子,在这些因子的基础上,当你发现一个新的因子时,它的阿尔法性需要经过这些因子的检验(被它们回归),只有当被已有因子回归完后仍然有超额收益的因子才能被当成阿尔法,否则只能认为是原有因子在某种程度上的拆分重组。要注意的是这里的基础因子指的是有效的定价因子,它本身可以不是阿尔法。(定价因子,风险因子和阿尔法因子的差别自行百度)所以当你想着对barra作本土化修正时,比如增减几个有效没效的因子时,最主要是从定价能力考虑而不是它的阿尔法性质。

既然要做回归接下来就是明确回归方程,Y=Beta*X+残差分别表示什么。这里又是一个值得注意的点(拍黑板),barra的回归用的是横截面回归而不像很多学术模型比如CAPM,F-F三因子模型那样的时间序列回归,差别具体就不讲了,从效果上来说就是横截面回归侧重于预测,而时间序列回归侧重于解释,而我们要用来做组合优化当然是横截面回归了。所以,这里Y是每期的股票收益列,Beta是每只股票在几个基础因子上的暴露(exposure,也叫作载荷),这样最小化残差就可以回归出每个因子的收益了。这时这个残差就可以认为是股价中不能被解释掉的部分,而只有当你的阿尔法因子能够有效预测这部分变动时才能被认为是新的有效阿尔法。

除了残差的解释力以外收益分解还提供的信息就是收益来源,根据股票因子载荷乘以因子收益可以看到细分的每个因子给组合带来的收益,这就是所谓的收益归因。

2. 风险的预测和组合优化

在有收益拆分之后,对着拆分公式的两头分别求VAR就可以得到风险拆分了。

Var(Y)=X’Var(f)X+Var(sF)

除去文档上那些复杂的调整不说这里的协方差阵只要用前面回归出来的历史收益序列计算的(时间加权)样本协方差来估计就行了。那既然都有股票收益了为什么不像传统的均值-方差模型那样直接算协方差阵而要费力的拆分重组呢,原因在于:

(1).整个股票协方差阵的大小是N*N股票数量*股票数量,而通常用来估计相关系数的日收益序列长度T不会超过200,这样估计出来的协方差阵是会有很大的偏差的,更重要的是这样估计出来的协方差阵是不可逆的,这在后面求组合优化时就会有问题。Barra的做法通过将股票收益协方差阵结构化,将波动分解为数量较少但体现相关性的n*n因子数量*因子数量协方差阵以及虽然数量多但扣掉了相关性估计的股票特质协方差阵两部分的估计,使估计参数降到了n*n+N个,这样就大大的增加了模型的精度。

(2).稳定性。整个barra风险模型的最大的要求就是稳定性,因为你基于风险估计的优化说到底是用过去来预测将来,如果你的估计每期变化很大,那预测的效果就会打折扣了。所以如果直接用股票收益,那风险矩阵基本上一天一个样。而把风险矩阵结构化之后就不同了。仔细去看那十个barra风险因子(也包括行业因子)的计算,它们每个的计算公式在时间上都是极为稳定的,每期的载荷值连起来一定是一条很平稳的线。

算好粗糙的样本协方差之后再根据文档里的几个调整方法做一下统计上的偏差调整,大致包括风险矩阵的形态调整和大小调整。具体就不讲了,大家如果要做建议招一个学统计的人,比如我。。。

有了风险预测之后组合优化就是个标准的二次优化问题了,优化目标可以选择最优化收益,风险调整之后的收益或者ICIR都可以。另外想控制风险暴露的话往优化器里加约束条件就可以了,比如市值中性,行业中性,换手率约束,跟踪误差约束之类的,看个人需要来。

总的来说barra的理论还是很简单的,实施细节呢文档也讲得很清楚了,剩下的就是考验平台质量和模型架构能力了。现在想想虽说Barra是我写的,但没有师傅的平台,没有那个很好用的优化器也是根本就搞不起来这个的。所以想做barra的各位如果还没有完整的多因子分析框架的话还是建议先搞好基础再说,不然后面的调错都没法调。

实施细节的东西直接不太好写,还是把之前有人问过的问题都贴一下算好了,这部分以后会继续更新:

Q1:用的什么版本的文档

A1:USE4

Q2:收益计算频率,R2能到多少。

A2:日频,R2差不多40%

Q3:合成因子权重是用BARRA的还是自己合成。

A3:直接用barra的,也有人是自己类内用最小误差计算出来权重的。

Q4:作协方差阵调整的时候开始几期没有数据怎么办。

A4:加缓冲期

Q5:NonlinerSize和Size有啥关系

A5:NonlinerSize指的是市值的非线性关系,简单理解成是一个中盘因子,两头大中间小。

TO BE CONTINUED...

更多的barra和多因子模型的结合,多条件的添加,在绩效反编译中的运用就是额外的创新了,这里公开就不写了,想知道的话你招我啊,哈哈哈哈哈

最后给自己打一波广告,本人上财统计研究生,有公募和私募的量化实习经验,明年(2017年)毕业,除了barra之前做过CTA和择时,求一份量化的工作。目标岗位是大的券商研究生或者公募基金或者有名的私募(再或者给很多钱的小私募)。

好吧,可以看出来我风险偏好是很低的,第一份工作希望公司能大一点。

求推荐!!

不是找工作我何必费力写这一大篇呀!!

标签

BARRA