分析上证综指和恒生指数的相关性和波动性-R

变量:恒生指数(HSI),上证综指(SSEN)

开始日期:2000年12月6日

结束日期:2019年4月1日

样本容量:4087

缺失值处理:直接去除

 

老师要求从底层写起。有了一系列愚蠢的轮子。。当然我的代码也不可能不愚蠢了。。

事件窗口后面分析还会再加。

 

library(ggplot2)

#数据读取和处理
DataProcess<-function()
{
  indexes<-read.csv('num3.csv',head=T,stringsAsFactors = F)
  names(indexes)<-c("date","Sclose","Hclose")
  indexes$date<-as.Date(indexes$date,"%Y/%m/%d")
  indexes$Hclose<-as.numeric(indexes$Hclose)
  indexes$Sclose<-as.numeric(indexes$Sclose)
  indexes<-indexes[complete.cases(indexes),]
  indexes<-indexes[order(indexes$date),]
  rnum<-lengths(indexes[1])
  indexes$Hreturn<-c(NA,log(Hclose[2:rnum]/Hclose[1:rnum-1])*100)
  indexes$Sreturn<-c(NA,log(Sclose[2:rnum]/Sclose[1:rnum-1])*100)
  indexes<-indexes[-1,]
  return(indexes)
}

#计算平均数
Mean<-function(coll)
{
  result<-0
  for(i in 1:length(coll))
  {
      result<-result+coll[i]
  }
  result<-result/length(coll)
  return(as.numeric(result))
}

#计算方差
Variance<-function(coll)
{
  x<-Mean(coll)
  result<-0
  for(i in 1:length(coll))
  {
      result<-result+(coll[i]-x)^2
  }
  result<-result/length(coll)
  return(as.numeric(result))
}

#计算标准差.n=1,计算总体标准差;n=2,样本标准差估算总体标准差
Std<-function(coll,n)
{
  x<-Mean(coll)
  result<-0
  for(i in 1:length(coll))
  {
    result<-result+(coll[i]-x)^2
  }
  if(n==1) result<-result/length(coll)
  else result<-result/(length(coll)-1)
  return(as.numeric(sqrt(result)))
}

#计算协方差
Covariance<-function(col1,col2)
{
  if(length(col1)!=length(col2))
    print("两列个数不同,请重新选择数据")
  else{  
    a<-Mean(col1*col2)
    b<-Mean(col1)*Mean(col2)
  }
  return(a-b)
}

#计算皮尔逊相关系数
Correlation<-function(col1,col2){
  x<-Variance(col1)
  y<-Variance(col2)
  z<-Covariance(col1,col2)
  result<-z/sqrt(x*y)
  return(result)
}

#拆分区间:输入开始日期和结束日期并计算相关系数(格式:yyyy/mm/dd)
PartSummary<-function(start,end)
{
  col<-indexes[which(indexes$date<end&indexes$date>start),][c(1,4,5)]
  corr<-Correlation(col$Hreturn,col$Sreturn)
  for(i in 2:3)
  {
    a<-as.vector(unlist(col[i]))
    m<-Mean(a)
    v<-Variance(a)
    s<-Std(a,1)
    x<-c(m,v,s)
    print(colnames(col[i]))
    print(x)
  }
  print('Correlation:')
  print(corr)
}

#滚动区间法计算相关系数并输出最大值。区间长度为n
MaxCorr<-function(n)
{
  a<-0
  c<-19-n
  for(i in 1:c)
  {
    s<-DateGenerate(i)
    e<-DateGenerate(i+n)
    b<-PartSummary2(s,e)
    if(b>a)
    {
      a<-b
      outs<-s
      oute<-e
    }
  }
  print(paste("在区间",outs,"和",oute,"内,港股和沪股的相关性最大,为",a,sep=''))
}

DateGenerate<-function(t)
{
  if(t>=10)
    s<-paste('20',t,'/12/05',sep='')
  else
    s<-paste('200',t,'/12/05',sep='')
  return(s)
}

PartSummary2<-function(start,end)  #对上面PartSummary函数进行了修改。返回相关系数。
{
  col<-indexes[which(indexes$date<end&indexes$date>start),][c(1,4,5)]
  corr<-Correlation(col$Hreturn,col$Sreturn)
  return(corr)
}

#寻找最合适区间
OptimalBlock<-function(){
  a<-MaxCorr(1)
  for(i in 2:10)
  {
    if(MaxCorr(i)>a)
    {
      a<-MaxCorr(i)
      p<-i
    }
  }
  print(paste("在以",p,"作为区间的时候相关系数最大"))
}

 

  1. 收益率描述统计

 

HSI   (%)

SSEN   (%)

平均数

