Tushare ID:413121

需从Tushare注册后获取TOKEN编码,获取链接:https://tushare.pro/register?reg=413121

from datetime import datetime
import tushare as ts
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm
import scipy.stats as ss
#导入股票数据
tushare_token=''#输入从Tushare获取的TOKEN编码,注册后获取链接:https://tushare.pro/register?reg=413121
pro = ts.pro_api(tushare_token)
list=['601888.SH','300017.SZ','600519.SH','600196.SH','600172.SH','600111.SH','600036.SH','300001.SZ','002304.SZ','600999.SH']
df1=pd.DataFrame(columns=list)
for i in range(len(list)):df2 = pro.daily(ts_code=list[1], start_date='20100101', end_date='20211213')df2['日期']=''for b in range(len(df2)):df2['日期'][[b]]=datetime.strptime(df2['trade_date'].iloc[b],'%Y%m%d')df2=df2.sort_values(by='日期')df2=df2.set_index(['日期'])df1.iloc[:,i]=df2.iloc[:,5]
#导入沪深300数据
df2 = pd.read_excel(r"C:\Users\Administrator\Desktop\hs300_2010.xls")
#df2['交易日期']=''
#for b in range(len(df2)):
#    df2['日期'][[b]]=datetime.strptime(df2['交易日期'].iloc[b],'%Y-%m-%d')
df2=df2.set_index(['交易日期'])
df1=pd.concat([df1,df2.iloc[:,1]],axis=1)
df1=df1.rename(columns={'收盘指数':'hs300'})
#删去nan值
df1=df1.dropna()
#股票时间序列图
fig=plt.figure()
fig,axs=plt.subplots(constrained_layout=True)
ax1=plt.subplot(221)
ax1.plot(df1.index,df1[list[1]],label=list[1],color='b')
ax1.plot(df1.index,df1[list[3]],label=list[3],color='#FF8247')
ax1.plot(df1.index,df1[list[4]],label=list[4],color='#EE82EE')
ax1.plot(df1.index,df1[list[5]],label=list[5],color='#9ACD32')
ax1.plot(df1.index,df1[list[6]],label=list[6],color='#006400')
ax1.plot(df1.index,df1[list[7]],label=list[7],color='#1E90FF')
ax1.plot(df1.index,df1[list[9]],label=list[9],color='#9400D3')
ax1.set_ylabel('价格/元')
ax1.set_title('股票时间序列图')
ax1.legend(loc='best',bbox_to_anchor=(0.5,-0.2),ncol=2)
plt.yticks(rotation=90)
plt.xticks(rotation=45)
ax1.grid(True,axis='both')
ax2=plt.subplot(222)
ax2.plot(df1.index,df1[list[2]],label=list[2],color='y')
ax2.set_ylabel('价格/元')
ax2.set_title('股票时间序列图')
ax2.legend(loc='best',bbox_to_anchor=(0.5,-0.2),ncol=2)
plt.yticks(rotation=90)
plt.xticks(rotation=45)
ax2.grid(True,axis='both')
ax3=plt.subplot(223)
ax3.plot(df1.index,df1[list[0]],label=list[0],color='g')
ax3.plot(df1.index,df1[list[8]],label=list[8],color='#FF1493')
ax3.set_ylabel('价格/元')
ax3.set_title('股票时间序列图')
ax3.legend(loc='best',bbox_to_anchor=(0.5,-0.2),ncol=2)
plt.yticks(rotation=90)
plt.xticks(rotation=45)
ax3.grid(True,axis='both')
ax4=plt.subplot(224)
ax4.plot(df1.index,df1['hs300'],label='hs300',color='#A9A9A9')
ax4.set_ylabel('hs300')
ax4.set_title('沪深300时间序列图')
plt.yticks(rotation=90)
plt.xticks(rotation=45)
ax4.legend(loc='best')
ax4.grid(True,axis='both')
#计算股票贝塔值
R_index=np.log(df1['hs300']/df1['hs300'].shift(1))
R_index=R_index.dropna()
R_index.describe()
R_index_addcons=sm.add_constant(R_index)
R_index_addcons=R_index_addcons.dropna()
n=pd.DataFrame(columns=list)
for i in range(len(list)):Endog=np.log(df1.iloc[:,i]/df1.iloc[:,i].shift(1))Endog=Endog.dropna()model=sm.OLS(endog=Endog,exog=R_index_addcons)result=model.fit()result.summary()n.iloc[:,i]=result.params
#验证资本资产定价模型
import scipy.optimize as sco
R=np.log(df1.iloc[:,:-1]/df1.iloc[:,:-1].shift(1))
R=R.dropna()
R_mean=R.mean()*252
R_cov=R.cov()*252
Rp_list=[]
Vp_list=[]
for i in range(1000):x=np.random.random(10)weights=x/sum(x)Rp_list.append(np.sum(weights*R_mean))Vp_list.append(np.sqrt(np.dot(weights,np.dot(R_cov,weights.T))))
R_port=np.sum(weights*R_mean)def f(w):w=np.array(w)Rp_opt=np.sum(w*R_mean)Vp_opt=np.sqrt(np.dot(w,np.dot(R_cov,w.T)))return np.array([Rp_opt,Vp_opt])def Vmin_f(w):return f(w)[1]cons_vmin=({'type':'eq','fun':lambda x: np.sum(x)-1})
bnds=tuple((0,1) for x in range(len(R_mean)))
result_vmin=sco.minimize(Vmin_f,len(R_mean)*[1.0/len(R_mean),],method='SLSQP',bounds=bnds,constraints=cons_vmin)
Rp_vmin=np.sum(R_mean*result_vmin['x'])
Vp_vmin=result_vmin['fun']
Rp_target=np.linspace(Rp_vmin,0.24,200)
Vp_target=[]
for r in Rp_target:cons_new=({'type':'eq','fun':lambda x:np.sum(x)-1},{'type':'eq','fun':lambda x: f(x)[0]-r})result_new=sco.minimize(Vmin_f,len(R_mean)*[1.0/len(R_mean),],method='SLSQP',bounds=bnds,constraints=cons_new)Vp_target.append(result_new['fun'])#绘投资组合的资本市场线
def F(w):Rf=0.02w=np.array(w)Rp_opt=np.sum(w*R_mean)Vp_opt=np.sqrt(np.dot(w,np.dot(R_cov,w.T)))SR=(Rp_opt-Rf)/Vp_optreturn np.array([Rp_opt,Vp_opt,SR])def SRmin_F(w):return -F(w)[2]cons_SR=({'type':'eq','fun':lambda x: np.sum(x)-1})
result_SR=sco.minimize(SRmin_F,len(R_mean)*[1.0/len(R_mean),],method='SLSQP',bounds=bnds,constraints=cons_SR)Rf=0.02
slope=-result_SR['fun']
Rm=np.sum(R_mean*result_SR['x'])
Vm=(Rm-Rf)/slopeRp_cml=np.linspace(0.02,0.25)
Vp_cml=(Rp_cml-Rf)/slope#绘图
plt.figure()
plt.scatter(Vp_list,Rp_list)
plt.plot(Vp_target,Rp_target,'r-',label=u'有效前沿',lw=2.5)
plt.plot(Vp_cml,Rp_cml,'b--',label=u'资本市场线',lw=2.5)
plt.plot(Vm,Rm,'g*',label=u'市场组合',markersize=14)
plt.plot(Vp_vmin,Rp_vmin,'y*',label=u'全局最小波动率',markersize=14)
plt.xlabel(u'波动率',fontsize=13)
plt.ylabel(u'收益率',fontsize=13,rotation=90)
plt.xticks(fontsize=13)
plt.yticks(fontsize=13)
plt.legend(loc='best')
plt.title(u'投资组合理论的可视化',fontsize=13)
plt.grid(True)
plt.show()
SR_port=pd.DataFrame(columns=['股票','权重','beta'])
SR_port['股票']=list
SR_port['权重']=result_SR['x']
for i in range(len(SR_port)):SR_port['beta'][[i]]=n.iloc[1,i]
#计算组合的系统风险
beta_M=np.sum(SR_port['beta']*SR_port['权重'])
print(SR_port,'最优投资组合的系统风险为:{:.3f}'.format(beta_M))
#beta_M=0.81,符合条件

