乘法分量 GARCH
multiplicative component GARCH
所以我正在尝试为哥伦比亚股票 http://unstarched.net/2013/03/20/high-frequency-garch-the-multiplicative-component-garch-mcsgarch-model/ 复制这个 post,所以首先我做与 post 相同的事情,以了解它的作用和方式工作。但是在安装 mscGARCH 时,我得到了我现在不知道为什么的原因,因为我做的和 post 做的一样。一切准备就绪,但我没有得到答案,所以我来这里寻求帮助。
我的代码是:
library(rugarch)
Sys.setenv(TZ="GMT")
library(quantmod)
library(zoo)
library(TTR)
R_i=read.csv('C:/Users/Alejandro/Downloads/C_2008_1minret.csv')
R_i= xts(R_i[,2],as.POSIXct(R_i[,1]))
getSymbols("C", from="2000-01-01", to="2013-03-20")
C= adjustOHLC(C,use.Adjusted = T)
R_d= ROC(Cl(C),na.pad=F)
par(cex.main=0.85,col.main="black")
acf(abs(as.numeric(R_i)),lag.max=4000, main="1-min retornos absolutos\nCitigroup (2008 Jan-Feb)"
,cex.lab=1.5)
####################
## Implementacion ##
####################
n= length(unique(format(index(R_i),"%Y-%m-%d")))
spec_d=ugarchspec(mean.model = list(armaOrder=c(1,1)),
variance.model = list(model="eGARCH",garchOrder=c(2,1)),
distribution="nig")
roll=ugarchroll(spec_d,data=R_d["/2008-02-29"], forecast.lenght=n,
refit.every = 5,refit.window = "moving", moving.size=2000,
calculate.VaR=F)
df=as.data.frame(roll)
f_sigma=as.xts(df[,"Sigma",drop=F])
spec= ugarchspec(mean.model=list(armaOrder=c(1,1),include.mean=T),
variance.model=list(model="mcsGARCH"), distribution="nig")
fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma^2)
最后一个命令给我的错误是:Error in !matchD : invalid argument type
。但是我不知道我做错了什么
我以前遇到过这个错误。如果我没记错的话,你的错误来自这一行:
fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma^2)
您需要确保 R_i
和 f_sigma
的数据范围一致。我认为这就是该错误告诉您的内容(matchD = 每日数据的日内匹配?)
例如,如果 R_i 具有 2012 年所有日期的盘中数据,那么在您的通话中确保您的每日交易量估计值用作输入,包含在 f_sigma
中,与相同的时间范围(即子集 f_sigma
正确)。例如。做类似的事情
fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma["2012"]^2)
所以我正在尝试为哥伦比亚股票 http://unstarched.net/2013/03/20/high-frequency-garch-the-multiplicative-component-garch-mcsgarch-model/ 复制这个 post,所以首先我做与 post 相同的事情,以了解它的作用和方式工作。但是在安装 mscGARCH 时,我得到了我现在不知道为什么的原因,因为我做的和 post 做的一样。一切准备就绪,但我没有得到答案,所以我来这里寻求帮助。 我的代码是:
library(rugarch)
Sys.setenv(TZ="GMT")
library(quantmod)
library(zoo)
library(TTR)
R_i=read.csv('C:/Users/Alejandro/Downloads/C_2008_1minret.csv')
R_i= xts(R_i[,2],as.POSIXct(R_i[,1]))
getSymbols("C", from="2000-01-01", to="2013-03-20")
C= adjustOHLC(C,use.Adjusted = T)
R_d= ROC(Cl(C),na.pad=F)
par(cex.main=0.85,col.main="black")
acf(abs(as.numeric(R_i)),lag.max=4000, main="1-min retornos absolutos\nCitigroup (2008 Jan-Feb)"
,cex.lab=1.5)
####################
## Implementacion ##
####################
n= length(unique(format(index(R_i),"%Y-%m-%d")))
spec_d=ugarchspec(mean.model = list(armaOrder=c(1,1)),
variance.model = list(model="eGARCH",garchOrder=c(2,1)),
distribution="nig")
roll=ugarchroll(spec_d,data=R_d["/2008-02-29"], forecast.lenght=n,
refit.every = 5,refit.window = "moving", moving.size=2000,
calculate.VaR=F)
df=as.data.frame(roll)
f_sigma=as.xts(df[,"Sigma",drop=F])
spec= ugarchspec(mean.model=list(armaOrder=c(1,1),include.mean=T),
variance.model=list(model="mcsGARCH"), distribution="nig")
fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma^2)
最后一个命令给我的错误是:Error in !matchD : invalid argument type
。但是我不知道我做错了什么
我以前遇到过这个错误。如果我没记错的话,你的错误来自这一行:
fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma^2)
您需要确保 R_i
和 f_sigma
的数据范围一致。我认为这就是该错误告诉您的内容(matchD = 每日数据的日内匹配?)
例如,如果 R_i 具有 2012 年所有日期的盘中数据,那么在您的通话中确保您的每日交易量估计值用作输入,包含在 f_sigma
中,与相同的时间范围(即子集 f_sigma
正确)。例如。做类似的事情
fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma["2012"]^2)