贝塔值(beta)的线性回归方法实践
Contents
贝塔值(beta)的线性回归方法实践#
前言#
在巴菲特都不用beta值,你还用?!中介绍了多种beta值的计算方法,但这些计算方法还是比较偏向于理论而非实际应用。 本文将利用Python和Tushare的股票日线数据来计算线性回归的贝塔值(beta)。 因为这里涉及到Python编程工具的使用,在运行使用的过程中需要一些编程的基础。
线性回归(Linear Regression)#
首先,我们先来分析一下公式的组成部分。贝塔值(beta)等于大市和股票之间的协方差除以大市的方差。 那格力电器(000651)和上证指数(000001)为例:
我们首先调用Tushare的API 获取股票数据;
再通过python计算出其股票价格每日的百分比变化;
利用python中的numpy库计算协方差和方差值;
最后计算贝塔值(beta)。
计算日线数据百分比变化#
#用for循环提取股票、大盘的收盘价格并转换为dataframe的形式
price = pd.DataFrame({tic: data['close']
for tic, data in all_data.items()})
#计算股票价格每日变化
returns = price.pct_change()[1:]
到目前为止,我们已经成功获取了个股和大盘的每日收盘价格并计算其百分比。
计算协方差和方差值#
import numpy as np
m = returns['000001.SH'] #指数数据
s = returns['000651.SZ'] #个股数据
covariance = np.cov(s,m)[0][1] # 计算两者的协方差
variance = np.var(m) # 计算指数的方差
计算贝塔值(beta)#
beta = covariance / variance
print(beta)
完整代码#
import tushare as ts
import pandas as pd
import numpy as np
pro = ts.pro_api('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx') #这里需要填写你注册好的Tushare的TOKEN凭证
all_data = {}
all_data['000001'] = pro.index_daily(ts_code='000001.SH', start_date='20140101', end_date='20190110')
all_data['000651'] = pro.daily(ts_code='000651.SZ', start_date='20140101', end_date='20190110')
price = pd.DataFrame({tic: data['close']
for tic, data in all_data.items()})
returns = price.pct_change()[1:]
m = returns['000001'] #指数数据
s = returns['000651'] #个股数据
covariance = np.cov(s,m)[0][1] # 计算两者的协方差
variance = np.var(m) # 计算指数的方差
beta = covariance / variance
print('beta值为:',beta)
结果#
上图为最终的运行效果,我们通过线性回归的方法得出贝塔值(beta)为1.1075675