You are on page 1of 1

搜索 打开App

基于CAPM检验美国⾦融市场的有
效性
3 个⽉前

drifter 关注

本⽂将简要梳理CAPM的理论基础、重点展示如何运
⽤STATA检验CAPM以及市场的有效性。

理论基础

⾦融市场的基础理论之⼀为有效市场假说,该假说对
市场提出了三种有效性假定:

1)弱有效性:当前的资产价格已经反应了过去所有
的信息 。

2)中强有效性:当前资产价格反应了所有过去的信
息、现在已公开的信息。

3)强有效性:当前资产价格反应了所有过去的信
息、所有已公开的信息、所有内幕信息。

为了验证有效性,CAPM应运⽽⽣。如果市场是有效
的,该市场中任意证券的超额收益率应服从以下关
系:

其中Ri是单⼀资产的回报率,Rf是无⻛险回报率 (通
常以国债回报率表示,反应了系统性⻛险 ),Rm是
市场组合的回报率 (通常以市场指数收益率近似,例
如沪深300、道琼斯等)。那么,Ri-Rf即代表了单⼀
资产的非系统性⻛险,Rm-Rf代表了整个市场的非系
统性⻛险。

以上模型说明,如果⼀个市场是有效的(即囊括了所
有过去信息),那么该市场中的任意证券的非系统性
⻛险应该只与整个市场的非系统性⻛险成比例关系,
这⼀比例关系被称为 ⻛险。

如果beta⼤于1,则代表该资产的非系统性⻛险(或
者说独特性)⼤于整个市场的非系统性⻛险,例如中
⼩企业、成⻓类股票。上述公司由于更少的固定成
本、更⼩的债务规模、相对低的营收基数、或者更⼤
的潜在市场空间,当整个市场环境变好时,业绩会出
现巨⼤的爆发,导致更⾼的收益率。相对的,当市场
环境变差时,受制于薄弱的资本⾦⽔平、不稳固的客
户关系,成⻓型企业的业绩也会出现更⼤的下滑,导
致股价表现更差。

如果beta⼩于1,则代表该资产的非系统性⻛险更
⼩,例如⼤型的成熟企业(银⾏等)。由于这类⼤型
企业已经处于成熟市场的寡头地位,同时受制于庞⼤
的固定成本和利息成本 ,其营收相对稳定,爆发性增
⻓机会较⼩,导致其相对稳定的资产收益。

将CAPM进⾏简单的移向,则可以得到更为明确的经
济学解释。

在有效市场下,任⼀资产的回报都来⾃⼤环境 (系统
性⻛险,以国债为代表的无⻛险收益)加上⾃⾝独特
性(非系统性⻛险),⽽后者⼜与整个市场的独特性
成线性的比例关系。进⼀步引申,则可以得到符合⽣
活常识的结论“⻛险越⾼,回报越⾼”

综上 ,CAPM的理论非常简单直接且符合⽣活直觉。
但是,在实务操作上,如何去测试市场是否符合
CAPM,即是否有效,如果不符合,如何⾃⼰加入新
的因⼦并检测,以上问题对⾦融从业者则更为重要。

检验⽅法

实务中主要运⽤回归的⽅法检验CAPM,本⽂将介绍
由Fama及Macbeth(1973)提出的两步检验法,该
⽅法⾄今也是主流的验证⽅法之⼀。

⾸先,检验CAPM前,构建⼀个多因⼦回归模型。

如果统计检验显示满⾜以下⼏个条件,则该数据集服
从CAPM模型,该市场有效:

1)资产收益与beta成线性关系 ⸺ H0:
\gamma_{2}^t = 0

2)只有beta⻛险影响资产回报 ⸺ H0:
\gamma_{3}^t = 0

3) 单⼀资产的非系统性⻛险与整个市场的非系统性⻛
险成比例关系 ⸺ H0: \gamma_{1}^t=R_{M}^t-
R_{f}>0

4) 单⼀资产的系统性⻛险只来⾃于无⻛险利率 ⸺
H0: \gamma_{0}^t=R_{f}^t

