上海证券综合指数简称“上证指数”或“上证综指”,其样本股是在上海证券交易所全部上市股票,包括A股和B股,反映了上海证券交易所上市股票价格的变动情况,自1991年7月15日起正式发布。
深证指数是指由深圳证券交易所编制的股价指数,该股票指数的计算方法基本与上证指数相同,其样本为所有在深圳证券交易所挂牌上市的股票,权数为股票的总股本。由于以所有挂牌的上市公司为样本,其代表性非常广泛,是股民和证券从业人员研判深圳股市股票价格变化趋势必不可少的参考依据。
本文主要对上证指数和深证指数的走势相关性进行研究。
相关性识别
下图为2018年1月到2019年5月深证指数与上证指数的趋势情况。两者走势非常类似
我们以每天较前一天的涨跌变化为对象进行统计,得到如下的涨跌曲线图。
因为数据较多不容易分析,我们截取最近三个月的变化情况,如下图。可以发现,深证指数和上证指数在涨跌变化上也非常相似。
相关性度量
我们使用相关图和相关系数来进行相关性的度量。相关图是发现变量之间相关程度和相关形态的有效工具,它为测定相关关系奠定有效基础。相关系数是最早由统计学家卡尔·皮尔逊设计的统计指标,是研究变量之间线性相关程度的量。比如下图就是几种简单的相关关系。
我们将2018年1月到2019年5月上证指数和深证指数的变化情况形成相关图。
从相关图来看,深证指数和上证指数之间存在正相关关系。图中的最高点代表上证和深证指数的最大涨幅(发生在2019年2月25日,上证指数涨5.6%,深证指数涨5.59%)。
我们使用相关系数进行度量,得到两者的相关系数值:0.9369。根据与下图对照,我们可以确定深证指数与上证指数存在强正相关关系。
使用线性回归策略,可以得到最佳拟合直线和回归系数。
回归系数=
[[0.0036755 ]
[0.75722668]]
误差=72.03440239535223
示例代码
相关系数计算与散点图绘制
#获得指数数据
线性回归以及拟合直线绘制
ws=reg.standRegres(dataMat,data['shprice'])
#计算误差,偏差平方和
xMat=mat(dataMat)
yMat=mat(labelMat)
yHat=xMat*ws# 深证指数矩阵*回归系数矩阵就可以得到预测矩阵
#根据深证指数,计算预测的上证指数值,绘制回归曲线
ax=base.plotscatterGraph(data['szprice'],data['shprice'],'深证指数','上证指数',False)
ax.plot(xMat[:,1],yHat)
plt.show()
print('回归系数=n %s'%ws)
rsserr01=reg.rssError(yMat,yHat.T)
print('误差=%s'%rsserr01)
线性回归标准函数
#标准回归函数,计算最佳拟合曲线
def standRegres(xArr,yArr):
#矩阵.T是对矩阵进行转置
xMat = mat(xArr); yMat = mat(yArr).T
xTx = xMat.T*xMat# X转置*X
#判断是否有行列式为0,linalg为线性代数库
if linalg.det(xTx) == 0.0:
print("This matrix is singular, cannot do inverse")
return
#.I矩阵求逆 WS为回归系数,Y的预测值计算方式为 ws[0]+ws[1]X1
ws = xTx.I * (xMat.T*yMat)
return ws