请选择 进入手机版 | 继续访问电脑版
楼主: dxll8888
1480 0

[数据挖掘理论与案例] 入门实例 [推广有奖]

  • 0关注
  • 0粉丝

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1160 点
帖子
2
精华
0
在线时间
21 小时
注册时间
2014-12-20
最后登录
2017-5-10

dxll8888 发表于 2016-12-16 15:51:02 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

R语言实现:基于GARCH模型的股市危机预警

包载入与数据预处理:

1.     #包载入  

2.     library(fGarch)  

3.     library(rugarch)#garch拟合与预测  

4.     library(TSA)#BIC准则确定arma阶数  eacf确定garch阶数  

5.     library(tseries)  

6.     library(zoo)#转换成时间序列类型  

7.     library(forecast)#auto.arima() arma阶数确定方法  

8.     library(psych)#数据描述统计分析  

9.     library(ggplot2)#绘图  

10.  library(ccgarch)#JB统计量  

11.  ###NASDAQ  

12.  #数据预处理  

13.  StockData<-read.csv("D:\\rwork\\课程设计\\SHANGZHENG1992-2015.csv",encoding='utf-8',header = T)  #header = Falese   

14.  time<-as.Date(StockData$'time',format="%Y/%m/%d")  

15.  closeprice<-StockData$'closeprice'  

16.  data<-zoo(closeprice,time)  

17.  #选中局部数据  

18.  selectdata=window(data, start = as.Date("2005-01-01"), end = as.Date("2015-05-01"))  

19.  plot(selectdata,xlab="time",ylab="index",main="Shanghai Composite Index")  

20.  rlog=log(selectdata)  

21.  rlogdiff=diff(log(selectdata))*100 #数据转换  

22.  rlogdifftime=index(rlogdiff)  

23.  rlogdiffdata=coredata(rlogdiff)  

数据描述与模型匹配检验

(1)正态性检验


  • par(mfrow=c(1,3),oma=c(0.2,0.2,0.2,0.2))  
  • hist(rlogdiff,main="Shanghai Composite Index Log Return Distribution",col="yellow",xlab="",ylim=c(0,0.4),probability=T)  
  • lines(density(rlogdiff),lwd=1);rug(rlogdiff)#first graph  
  • qqnorm(rlogdiff);qqline(rlogdiff)#second graph  
  • plot(rlogdiff,ylab="value");abline(h=0,lty=2)#third graph

分布为数据分布函数,QQ图,对数收益率序列折现图。



收益率分布图、QQ图可以看出金融时间序列确实表现出尖峰厚尾性,相对于标准正态分布,峰度更高,两段的尾部更厚,也就是极值更多。由收益率波动序列可以看出各国股票指数收益率序列在样本区间内均表现出一定的波动性和聚集性,其中2008-2009年波动幅度尤为明显。

同时也可以用统计量检验正态性


  • shapiro.test(rlogdiffdata)

#值越大,越表示不是正态,P越小越非正态  

其他数据描述:


  • describe(rlogdiffdata)  
  • jb.test(rlogdiffdata)  

2)平稳性检验


  • # ADF  p<0.0  认为序列是均值回归的  
  • adf.test(rlog,alt="stationary")

#注意  这是未差分的数据  


  • adf.test(rlogdiffdata,alt="stationary"

#这是差分后的数据  

p<0.01序列为平稳序列

3ARCH 效应检验


  • #得先arima拟合模型,对残差进行LM检验  
  • armamodel=auto.arima(rlogdiff)

#自动基于AIC最小准则,寻找最佳拟合模型  


  • armamodel  
  • plot(residuals(armamodel))  
  • par(mfrow=c(1,1))  
  • lmresult=McLeod.Li.test(y=residuals(armamodel))

#残差arch效应很显著  

由图可知,残差序列滞后36阶后,残差自回归函数的系数显著,序列仍然存在自相关。因此 拒绝原假设,说明样本序列存在显著的ARCH效应。
综上,对数收益率序列具有波动聚集性,序列平稳,有显著ARCH效应。序列时候GARCH模型建模。

模型拟合

分别使用SGARCH与EGARCH模型拟合序列,SGARCH拟合效果更合适。但是EGARCH能分析收益率序列的“杠杆效应”此处以EGARCH做演示


  • myspec=ugarchspec(  
  •   variance.model = list(model = "eGARCH", garchOrder = c(1, 1)),  
  •   mean.model = list(armaOrder = c(0,0), include.mean = TRUE),  
  •   distribution.model = "std"  
  • )  
  •   
  • myfit=ugarchfit(myspec,data=rlogdiff,solver="gosolnp")  
  • myfit  

模型诊断


  • #残差正态性检验  
  • plot(myfit,which=8)  
  • plot(myfit,which=9)  
  • shapiro.test(coredata(residuals(myfit)))

#值越大,越表示不是正态,P越小越非正态  


  • #残差相关性检验  
  • acf(coredata(residuals(myfit)))  
  • acf(residuals(myfit))  
  • plot(myfit,which=10)  
  • plot(myfit,which=11)  
  • #系数是否显著  
  • myfit #P值是否够小  
  • #拟合效果  残差如何  
  • plot(myfit,which=3)  
  • plot(residuals(myfit)) #看残差  
         
    插曲:

各国收益率信息冲击曲线


  • plot(myfit,which=12)  

从上图可以看出,美国、德国、日本股票指数收益率在信息冲击小于零(即利空消息或负冲击)时比较陡峭,而在信息冲击大于零(即利好消息或正冲击时)则比较平缓。而上证综指在利空利好消息时曲线均走势陡峭。与其他国家有明显差异,说明上证综指对对消息敏感,抗风险能力较弱。

综上,用GARCH模型拟合收益率序列切实可行。

#############################################


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Forecast Library GARCH模型 tseries ggplot2 library 模型 统计

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 21:47