建立中国石化(600028)CAPM模型

财务的自我修养,微信公众号:机智出品(jizhjchupin)

一、系统环境:

Windows7+Python3.6+Jupyter Notebook

二、目标:

以近两年中国石化(600028)的收益率作为CAPM模型中的Ri,上证指数(000001)收益率作为Rm,计算中国石化Beta、Alpha值。2016年一年期国债利率为2.13%。

三、过程:

step 1:需要的库
import pandas as pd
import tushare as ts
import matplotlib.pyplot as plt
import statsmodels.api as sm
step 2:获取中国石化和上证指数数据并处理
#tushare获取市场数据
mktcd=ts.get_hist_data('sh',start='2015-10-01',end='2017-10-01')
mktret=pd.Series(mktcd.p_change.values,index=pd.to_datetime(mktcd.index))
mktret.name='mktret'
snp=ts.get_hist_data('600028',start='2015-10-01',end='2017-10-01')
snp.index=pd.to_datetime(snp.index)
snpret=pd.Series(snp.p_change.values,index=pd.to_datetime(snp.index))
snpret.name='snpret'
step 3:合并收益率并计算风险溢酬
ret=pd.merge(pd.DataFrame(mktret),
            pd.DataFrame(snpret),
            left_index=True,right_index=True,how='inner')
#计算无风险收益率
rf=1.0213**(1/360)-1
#计算股票超额收益率和市场风险溢酬
Eret=ret-rf
step 4:绘制两者收益率散点图
plt.scatter(Eret.values[:,0],Eret.values[:,1])
plt.title('SNP return and market return')
plt.show()
建立中国石化(600028)CAPM模型_第1张图片
SNP return and market return.png
step 4:拟合CAPM模型

OLS()函数进行拟合

model=sm.OLS(Eret.snpret[1:],sm.add_constant(Eret.mktret[1:]))
result=model.fit()
result.summary()

OLS Regression Results

Variable: snpret squared: 0.468
Model: OLS Adj. R-squared: 0.467
Method: Least Squares F-statistic: 427.8
Date: Mon, 02 Oct 2017 Prob (F-statistic): 1.22e-68
Time: 17:08:22 Log-Likelihood: -645.24
No. Observations: 488 AIC: 1294.
Df Residuals: 486 BIC: 1303.
Df Model: 1
No. Observations: 488
Df Residuals: 486
coef std err t P>|t| [0.025 0.975]
const 0.0295 0.041 0.715 0.475 -0.051 0.110
mktret 0.7018 0.034 20.684 0.000 0.635 0.768
Omnibus: 83.061 Durbin-Watson: 1.907
Prob(Omnibus): 0.000 Jarque-Bera (JB): 186.530
Skew: 0.897 Prob(JB): 3.13e-41
Kurtosis: 5.440 Cond. No. 1.22

四、结果:

根据OLS拟合结果,近两年中国石化与上证指数的关系为:
Ri-Rf=0.0295+0.7018(Rm-Rf)+ε
可根据该模型预估中国石化预期收益率。

机智出品.jpg

你可能感兴趣的:(建立中国石化(600028)CAPM模型)