金融数据——资本资产定价模型的检验、系统风险、贝塔值β的计算相关推荐

  1. R语言计算资本资产定价模型(CAPM)中的Beta值和可视化

    原文链接:http://tecdat.cn/?p=22588 今天我们将计算投资组合收益的CAPM贝塔.这需要拟合一个线性模型,得到可视化,从资产收益的角度考虑我们的结果的意义. 简单的背景介绍,资本 ...

  2. 用 Python 实现资本资产定价模型

    在本文中,我们将学习如何计算资本资产定价模型 (CAPM) 并获得贝塔系数.资本资产定价模型(Capital Asset Pricing Model 简称CAPM)是由美国学者于1964年在资产组合理 ...

  3. 金融经济学(王江)期末梳理 第十三章 资本资产定价模型(CAPM)

    资本资产定价模型 Introduction 13.1 证券市场均衡 13.1.1 市场组合 13.1.2 证券市场总需求 13.1.3 市场均衡:市场出清 13.2 资本资产定价模型 13.2.1 存 ...

  4. 投资学U09 资本资产定价模型 习题笔记

    根据博迪投资学第九版课后习题完成的系列.每道题都有完整的步骤,附上推理过程和错误答案批驳,以辅助理解.市面上的笔记和视频都太乱,希望这份笔记能以数理严谨性帮到大家. 中英文习题都是一样的,部分数据中文 ...

  5. 资本资产定价模型简介-多因子寻找Alpha统计套利

    今天简单分享一下现在最为流行的两种量化方法,和量化方法本身需要注意的问题.资本资产定价模型将投资组合的期望收益由两部分组成:alpha收益为投资组合超越市场基准的收益,beta收益为投资组合承担市场系 ...

  6. Alpha选股:资本资产定价模型(CAPM)

    一.Alpha 选股策略 Alpha 选股策略是指识别出一定时期内具有超额收益(Alpha)的股票,并进行相应操作的行为.换言之,我们在市场上总是希望能够找到具有正的超额收益率的股票并进行投资,这种选 ...

  7. (二十四)资本资产定价模型

    系统性风险与非系统性风险   假设有一资产在可行集内,坐标为(σ1,r1),我们知道CML的方程为E(RP) = Rf + [(E(RM) - Rf) / σM] × σP,将r1代入E(RP) 可得 ...

  8. CAPM 资本资产定价模型

    目录 基本术语. 有效前沿. 资本配置线. 资本市场线. CAPM 模型. 基本术语. 最小方差前沿:整条曲线. 全球最小方差组合:曲线最左点. 有效前沿:曲线上半部分. 有效前沿. 特点:在相同的收 ...

  9. R语言解读资本资产定价模型CAPM

    用IT技术玩金融系列文章,将介绍如何使用IT技术,处理金融大数据.在互联网混迹多年,已经熟练掌握一些IT技术.单纯地在互联网做开发,总觉得使劲的方式不对.要想靠技术养活自己,就要把技术变现.通过&qu ...

