建立中國石化(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()
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

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容