5) 有效市场下,过去信息无法影响未来价格,所以参
数的序列相关性应该尽可能的低

⸺ H0: \rho(\gamma_{0}^t)=0,
\rho(\gamma_{1}^t)=0 , \rho(\gamma_{2}^t)=0

下⼀部分将利⽤1980-2015年美国股票⽉度收益数据
检验该数据集是否符合CAPM,数据集内共包含438
家公司。

检验流程

第⼀步,搜集数据

部分数据集展示

nid为不同公司的标签 ,共438家。tid为时间戳,时
间范围为1980年1⽉⾄2015年12⽉。ri为个股⽉回报
,rm是对应⽉份的市场指数回报,rf是对应⽉份的无
⻛险利率。

第⼆步,分割区间

本次检验将分为6个时间窗⼝,每个窗⼝再进⼀步分
为构建区间、估计区间、测试区间(无特别规则,⼀
般⽤于回归的构建区间和估计区间⾄少要5年)。

1 2 3 4 5 6


198 198 198 199 199 200

0~1 4~1 8~1 2~1 6~2 0~2

986 990 994 998 002 006


198 199 199 199 200 200

7~1 1~1 5~1 9~2 3~2 7~2

991 995 999 003 007 011


199 199 200 200 200 201

2~1 6~1 0~2 4~2 8~2 2~2

995 999 003 007 011 015

第三步,对构建区间数据的ri和rm回归,利⽤得到的
beta0值将每个公司分配到不同的投资组合中

构建区间的数据⽤于回归得到估计区间和测试区间的
beta值(beta0),该beta值只⽤于划分股票所在的
投资组合。举例来说,在区间1下,利⽤A公司
1980~1986的ri对rm进⾏回归,得到的beta值看作为
1987~1995年该公司的beta值。将以上操作遍历438
家公司后,将所有公司在1987~1995间的beta值排
序。以每5%为断点,分成20个投资组合。举例来
说,如果A公司1987~1995年的beta在所有beta值中
位列前5%,则A公司在1987~1995年间被分到投资组
合1中。依照以上⽅法,在这段时间内,每个公司都
会在对应的投资组合内。STATA代码如下:

forvalues i = 1/438 { // looping for 85 firms


qui reg ri rm if (yid >= 1980)
matrix bi = e(b)
matrix b = (nullmat(b)\bi[1,1]
qui replace beta0 = bi[1,1] if
mata: beta_quant("b") // generate 19 p
qui replace pid0 = 20 if (beta0 < bq[1
qui replace pid0 = 19 if (beta0 >= bq[
qui replace pid0 = 18 if (beta0 >= bq[
qui replace pid0 = 17 if (beta0 >= bq[
qui replace pid0 = 16 if (beta0 >= bq[
qui replace pid0 = 15 if (beta0 >= bq[
qui replace pid0 = 14 if (beta0 >= bq[
qui replace pid0 = 13 if (beta0 >= bq[
qui replace pid0 = 12 if (beta0 >= bq[
qui replace pid0 = 11 if (beta0 >= bq[
qui replace pid0 = 10 if (beta0 >= bq[
qui replace pid0 = 9 if (beta0 >= bq[1
qui replace pid0 = 8 if (beta0 >= bq[1
qui replace pid0 = 7 if (beta0 >= bq[1
qui replace pid0 = 6 if (beta0 >= bq[1
qui replace pid0 = 5 if (beta0 >= bq[1
qui replace pid0 = 4 if (beta0 >= bq[1
qui replace pid0 = 3 if (beta0 >= bq[1
qui replace pid0 = 2 if (beta0 >= bq[1
qui replace pid0 = 1 if (beta0 >= bq[1

可⻅,数据集第⼀家公司在1987~1995年被分在第⼗
个投资组合

第四步,计算各个公司在测试区间每⼀年的beta值和
残差项的标准差(测试区间每⼀年的非系统性⻛险)

这⼀步需要运⽤到滚动回归来获得每⼀年的beta值。
举例来说,如果要得到A公司在1992年的Beta值,就
需要⽤A公司1987~1991年ri对rm进⾏回归。如果要得
到A公司在1993年的Beta值,就需要⽤A公司
1987~1992年的ri对rm进⾏回归……回归区间以⼀年为
间隔增加,直到获得A公司在1995年的beta值。将上
述操作对438家公司 循环,则得到时间窗⼝1的测试
区间内每个公司在每年的非系统⻛险(beta值 )。
STATA代码实例如下:

forvalues i = 0/3 {
forvalues j = 1/438 {
qui reg ri rm if (yid
matrix bi = e(b)
qui replace beta = bi[
qui predict ei, resid
qui sum ei
qui replace sig = r(sd
drop ei
}
}
replace pid = pid0 if (yid >= 1992) &
drop pid0

上述代码中的ei为回归的残差项,sig为残差的标准差
(暗含了ri中没有被rm解释的部分,对应检验⽬标回
归⽅程中的residual)。运⾏上述代码后则可以得到
相应公司在测试区间内的beta值和回归残差的标准
差。

第五步,在时间窗⼝1~6中重复第三步和第四步,得
到1992~2015年每个公司每⼀年的beta值、残差的标
准差值和所属的投资组合。

第六步,只保留1992~2015年的数据⽤于测试CAPM
(第六步开始才是检测本⽂章第⼆部分所讲的检验⽅
法,第⼀步~第五步⽤于⽣成需要的beta数据和投资
组合划分)—— 这⼀步可以通过描述性统计得到每个
组合内每⼀年的股票数量。

第七步,⽤平均的⽅法将数据表转化为每个投资组合
在每⼀年的收益率

STATA代码如下,并⽣成需检测回归⽅程中的beta平

collapse (mean) ri rm rf beta sig, by(period p


tsset pid tid, monthly
rename ri rp
ge betasq = beta^2

转化后数据如下(pid为对应投资组合,rp beta sig为


组合在每个时间窗⼝内平均的收益率、beta值、残差
标准差),并⽤generate命令⽣成检验回归⽅程中的
待估计参数(gamma集)以及相关统计量(R⽅、标
准差)。

第⼋步,根据控制变量原理 ,将待检验回归⽅程拆分
为4个,分别进⾏回归

1)
R_{p}^t=\gamma_{0}^t+\gamma_{1}^t\beta_{p}^{t-
1}+\varepsilon_{p}^t

2)
R_{p}^t=\gamma_{0}^t+\gamma_{1}^t\beta_{p}^{t-
1}+\gamma_{2}^t\beta^2_{p,t-1}+\varepsilon_{p}^t

3)
R_{p}^t=\gamma_{0}^t+\gamma_{1}^t\beta_{p}^{t-
1}+\gamma_{3}^tResidual_{p}^{t-
1}+\varepsilon_{p}^t

4)
R_{p}^t=\gamma_{0}^t+\gamma_{1}^t\beta_{p}^{t-
1}+\gamma_{2}^t\beta^2_{p,t-
1}+\gamma_{3}^tResidual_{p}^{t-
1}+\varepsilon_{p}^t

第九步,利⽤第七步获得的1992~2015年所有数据按
⽉份检验上述4个回归⽅程。得到每个组合在每个⽉
的参数数据后,转化数据为每个⽉所有组合的平均参
数与统计量。

STATA检验⽅程部分代码如下(代码量过⼤,只展示
model4部分)

forvalues i = 1/288{
qui reg rp beta betasq sig if t
matrix b = e(b)
matrix v = e(V)
qui replace gamma40 = b[1,4] i
qui replace gamma41 = b[1,1] i
qui replace gamma42 = b[1,2] i
qui replace gamma43 = b[1,3] i
qui replace sg40 = sqrt(v[4,4]
qui replace sg41 = sqrt(v[1,1]
qui replace sg42 = sqrt(v[2,2]
qui replace sg43 = sqrt(v[3,3]
matrix rsq = e(r2)
qui replace rsq4 = rsq[1,1] if
}

STATA转化数据代码如下

qui collapse (mean) gamma* rsq* sg* rm rf, by(

转化后数据如下

第⼗步,根据本⽂第⼆部分列示的5个条件⽤ttest指
令对参数进⾏t检验

第⼗⼀步,重复第九步、第⼗步于时间窗⼝1~6的测
试区间。

第⼗⼆步,记录所有数据和统计推断量,与5个假设
对照。

该数据集检测结果如下

回归及检验结果

检测结论

1)资产收益与beta成线性关系 ⸺ H0:
\gamma_{2}^t = 0 ,看 t(\gamma_{2}^t)

除了回归⽅程2在2004~2007年外,其他的t值均在
5%的拒绝域外,无法拒绝H0。所以总体上,假设⼀
成立。

2)只有beta⻛险影响资产回报 ⸺ H0:
\gamma_{3}^t = 0 ,看 t(\gamma_{3}^t)

所有t值均在5%的拒绝域外,无法拒绝H0。所以总体
上,假设⼆成立。

3) 单⼀资产的非系统性⻛险与整个市场的非系统性⻛
险成比例关系 ⸺ H0: \gamma_{1}^t=R_{M}^t-
R_{f}>0 ,看 t(\gamma_{1}^t) 和 t(\gamma_{3}^t-
mktpm) ,mktpm为市场溢价。

可⻅,除部分区间t值在拒绝域内,⼤部分t值在5%拒
绝域外。所以,⼤体上,也可以接受假设3。

4) 单⼀资产的系统性⻛险只来⾃于无⻛险利率 ⸺
H0: \gamma_{0}^t=R_{f}^t ,看 t(\gamma_{0}^t)

所有t值均在5%拒绝域外,假设4成立。

5) 有效市场下,过去信息无法影响未来价格,所以参
数的序列相关性应该尽可能的低

⸺ H0: \rho(\gamma_{0}^t)=0,
\rho(\gamma_{1}^t)=0 , \rho(\gamma_{2}^t)=0

数据表中rho值均紧密围绕在0附近,且Q统计量无法
拒绝H0。所以,不存在序列相关性,接受假设5.

综上 ,由于无法拒绝假设1~假设5,可以认为
1980~2015年,美国股票市场⼤体符合CAPM且弱有
效。

本⽂章着重介绍了检验CAPM及市场有效性的流程及
⽅法。利⽤1980~2015年的数据和FAMA和MACBETH
所运⽤的检验⽅法,证明了这段时间内数据基本符合
CAPM和弱势有效。但需要注意的是,虽然把时间拉
⻓后得到这⼀近似结论,多数研究仍然发现CAPM的
符合性以及市场的有效性对时间窗⼝的选择极其敏
感,且通常时间越短,越不符合。综上,笔者认为,
学术上对于有效性和CAPM的验证需要谨慎对待。短
期内,很难找到任何⼀种标准模型拟合数据,市场也
不是有效的。但是通过不同的市场参与者 (套利者、
投机者)(技术分析者、基本⾯分析者、量化分析
者、政府、媒体)对于利润最⼤化的追求以及各⾃采
取的不同⼿段,在⻓期上,市场是有效的 ,且存在标
准模型进⾏拟合。毕竟,每个市场参与者都是依靠着
“⻛险越⼤、收益越⼤”这⼀基本社会理念⾏动。多⽅
⼒量的对冲下,市场也⼀定会反应这⼀理念,⽽这⼀
理念⼜通过CAPM表示。

发布于 2022-05-02 04:07

评论

写评论

推荐阅读

Linux学习环境:VMware+Ubuntu18.04安装
前⾔在嵌入式开发中,尤其是嵌入式linux/Android开发中…
宅学部落... · 发表于Linux内核编程

艾灸俩星期治疗了五年的痘痘
我的痘龄已经五年了,在美国治疗了四年的时间,⻄医⽪…
Sasa

什么是求职内推?如何获得成都
名企内推?
特立独⾏的周

Linux学习环境:VMware+Ubuntu18.04安装
前⾔在嵌入式开发中,尤其是嵌入式linux/Android开发中…
基于CAPM检验美国⾦融市场… 打开
宅学部落... · 发表于Linux内核编程
有效性的⽂章
drifter

赞同 添加评论

You might also like