0.02272439

0.01314573

方差

2.088227

2.674102

标准差1

1.44507

1.635268

标准差2

1.445247

1.635468

协方差

1.038301

相关系数

0.4393853

 

 

图 1恒生指数收益率

 

 

 

图 2上证指数收益率

 

  1. 相关系数

PartSummarty函数可以计算选定区间内,HSI 和SSEN 回报的平均数、标准差、方差(从左到右)和相关系数。此处按五年的区间计算,最后一个区间年份不足。

PartSummary('2001/12/05','2006/12/05')
"Hreturn"
0.04042275 1.08589748 1.04206405
"Sreturn"
0.01836785 1.84165240 1.35707494
"Correlation:"
0.115773



PartSummary('2006/12/05','2011/12/05')
 "Hreturn"
 0.0004249349 4.3620101976 2.0885426013
 "Sreturn"
 0.006937843 4.310005787 2.076055343
 "Correlation:"
 0.5039478

 
PartSummary('2011/12/05','2016/12/05')
"Hreturn"
0.0138097 1.2544832 1.1200371
"Sreturn"
0.01597039 2.54077735 1.59398160
"Correlation:"
0.5022046


PartSummary('2016/12/05','2019/12/05')
"Hreturn"
0.049587 1.072461 1.035597
"Sreturn"
0.01157943 1.18819815 1.09004502
"Correlation:"
0.6325133

 

整体来看,上证综指波动性高于恒生指数,2000年开局和16年至今,港股回报都高于内地。而在金融危机期间,港股受影响显然高于内地,平均回报比内地低了一个量级。二者相关系数有升高趋势,尝试使用滚动区间法,计算最大相关系数。

 
MaxCorr(1)
[1] "在区间2017/12/05和2018/12/05内,港股和沪股的相关性最大,为0.69564142460877"
 
MaxCorr(3)
"在区间2016/12/05和2019/12/05内,港股和沪股的相关性最大,为0.6325132940365"

 

MaxCorr(5)
"在区间2009/12/05和2014/12/05内,港股和沪股的相关性最大,为0.556603829359562"

 

MaxCorr(10)
"在区间2009/12/05和2019/12/05内,港股和沪股的相关性最大,为0.530855166218141"

 

OptimalBlock()
"在以 2 作为区间的时候相关系数最大"
0.6819477
2017/12/05和2019/12/05

 

随着时间推移,港股和沪股相关系数在升高。当以2为区间时,两股票相关系数最大。时间区间为17年至今(实际上不到两年),符合先验预期。

不断提高的相关系数反映出我国股市近年来的发展。2014年4月10日,“沪港通”试点启动;2014年11月17日,港股通正式开启。沪港通拓展了境外资金投资我国证券市场的途径;另一方面接通了国内外资本市场互相通融的桥梁,促进人民币国际化。研究指出,2007年以前,沪港两地股市指数不存在长期均衡,短期走势也是相互独立的。但随着我国资本市场的开放,内地和香港股市联动性加强,关系变得密切。

我们可以发现,股市之间联动性的加强是在加速的。从2010年至今和2014年沪港通开启之后的收益率相关系数和波动性看来,内地股市与香港较为成熟的股市仍有较大差距。上证综指波动率一直高于恒生指数,说明内地股市相比港股不够稳定。相关系数始终在0.53左右,对比数据发现,沪港通开启之后,两股市的相关系数在区间内没有明显变化。然而17年底以来,相关系数有所提高,说明我国股市水平仍在不断提高。

当然,本文仅以相关性和波动性作为分析联动性的依据是远远不够的,希望日后学习更多知识,做出更有价值的分析。

 

表格 1“沪港通”开通的影响

 

上证综指回报波动性

恒生指数回报波动性

相关系数

2010/01/01至今

1.428985

1.158455

0.5310362

2010/01/01至2014/11/07

1.179652

1.156674

0.5585115

2014/11/07至今

1.662633

1.160324

0.5231219

 

最后,观察了沪港通开通前后15工作日左右的收益率变化。可以发现,沪港通发布期间,收益率处于较低位置,后期出现一定震荡。港股受到影响更大。

 

 

图 3上证综指“沪港通”开通前后收益率

图 4恒生指数“沪港通”开通前后收益率

 

 

 

 

 

 

  1. 参考文献

[1]张昭,李安渝,秦良娟.沪港通对沪港股市联动性的影响[J].金融教学与研究,2014(06):59-62+71.

[2]李艳萍.探析沪港通对人民币国际化化进程的推动作用[J].中国经贸,2014(10);151.

[3]范致镇.沪港股市的联动关系研究[J].兰州商学院学报,2010,26(4);35-40.

 

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值