基本面因子模型用资产的可观测的具体属性构建公共因子来解释超额收益率。这些具体属性包括产业分类、企业规模、市场资本化、账面价值以及风格分类(增长率或者值)。
假定超额收益率是均值修正的,从而因子实现也是均值修正的,因子模型退化为:
r ~ t = β f t + ε t \tilde{r}_t =\beta f_t + \varepsilon_t r~t=βft+εt
r ~ t \tilde{r}_t r~t表示均值修正后的超额收益率。 f t f_t ft作为因子实现,由于 β \beta β是一定的,上式是由k个观测和m个未知量的多元线性回归。由于公共因子数量m应该小于资产的数目k,从而回归是可以估计的。
ε i t \varepsilon_{it} εit的协方差矩阵 D = d i a g σ 1 2 , ⋯ , σ k 2 D=diag{\sigma_1^2,\cdots,\sigma_k^2} D=diagσ12,⋯,σk2依赖于第i个资产。因此,时刻t的因子可以通过甲醛最小二乘方法估计,且权重为个性因子的标准误差,这样得到的估计为:
f t ^ = ( β ′ D − 1 β ) − 1 ( β ′ D − 1 r t ~ ) \hat{f_t}=(\beta'D^{-1}\beta)^{-1}(\beta'D^{-1}\tilde{r_t}) ft^=(β′D−1β)−1(β′D−1rt~)
再实际中,协方差矩阵D是未知的,从而估计需要两个步骤。
f ^ t , g = ( β ′ D ^ o − 1 β ) − 1 ( β ′ D ^ o − 1 r t ~ ) \hat{f}_{t,g}=(\beta'\hat{D}_o^{-1}\beta)^{-1}(\beta'\hat{D}_o^{-1}\tilde{r_t}) f^t,g=(β′D^o−1β)−1(β′D^o−1rt~)
现在考虑10支股票的超额收益率,并用产业分类法作为具体的资产基本面,下图给出了所用的股票:
他们分为3个产业类别,即金融服务、计算机和高科技以及其他类别。样本区间任然是从1990年1月-2003年12月。再BARRA的框架下,有三个公因子表示这三个产业类别。且beta是这三个产业类别的指示变量。
其中,j=1,2,3分别表示金融、高科技和其他类别。例如IBM股票收益率的beta向量为 β i = ( 0 , 1 , 0 ) ′ \beta_i=(0,1,0)' βi=(0,1,0)′.
则, f 1 t f_{1t} f1t是金融服务类的因子实现, f 2 t f_{2t} f2t是计算机和高科技类的因子实现, f 3 t f_{3t} f3t是其他类的因子实现。事实上, f t f_{t} ft的OLS估计非常简单,是每个类别的超额收益率的平均值构成的向量,具体为:
第i个资产的个性因子仅仅是其超额收益率与其所属产业类样本均值的差。因此,可以得到残差协方差矩阵D的估计,并且得到广义最小二乘估计。
da = read.table("m-barra-9003.txt", header = T)
rm = matrix(apply(da, 2, mean), 1)
rtn = da - matrix(1, 168, 1) %*% rm # 均值修正后的超额收益率
fin = c(rep(1,4),rep(0,6))
tech = c(rep(0,4),rep(1,3),rep(0,3))
oth = c(rep(0,7),rep(1,3))
ind.dum = cbind(fin,tech,oth)
cov.rtn=var(rtn)
sd.rtn=sqrt(diag(cov.rtn))
corr.rtn=cov.rtn/outer(sd.rtn,sd.rtn)
print(corr.rtn,digits=1,width=2)
下面给出OLS估计、残差和残差的方差估计。
F.hat.o = solve(crossprod(ind.dum))%*%t(ind.dum)%*%t(rtn)
E.hat.o = t(rtn) - ind.dum%*%F.hat.o
diagD.hat.o = diag(tcrossprod(E.hat.o)/(168-1))
Dinv.hat = diag(diagD.hat.o^(-1))
Hmtx=solve(t(ind.dum)%*%Dinv.hat%*%ind.dum)%*%t(ind.dum)%*%Dinv.hat
F.hat.g = Hmtx%*%t(rtn)
F.hat.gt=t(F.hat.g)
E.hat.g = t(rtn) - ind.dum%*%F.hat.g
diagD.hat.g = tcrossprod(E.hat.g)/(168-1)
t(Hmtx)
cov.ind=ind.dum%*%var(F.hat.gt)%*%t(ind.dum)+ diagD.hat.g
sd.ind=sqrt(diag(cov.ind))
corr.ind=cov.ind/outer(sd.ind,sd.ind)
print(corr.ind,digits=1,width=2)
由模型得到的产业内的股票的相关矩阵要比样本相关矩阵大。如股票CAT和PG的样本相关系数只有0.1,但是基于索尼和模型得到的相关系数是0.6.
给出基于广义最小二乘估计给出的因子实现的时序图。
par(mfcol = c(3,1))
f1 = ts(F.hat.gt[,1],frequency = 12,start = c(1990,1))
f2 = ts(F.hat.gt[,2],frequency = 12,start = c(1990,1))
f3 = ts(F.hat.gt[,3],frequency = 12,start = c(1990,1))
plot(f1,type = 'l')
plot(f2,type = 'l')
plot(f3,type = 'l')
对于一个给定的资产基本面,Fama-French方法主要采用两个步骤来决定因子实现。
为了解释超额收益率变动性的高百分比,确定三个观测到的基本面。
通过市场资产净值和市场资产净值对账面资产净值的比率来定义价值型股票和成长型股票。