变量:恒生指数(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,"作为区间的时候相关系数最大"))
}
- 收益率描述统计
| 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上证指数收益率
- 相关系数
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]张昭,李安渝,秦良娟.沪港通对沪港股市联动性的影响[J].金融教学与研究,2014(06):59-62+71.
[2]李艳萍.探析沪港通对人民币国际化化进程的推动作用[J].中国经贸,2014(10);151.
[3]范致镇.沪港股市的联动关系研究[J].兰州商学院学报,2010,26(4);35-40.