2015-09-20 81 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