Capital Asset Pricing Model##
资本资产定价模型(Capital Asset Pricing Model,CAPM)由William Sharpe、John Lintner、Jack Treynor和Jan Mossin等人于1964年提出,与有效市场假说(Efficient Markets Hypothesis, EMH)共同成为现代金融学的两大基石。
CAPM模型主要用来研究证券市场中资产的预期收益率与风险资产之间的关系,股票的期望收益率可表示为:
式中,Ri代表该股票的期望收益率,Rf代表无风险利率,Rmkt代表市场预期收益率,Rmkt-Rf被称为市场风险溢价,β是风险系数。
- 无风险收益率Rf
通常将期限小于三个月的短期贴现国债视为无风险证券,在这期间市场利率波动对债券的影响很小,其收益基本是恒定的,所以可以认为是无风险的。 我国目前还没有三个月的国库券,因此无风险利率一般参照短期存款利率。
- 市场风险溢价Rmkt-Rf
投资者之所以选择投资股票而非银行存款,是因为股市的回报要高于银行。市场风险溢价就是用来衡量二者之间差值的工具。换言之,一旦市场风险溢价为负,那CAPM模型也就失去意义了。
- 风险系数β
β系数反映了单个证券与整体市场组合的联动性,用来衡量单个证券的风险。
β>1:股票收益与股指同向变化,且变化比股指快;
β=1:股票收益与股指同向变化,且变化速度相同;
0<β<1:股票收益与股指同向变化,且变化比股指慢;
β=0:无系统风险;
β<0:股票收益永远与股指反向变化。
下图中的斜线被称为证券市场线SML(Page 174, CFA_2017_Level_1_Schweser_Notes_Book_4),
对SML公式进行简单变换,即可推导出CAPM模型,如下图(Page 175, CFA_2017_Level_1_Schweser_Notes_Book_4),其中,M点为β系数为1的股票,它的期望收益率与市场预期收益率相等。
既然无风险收益率可以套用银行短期存款利率,市场预期收益率也可以通过历史数据得出,那现实中的风险系数β就可以使用标准回归方法推导。
特别需要注意的是,运用CAPM模型之前需要确保满足一系列的假设条件,相应地限制了该模型的实用性。
- 风险厌恶:Risk aversion. To accept a greater degree of risk, investors require a higher expected return.
- 效用最大化:Utility maximizing investors. Investors choose the portfolio, based on their individual preferences, with the risk and return combination that maximizes their (expected) utility.
- 无摩擦市场:Frictionless markets. There are no taxes, transaction costs, or other impediments to trading. One-period horizon. All investors have the same one-period time horizon.
- 投资者具有相同预期: Homogeneous expectations. All investors have the same expectations for assets’ expected returns, standard deviation of returns, and returns correlations between assets.
- 证券资产无限可分:Divisible assets. All investments are infinitely divisible.
- 竞争性市场:Competitive markets. Investors take the market price as given and no investor can influence
prices with their trades.
Linear Regression##
线性回归方程
描述因变量y 的平均值或期望值如何依赖于自变量x 的方程称为回归方程,简单线性回归方程的形式如下:
E( y ) = β0+ β1 x
- 方程的图示是一条直线,因此也称为直线回归方程
- β0是回归直线在 y 轴上的截距,是当 x=0 时 y 的期望值
- β1是直线的斜率,称为回归系数,表示当 x 每变动一个单位时,y 的平均变动值
总体回归参数β0和 β1是未知的,必须利用样本数据去估计,再用样本统计量代替回归方程中的未知参数,就得到了估计的回归方程。
根据最小二乘法,可求解如下:
回归方程的显著性检验
因变量 y 取值的波动称为变差,具体来源于两个方面:由于自变量x 的取值不同造成的;除 x 以外的其他因素(如x对y的非线性影响、测量误差等)的影响。
- 总平方和(SST):反映因变量的n 个观察值与其均值的总离差
- 回归平方和(SSR):反映自变量 x 的变化对因变量 y 取值变化的影响,或者说,是由于 x 与 y 之间的线性关系引
起的y 的取值变化,也称为可解释的平方和- 残差平方和(SSE):反映除 x 以外的其他因素对 y 取值的影响,也称为不可解释的平方和或剩余平方和
判定系数R-squared表示回归平方和SSR占总离差平方和SST的比例,反映回归直线的拟合程度,其取值范围在[ 0 , 1 ] 之间。R-squared →1,说明回归方程拟合的越好;R-squared→0 说明回归方程拟合的越差。
检验自变量和因变量之间的线性关系是否显著的具体方法是将回归离差平方和(SSR)同剩余离差平方和(SSE)加以比较,应用F检验来分析二者之间的差别是否显著
- 如果是显著的,两个变量之间存在线性关系
- 如果不显著,两个变量之间不存在线性关系
显著性检验的步骤
Step 1. 提出假设
H0:两个变量之间的线性关系不显著
Step 2. 计算检验统计量F
Step 3. 确定显著性水平α,并根据分子自由度df1=1和分母自由度df2=n-2查F分布表找出临界值Fα (可以借助Excel FINV函数计算)
Step 4. 作出决策:若F≥Fα,拒绝H0,表明两个变量之间的线性关系是显著地;若F
应用:
输入:Yahoo! Finance 2016全年NASDAQ指数(Rmkt)与美股BAIDU股价(Ri)
输出:线性回归及显著性检验结果
在Excel中,计算α=0.05,df1=1,df2=247时F分布取值
=FINV(0.05,1,247)=3.87
F-stat (1, 247): 140.3194>3.87,拒绝H0,BAIDU股价与NASDAQ指数之间存在显著线性关系
回归方程:
Ri=1.2819Rmkt-0.0009*
判定系数R-squared=0.3623说明回归直线拟合程度有限,x的变化只能解释部分y的变差。
x 1.281861
intercept -0.000855
dtype: float64
-------------------------Summary of Regression Analysis-------------------------
Formula: Y ~ +
Number of Observations: 249
Number of Degrees of Freedom: 2
R-squared: 0.3623
Adj R-squared: 0.3597
Rmse: 0.0172
F-stat (1, 247): 140.3194, p-value: 0.0000
Degrees of Freedom: model 1, resid 247
-----------------------Summary of Estimated Coefficients------------------------
Variable Coef Std Err t-stat p-value CI 2.5% CI 97.5%
--------------------------------------------------------------------------------
x 1.2819 0.1082 11.85 0.0000 1.0698 1.4940
intercept -0.0009 0.0011 -0.78 0.4341 -0.0030 0.0013
---------------------------------End of Summary---------------------------------
源代码:
# -*- coding: utf-8 -*-
"""
Created on Sat May 27 16:39:54 2017
@author: qiaovin
"""
import pandas as pd
import numpy as np
from Get_Yahoo_Quote import get_yahoo_multi_quotes
import matplotlib.pyplot as plt
begdate="2016-01-01 09:00:00" # beginning date
enddate="2016-12-31 09:00:00" # ending date
assets=['^IXIC','BIDU']
raw_data = get_yahoo_multi_quotes(assets,begdate,enddate)
#filter out null rows
data = raw_data[raw_data['^IXIC']!='null']
data['^IXIC'] = data['^IXIC'].astype(np.float64)
data['BIDU'] = data['BIDU'].astype(np.float64)
retx=data['^IXIC'].values
rety=data['BIDU'].values
x=((retx[1:]-retx[:-1])/retx[:-1])[1:]
y=((rety[1:]-rety[:-1])/rety[:-1])[1:]
noa = len(assets)
olsx = pd.DataFrame({'^IXIC':x})
olsy = pd.DataFrame({'BIDU':y})
olsdata=pd.merge(olsx,olsy,left_index=True,right_index=True)
model = pd.ols(y=olsdata['BIDU'],x=olsdata['^IXIC'])
print (model.beta)
print (model)
plt.plot(x, y, 'r.')
ax = plt.axis() # grab axis values
x = np.linspace(ax[0], ax[1] + 0.01)
plt.plot(x, model.beta[1] + model.beta[0] * x, 'b', lw=2)
plt.grid(True)
plt.axis('tight')
plt.xlabel('NASDAQ returns')
plt.ylabel('BIDU returns')
plt.show()
参考:
**Get_Yahoo_Quote定义参见Yahoo! Finance财经数据获取方法
http://www.jianshu.com/p/85d563d326a9
Python For Finance, Yan Yuxin, Packt Publishing Ltd.
CFA_2017_Level_1_Schweser_Notes_Book_4
统计学第四版,贾俊平,人大出版社
作者微信公众号