CAPM模型基本假设
- 投资者是风险厌恶者,投资目标是最终财富预期效用最大化
- 投资者的交易行为不会影响股票价格
- 投资者认为所有资产收益率满足均值为 E ( R ) \mathbb{E}(\pmb{R}) E(RRR),方差矩阵为 V \pmb{V} VVV的多元正态分布.(最重要假设)
- 存在无风险资产,且投资者可以以无风险利率借贷
- 资产数量是固定的,所有资产都可以市场化且无限分割
- 市场上的信息是充分的共享的
- 市场是无摩擦的
资本市场线(CML)
定义 1:市场组合:设市场上有
n
n
n种风险资产,一种无风险资产,每种资产的价格为
P
i
(
i
=
0
,
1
,
…
,
n
)
P_i(i=0, 1, \dots, n)
Pi(i=0,1,…,n),第
i
i
i种资产的可交易数量为
N
i
N_i
Ni,令
m
k
t
i
=
N
i
P
i
∑
i
=
1
n
N
i
P
i
mkt_i=\frac{N_iP_i}{\sum\limits_{i=1}^nN_iP_i}
mkti=i=1∑nNiPiNiPi
m
k
t
i
mkt_i
mkti表示市场资产组合的初始禀赋.
设市场中有
K
K
K个投资者,且在某一时刻,第
k
k
k位投资者持有第
i
i
i种资产的数量为
N
i
k
N_i^k
Nik,令
w
i
m
=
∑
k
=
1
K
N
i
k
p
i
∑
i
=
0
n
(
∑
k
=
1
K
N
i
k
)
p
i
w_i^m=\frac{\sum\limits_{k=1}^KN_i^kp_i}{\sum\limits_{i=0}^n(\sum\limits_{k=1}^K N_i^k)p_i}
wim=i=0∑n(k=1∑KNik)pik=1∑KNikpi
称
w
m
=
(
w
0
m
,
w
1
m
,
…
,
w
n
m
)
\pmb{w}^m=(w_0^m, w_1^m, \dots, w_n^m)
wwwm=(w0m,w1m,…,wnm)为该时刻的投资者市场资产组合.
性质 1:市场均衡的必要条件是
(
m
k
t
1
,
m
k
t
2
,
…
,
m
k
t
n
)
(mkt_1, mkt_2, \dots, mkt_n)
(mkt1,mkt2,…,mktn)等比与切点处的资产组合
w
t
\pmb{w}_t
wwwt.
性质2:当市场达到均衡时,若记市场在风险资产上的初始资产组合为
w
M
\pmb{w}_M
wwwM,则
w
M
=
w
t
\pmb{w}_M=\pmb{w}_t
wwwM=wwwt,当市场上无风险资产时零净供应的金融证券时,则
w
t
\pmb{w}_t
wwwt就是市场资产组合.
定义 2:称过点
(
0
,
r
)
(0, r)
(0,r)和切点
t
t
t的直线
E
(
R
p
)
=
r
+
σ
p
c
−
2
r
b
+
r
2
a
(1)
E(R_p)=r+\sigma_p\sqrt{c-2rb+r^2a}\tag{1}
E(Rp)=r+σpc−2rb+r2a(1)
为资本市场线(Capital Market Line, CML).
在切点
t
t
t的超额收益率为
E
(
R
t
)
−
r
=
E
(
R
)
T
w
t
−
r
=
c
−
b
r
b
−
a
r
−
r
=
c
−
2
b
r
+
a
r
2
b
−
a
r
(2)
E(R_t)-r=E(\pmb{R})^T\pmb{w}_t-r=\frac{c-br}{b-ar}-r=\frac{c-2br+ar^2}{b-ar}\tag{2}
E(Rt)−r=E(RRR)Twwwt−r=b−arc−br−r=b−arc−2br+ar2(2)
将
(
2
)
(2)
(2)代入
(
1
)
(1)
(1)中得到
E
(
R
p
)
=
r
+
σ
p
c
−
2
r
b
+
r
2
a
=
r
+
σ
p
(
b
−
a
r
)
c
−
2
r
b
+
r
2
a
(
b
−
a
r
)
2
=
r
+
(
b
−
a
r
)
σ
p
σ
t
=
r
+
(
b
−
a
r
)
σ
t
2
σ
p
σ
t
=
r
+
σ
p
σ
t
×
(
E
(
R
t
)
−
r
)
=
r
+
E
(
R
t
)
−
r
σ
t
σ
p
\begin{aligned} E(R_p)&=r+\sigma_p\sqrt{c-2rb+r^2a}=r+\sigma_p(b-ar)\sqrt{\frac{c-2rb+r^2a}{(b-ar)^2}}\\ &=r+(b-ar)\sigma_p\sigma_t=r+(b-ar)\frac{\sigma^2_t\sigma_p}{\sigma_t}\\ &=r+\frac{\sigma_p}{\sigma_t}\times (E(R_t)-r)\\ &=r+\frac{E(R_t)-r}{\sigma_t}\sigma_p \end{aligned}
E(Rp)=r+σpc−2rb+r2a=r+σp(b−ar)(b−ar)2c−2rb+r2a=r+(b−ar)σpσt=r+(b−ar)σtσt2σp=r+σtσp×(E(Rt)−r)=r+σtE(Rt)−rσp
资本市场线反映了有效组合的预期收益率和风险之间的关系.
证券市场线(SML)
定理(Sharpe-Linter-Mossin CAPM):假设市场上无风险资产可以获得,则当市场达到均衡时,任意风险资产的超额收益率与风险资产的市场资产组合超额收益率成比例,即有关系式
E
(
R
)
−
r
1
=
β
M
(
E
(
R
M
)
−
r
)
E(\pmb{R})-r\mathbf{1}=\beta_M(E(R_M)-r)
E(RRR)−r1=βM(E(RM)−r)
其中,
β
M
=
c
o
v
(
R
,
R
M
)
/
v
a
r
(
R
M
)
\beta_M=cov(\pmb{R}, R_M)/var(R_M)
βM=cov(RRR,RM)/var(RM),
R
M
R_M
RM是市场组合的收益率.
使用分量表达式为
E
(
R
i
)
=
c
o
v
(
R
i
,
R
M
)
σ
M
2
[
E
(
R
M
)
−
r
]
+
r
=
r
+
β
M
i
(
E
(
R
M
)
−
r
)
(3)
E(R_i)=\frac{cov(R_i, R_M)}{\sigma^2_M}[E(R_M)-r]+r=r+\beta_{Mi}(E(R_M)-r)\tag{3}
E(Ri)=σM2cov(Ri,RM)[E(RM)−r]+r=r+βMi(E(RM)−r)(3)
方程
(
3
)
(3)
(3)表示的直线就是证券市场线,反映了单个风险资产与市场组合之间的关系,如果以
E
(
R
i
)
E(R_i)
E(Ri)为纵坐标,
β
M
i
\beta_{Mi}
βMi为横坐标,则证券市场线是一条截距为
r
r
r,斜率为
E
(
R
M
)
−
r
E(R_M)-r
E(RM)−r的直线.
案例
假设市场资产组合时间序列值分别为 1500 , 1600 , 1800 , 2100 1500, 1600, 1800, 2100 1500,1600,1800,2100;证券的价格的时间序列值分别为 6.24 , 6.38 , 6.26 , 6.30 6.24, 6.38, 6.26, 6.30 6.24,6.38,6.26,6.30,设无风险利率为 0.06 0.06 0.06,求证券的收益率.
解析
市场组合收益率
R
t
=
P
t
−
P
t
−
1
P
t
−
1
R_t=\frac{P_t-P_{t-1}}{P_{t-1}}
Rt=Pt−1Pt−Pt−1
证券收益率
r
t
=
p
t
−
p
t
−
1
p
t
−
1
r_t=\frac{p_t-p_{t-1}}{p_{t-1}}
rt=pt−1pt−pt−1
证券
β
\beta
β值,
β
=
c
o
v
(
r
t
,
R
t
)
σ
M
2
\beta=\frac{cov(r_t, R_t)}{\sigma^2_M}
β=σM2cov(rt,Rt)
根据SML方程计算
E
(
R
i
)
=
r
+
β
[
E
(
R
M
)
−
r
]
E(R_i)=r+\beta[E(R_M)-r]
E(Ri)=r+β[E(RM)−r]
代码
#include<iostream>
#include<vector>
#include<cmath>
#include<cstring>
#include<cassert>
#include<iomanip>
#include<random>
#include<map>
using namespace std;
double sec_return(const double& beta, const double& rm, const double& rf){
return rf+beta*(rm-rf);
}
int main(){
vector<double> p1{1500, 1600, 1800, 2100}; // 组合
vector<double> p2{6.24, 6.38, 6.26, 6.30}; // 证券
double rf=0.06;
int n=p1.size();
vector<double> r1, r2;
for(int i=1; i<n; ++i){
r1.push_back((p1[i]-p1[i-1])/p1[i-1]);
r2.push_back((p2[i]-p2[i-1])/p2[i-1]);
}
double avg1, avg2;
avg1=accumulate(r1.begin(), r1.end(), 0.00)/(double)(n-1);
avg2=accumulate(r2.begin(), r2.end(), 0.00)/(double)(n-1);
// 计算beta
double sum1=0.00, sum2=0.00, sum12=0.00;
for(int i=0; i<n-1; ++i){
sum1+=pow(r1[i]-avg1, 2);
sum2+=pow(r2[i]-avg2, 2);
sum12+=(r1[i]-avg1)*(r2[i]-avg2);
}
double beta=(sum12/(n-1))/(sum1/(n-1));
double rm=avg1;
cout<<"E(Ri) = "<<sec_return(beta, rm, rf)<<endl;
return 0;
}
定理(Black CAPM):假设市场上没有无风险资产,则当市场达到均衡时,任意风险资产的收益率为
E
(
R
)
=
E
(
R
z
)
1
+
β
M
[
E
(
R
M
)
−
E
(
R
z
)
]
E(\pmb{R})=E(\pmb{R}_z)\mathbf{1}+\beta_M[E(R_M)-E(R_z)]
E(RRR)=E(RRRz)1+βM[E(RM)−E(Rz)]
其中
R
z
\pmb{R}_z
RRRz是市场资产组合零贝塔相关的资产组合收益率.
价格型CAPM
CAPM通过变形可以得到价格形式,假设市场上第
i
i
i种资产期末价格是
P
i
P_i
Pi,当前价格是
P
i
0
P_{i0}
Pi0,其收益率为
R
i
=
P
i
−
P
i
0
P
i
0
=
P
i
P
i
0
−
1
R_i=\frac{P_i-P_{i0}}{P_{i0}}=\frac{P_i}{P_{i0}}-1
Ri=Pi0Pi−Pi0=Pi0Pi−1
市场组合收益率为
R
M
=
P
M
−
P
M
0
P
M
0
=
P
M
P
M
0
−
1
R_M=\frac{P_M-P_{M0}}{P_{M0}}=\frac{P_M}{P_{M0}}-1
RM=PM0PM−PM0=PM0PM−1
代入方程
(
3
)
(3)
(3)得到
P
ˉ
i
P
i
0
−
1
−
r
=
c
o
v
(
R
i
,
R
M
)
v
a
r
(
R
M
)
(
P
ˉ
M
P
M
0
−
1
−
r
)
(4)
\frac{\bar{P}_i}{P_{i0}}-1-r=\frac{cov(R_i, R_M)}{var(R_M)}(\frac{\bar{P}_M}{P_{M0}}-1-r)\tag{4}
Pi0Pˉi−1−r=var(RM)cov(Ri,RM)(PM0PˉM−1−r)(4)
计算
c
o
v
(
R
i
,
R
M
)
cov(R_i, R_M)
cov(Ri,RM)
c
o
v
(
R
i
,
R
M
)
=
1
P
i
0
P
M
0
c
o
v
(
P
i
,
P
M
)
cov(R_i, R_M)=\frac{1}{P_{i0}P_{M0}}cov(P_i, P_M)
cov(Ri,RM)=Pi0PM01cov(Pi,PM)
计算
σ
M
2
\sigma_M^2
σM2
σ
M
2
=
1
P
M
0
2
v
a
r
(
P
M
)
\sigma_M^2=\frac{1}{P^2_{M0}}var(P_M)
σM2=PM021var(PM)
将结果代入
(
4
)
(4)
(4)得到
P
ˉ
i
P
i
0
=
1
+
r
+
(
P
ˉ
M
P
M
0
−
1
−
r
)
1
P
i
0
P
M
0
c
o
v
(
P
i
,
P
M
)
1
P
M
0
2
v
a
r
(
P
M
)
=
1
+
r
+
(
P
ˉ
M
P
M
0
−
1
−
r
)
P
M
0
P
i
0
c
o
v
(
P
i
,
P
M
)
v
a
r
(
P
M
)
\begin{aligned} \frac{\bar{P}_i}{P_{i0}}&=1+r+(\frac{\bar{P}_M}{P_{M0}}-1-r)\frac{\frac{1}{P_{i0}P_{M0}}cov(P_i, P_M)}{\frac{1}{P^2_{M0}}var(P_M)}\\ &=1+r+(\frac{\bar{P}_M}{P_{M0}}-1-r)\frac{\frac{P_{M0}}{P_{i0}}cov(P_i, P_M)}{var(P_M)} \end{aligned}
Pi0Pˉi=1+r+(PM0PˉM−1−r)PM021var(PM)Pi0PM01cov(Pi,PM)=1+r+(PM0PˉM−1−r)var(PM)Pi0PM0cov(Pi,PM)
方程两边同时乘以
P
i
0
P_{i0}
Pi0得到
P
ˉ
i
=
(
1
+
r
)
P
i
0
+
[
P
ˉ
M
−
(
1
+
r
)
P
M
0
]
c
o
v
(
P
i
,
P
M
)
v
a
r
(
P
M
)
\bar{P}_i=(1+r)P_{i0}+[\bar{P}_M-(1+r)P_{M0}]\frac{cov(P_i, P_M)}{var(P_M)}
Pˉi=(1+r)Pi0+[PˉM−(1+r)PM0]var(PM)cov(Pi,PM)
反解出
P
i
0
P_{i0}
Pi0
P
i
0
=
1
1
+
r
{
P
ˉ
i
−
[
P
ˉ
M
−
(
1
+
r
)
P
M
0
]
c
o
v
(
P
i
,
P
M
)
v
a
r
(
P
M
)
}
P_{i0}=\frac{1}{1+r}\{\bar{P}_i-[\bar{P}_M-(1+r)P_{M0}]\frac{cov(P_i, P_M)}{var(P_M)}\}
Pi0=1+r1{Pˉi−[PˉM−(1+r)PM0]var(PM)cov(Pi,PM)}
案例
市场指数时间序列为 1500 , 1600 , 1800 , 2100 1500, 1600, 1800, 2100 1500,1600,1800,2100,证券价格时间序列分别为 6.24 , 6.38 , 6.26 , 6.30 6.24, 6.38, 6.26, 6.30 6.24,6.38,6.26,6.30,无风险利率是 0.06 0.06 0.06,求证券的价格.
解析
根据价格型CAPM方程
P
i
0
=
1
(
1
+
r
)
{
P
ˉ
i
−
[
P
ˉ
M
−
(
1
+
r
)
P
ˉ
M
0
]
c
o
v
(
P
i
,
P
M
)
v
a
r
(
P
M
)
}
=
1
1
+
0.06
{
P
ˉ
i
−
[
P
ˉ
M
−
(
1
+
0.06
)
]
P
ˉ
M
0
]
c
o
v
(
P
i
,
P
M
)
v
a
r
(
P
M
)
}
\begin{aligned} P_{i0}&=\frac{1}{(1+r)}\{\bar{P}_i-[\bar{P}_M-(1+r)\bar{P}_{M0}]\frac{cov(P_i, P_M)}{var(P_M)}\}\\ &=\frac{1}{1+0.06}\{\bar{P}_i-[\bar{P}_M-(1+0.06)]\bar{P}_{M0}]\frac{cov(P_i, P_M)}{var(P_M)}\} \end{aligned}
Pi0=(1+r)1{Pˉi−[PˉM−(1+r)PˉM0]var(PM)cov(Pi,PM)}=1+0.061{Pˉi−[PˉM−(1+0.06)]PˉM0]var(PM)cov(Pi,PM)}
代码
#include<iostream>
#include<vector>
#include<cmath>
#include<cstring>
#include<cassert>
#include<iomanip>
#include<random>
#include<map>
using namespace std;
double sec_price(const double& beta, const double& pm, const double& pi, const double& p0, const double& rf){
return 1/(1+rf)*(pi-(pm-(1+rf)*p0)*beta);
}
int main(){
vector<double> p1{1500, 1600, 1800, 2100}; // 组合
vector<double> p2{6.24, 6.38, 6.26, 6.30}; // 证券
double rf=0.06;
int n=p1.size();
// 计算beta
double pm, pi;
pm=accumulate(p1.begin(), p1.end(), 0.00)/(double)(n);
pi=accumulate(p2.begin(), p2.end(), 0.00)/(double)(n);
double sum1, sum2, sum12;
for(int i=0; i<n; ++i){
sum1+=pow(p1[i]-pm, 2);
sum2+=pow(p2[i]-pi, 2);
sum12+=(p1[i]-pm)*(p2[i]-pi);
}
double beta=(sum12/n)/(sum1/n);
cout<<"Pi = "<<sec_price(beta, pm, pi, p1[0], rf)<<endl;
return 0;
}
价格型CAPM可以计算出证券的理论价格,并以之为依据判断是否应该投资.