【FinE】资本市场理论(1) CAPM模型

CAPM模型基本假设

  1. 投资者是风险厌恶者,投资目标是最终财富预期效用最大化
  2. 投资者的交易行为不会影响股票价格
  3. 投资者认为所有资产收益率满足均值为 E ( R ) \mathbb{E}(\pmb{R}) E(RRR),方差矩阵为 V \pmb{V} VVV的多元正态分布.(最重要假设)
  4. 存在无风险资产,且投资者可以以无风险利率借贷
  5. 资产数量是固定的,所有资产都可以市场化且无限分割
  6. 市场上的信息是充分的共享的
  7. 市场是无摩擦的

资本市场线(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=1nNiPiNiPi
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=0n(k=1KNik)pik=1KNikpi
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+σpc2rb+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)Twwwtr=barcbrr=barc2br+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+σpc2rb+r2a =r+σp(bar)(bar)2c2rb+r2a =r+(bar)σpσt=r+(bar)σ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 1500160018002100;证券的价格的时间序列值分别为 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=Pt1PtPt1
证券收益率 r t = p t − p t − 1 p t − 1 r_t=\frac{p_t-p_{t-1}}{p_{t-1}} rt=pt1ptpt1
证券 β \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=Pi0PiPi0=Pi0Pi1
市场组合收益率为
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=PM0PMPM0=PM0PM1
代入方程 ( 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ˉi1r=var(RM)cov(Ri,RM)(PM0PˉM1r)(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ˉM1r)PM021var(PM)Pi0PM01cov(Pi,PM)=1+r+(PM0PˉM1r)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可以计算出证券的理论价格,并以之为依据判断是否应该投资.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Quant0xff

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值