最新文章

  1. 【ACM】杭电OJ 1004
  2. 斯坦福大学深度学习与自然语言处理第二讲:词向量
  3. Effectice Java之始终覆盖toString(十)
  4. 9.03-Springboot要点记录
  5. 星座图(2020特长生 T4)
  6. leetcode 有效的数独
  7. 构建之法:1、2、3章阅读后感
  8. php zblog 侧边栏样式_免费ZBLOG双栏图文自媒体主题 支持自定义侧边模块
  9. cocos2d-xandroid返回键菜单键
  10. 【计算机网络笔记】数据链路层:点对点协议PPP
  11. 查询数据表里所有重复里的单条记录
  12. matlab xls转csv,使用python或Matlab将csv文件中的数据转换为csv文件
  13. 用java编写宠物店管理系统_基于jsp的宠物店管理系统-JavaEE实现宠物店管理系统 - java项目源码...
  14. 【Steam】各种Steam致命错误-Steam需要在线进行更新什么意思。请确保你的网络连接正常,请重试。
  15. 三维重建:特征检测+匹配+RT恢复+稠密重建方法
  16. L1-017 到底有多二 (15 分) C语言
  17. unity渲染篇:画面亮度、饱和度、对比度调整
  18. emwin自定义字库
  19. java画哆啦A梦_java如何绘制哆啦A梦 java绘制哆啦A梦代码示例
  20. Python爬虫实战示例-51job和豆瓣电影

热门文章

  1. 冰雪复古鸿蒙碎片哪里爆,冰雪复古:传奇老玩家都在找,能打金爆率高
  2. 动态规划 漫画 台阶 算法
  3. 好用的游戏机械键盘推荐什么?HyperX起源60键盘实力出圈
  4. 第16周-啤酒和饮料
  5. 八字精批算命(PHP和JAVA版)
  6. 【机器学习】岭回归和LASSO回归详解以及相关计算实例-加利福尼亚的房价数据集、红酒数据集
  7. 有没有好看好用的电脑便签可以推荐一下?
  8. JAVA 很简单的字符串数据公式代入计算
  9. 【小强推歌】---音乐从今天开始
  10. Python3之稀松平常步骤0.0