2023年 3月 19日

【金融】【python】CAPM实证分析

CAPM模型实证分析

  • CAPM模型

代码用于 financial asset pricing 课程,三因子模型可见其他博文。

CAPM模型

主要参考了这篇博客https://blog.csdn.net/weixin_42152885/article/details/80239226

#载入股指数据
import tushare as ts
mydf_sz = ts.get_hist_data('sz',start='2005-01-01',end='2019-5-7')
mydf_sh = ts.get_hist_data('sh',start='2005-01-01',end='2019-5-7')

mydf_sh_md = ts.get_hist_data('000002',start='2005-01-01',end='2019-5-7')
mydf_sh_md.head()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

import pandas as pd
sh_md_merge = pd.merge(pd.DataFrame(mydf_sh.p_change),
                       pd.DataFrame(mydf_sh_md.p_change),
                       left_index=True,right_index=True,how='inner')

#计算日无风险利率
Rf_annual=0.0385  #以2017年中国一年期的国债利率为无风险利率
Rf_daily=(1+Rf_annual)**(1/365)-1  #年利率转化为日利率
 
#计算风险溢价:Ri-Rf
risk_premium=sh_md_merge-Rf_daily;
risk_premium.head()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
#画出两个风险溢价的散点图,查看相关性
import matplotlib.pyplot as plt
%matplotlib inline
%config InlineBackend.figure_format = 'svg'

plt.scatter(risk_premium.values[:,0],risk_premium.values[:,1])
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述

sh_md_merge.info()
  • 1

在这里插入图片描述

##利用最小二乘法进行线性回归,拟合CAPM模型
import statsmodels.api as sm
md_capm=sm.OLS(risk_premium.p_change_y[1:],sm.add_constant(risk_premium.p_change_x[1:]))
result=md_capm.fit()
print(result.summary())
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

# plt.title('wanke')
plt.plot(mydf_sh_md.index.get_level_values(0).values[1:], risk_premium.p_change_y[1:])
plt.plot(mydf_sh_md.index.get_level_values(0).values[1:], risk_premium.p_change_x[1:])
# plt.legend(['wanke','Rp','SML'])
plt.show()

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述