2015-09-20 74 views
0

所以我试图复制这篇文章哥伦比亚股票http://unstarched.net/2013/03/20/high-frequency-garch-the-multiplicative-component-garch-mcsgarch-model/,所以首先我做同样的事情,以了解它做了什么以及它是如何工作的。但是,当拟合mscGARCH时,我得到了我现在不知道的原因,因为我的做法和帖子一样。所有准备好问那里,但我没有得到答案,所以我来这里寻求一些帮助。 ,我有代码:乘法组件GARCH

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。但我不知道自己在做什么错了

回答

0

我在自己之前遇到过这个错误。如果我没有记错,您的错误来源于此行:

fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma^2)

您需要确保数据范围R_if_sigma不谋而合。我认为这就是这个错误告诉你的结果(matchD =日常数据中的盘中匹配?)

例如,如果R_i在2012年有所有日期的日内数据,那么在您的呼叫中,确保您的每日vol估计值包含在f_sigma中的输入在相同的时间范围内重叠(即正确的子集f_sigma)。例如。做类似 fit=ugarchfit(data=R_i, spec=spec,DailyVar=f_sigma["2012"]^2)

+0

工作完全谢谢@FXQuantTrader –

+0

我遇到了另一个我不明白的问题。在此命令之后,'forc = ugarchforecast(fit2,n.ahead = 10,n.roll = 299,DailyVar = f_sigma^2)'y得到'错误:无法分配大小为360.0的矢量Mb 另外:警告消息: 1:格式.POSIXlt(as.POSIXlt(x,tz),格式,usetz,...): 达到8169Mb的总分配:见help(memory.size)'你做错了什么?只是我的电脑没有能力来计算这个吗?或者我只需要增加R中的内存?在这种情况下,我该怎么做? –

+0

听起来像。你看过说这个吗? http://stackoverflow.com/questions/5171593/r-memory-management-cannot-allocate-vector-of-size-n-mb – FXQuantTrader