(二)python金融数据分析--β求解

2.股票的系统性风险β

在这里插入图片描述
(1)单只股票的收益率

A:简单收益率
计算逻辑=(当期价格-上期价格)/上期价格,获取的数据由上之下开始计算,所以第一个数据一般都为NAN

df2=df1['close'].pct_change()
df2.plot()

B:对数收益率

df1['return']=np.log(df1['close']/df1['close'].shift(1))
df1['return']
tjg1[['return','close']].plot(subplots=True,style='b',figsize=(12,5))

在这里插入图片描述
*tjg1是调整过index的正常时间顺序t横轴正常走势;
.
.
(2)协方差&方差&相关系数

np.var()
df.var()
#只是numpy中计算的是样本的总体方差,而excel中计算的是样本方差,所以不一样。
#其实Excel中也有计算样本总体方差的函数-----varp () 
#也就是说varp和numpy.var()是一样的。

(3)实际案例(分析上证指数和单只股票的β值)
方法一:
One 数据包导入:

import tushare as ts
import pandas as pd
import numpy as np
import scipy.stats
#可视化
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

Two获取股票数据:

tjg=ts.get_hist_data('600848',start='2019-10-05',end='2020-03-20')
szzs=ts.get_hist_data('sh000001',start='2019-10-05',end='2020-03-20')

Three 调整获取排序方式:
(这里需要调整是因为pct的计算逻辑,所以这里需要设置下)

#**默认按照升序**,如果需要降序就设ascending=False
tjg1=tjg.sort_index() 
szzs1=szzs.sort_index() 

Four 获取简单收益率

tjg2=tjg1['close'].pct_change()
szzs2=szzs1['close'].pct_change()

Five 合并表格(也可以不合并,好看而已)

q=pd.merge(tjg2,szzs2,on='date')
s

Six 删除NAN,不然会导致结果错误或者出不来

df1 =q.dropna(axis=0,how='all')
df1

在这里插入图片描述

covxy=np.cov(df1['close_x'],df1["close_y"])
varx=np.var(df1['close_y'])

在这里插入图片描述
注释:第一个数据为cov(单支股票,上证指数);
第二个数据为上证指数的方差;

方法二:根据数据性质,更加便捷
在这里插入图片描述
#注释:
以上求解收益率都是不需要的,不过是一个逻辑过程保证会算;
因为在数据初始获取的时候就可以有移动日收益率的数据
可以选择直接调用

covxy1=np.cov(tjg1["p_change"],szzs1['p_change'])

结果也是差不多一样的,不过相对这样的数据更加具有说服力,因为这样的所有数据都有结果,不会存在NAN的数值;
在这里插入图片描述

β=0.9894576971357825

表示:“股票β值表示投资组合对系统风险的敏感程度:β值为1,表示指数变化时,股票价格会以相同的百分率变化;β值为1.8时,表示指数发生1%的变动,股票价格会呈现1.8%的变动;β值为值0.5时,表示指数发生1%的变动,股票价格会呈现0.5%的变动。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值