装配GARCH@CARR带R的模型
我试着穿上合适的衣服GARCH@CARR(此处建议:)具有R的函数。 它不是rugarch软件包的一部分,我用于其他GARCH模型。 我试着自己用optim和mle对它进行建模,但因为我对R的工作还很陌生,所以没有得到任何有用的东西。我使用从yahoo.finance获得的SP500日志返回和日志范围。 模型说明如下:装配GARCH@CARR带R的模型,r,mle,R,Mle,我试着穿上合适的衣服GARCH@CARR(此处建议:)具有R的函数。 它不是rugarch软件包的一部分,我用于其他GARCH模型。 我试着自己用optim和mle对它进行建模,但因为我对R的工作还很陌生,所以没有得到任何有用的东西。我使用从yahoo.finance获得的SP500日志返回和日志范围。 模型说明如下: getSymbols("^GSPC",from="2000-01-01", to="2020-08-01") Data
getSymbols("^GSPC",from="2000-01-01", to="2020-08-01")
Data_SP500<-subset(GSPC, select = 6)
##compute daily log return
return_SP500<-Data_SP500[2:length(Data_SP500),0]
for (n in 2:length(Data_SP500)) {
return_SP500[n]<-log(as.numeric(Data_SP500[n])/as.numeric(Data_SP500[n-1]))
}
Range_Data_SP500<-subset(GSPC, select = c(2,3))
##compute Range
Range_SP500<-Data_SP500[1:length(Data_SP500),0]
for (n in 1:nrow(Range_Data_SP500)) {
Range_SP500[n]<-log(as.numeric(Range_Data_SP500[n,1]))-log(as.numeric(Range_Data_SP500[n,2]))
}
#delete NA
return_SP500<-na.omit(return_SP500)
Range_SP500<-na.omit(Range_SP500)
Data_SP500_1<-merge.xts(Rendite_SP500,Range_SP500)
Data_SP500_1<-na.omit(Data_SP500_1)
#GARCH@CARR Model
#p=q=1
#r_t = roh * lambda_t * z_t, z_t~N(0,1)
#ln(lambda_t) = omega + alpha_1 * ln(lambda_t-1) + beta_1 * ln(x_t-1) + pi_1 * z_t-1
#x_t = lambda_t * u_t, u_t~LN(-sigma^2/2,sigma)
这里列出了导致此错误的3种可能原因,我看不出哪种原因与此问题相关,也看不出如何解决此问题。
不幸的是,从其中一个包中选择标准的方法不是一个选项,因为这个模型不属于任何包的一部分,我已经看到了
#GARCH CARR
N <- nrow(Data_SP500_1)#length Timeseries
r <- Data_SP500_1[,1]#returnseries
x <- Data_SP500_1[,2]#Rangeseries
LL <- function(alpha0,beta1,gamma1,roh,mu1,sigma1,mu2,sigma2) {
# Find residuals
#
lambda=mean(Data_SP500_1[,2])
y1 = r - roh * lambda
y2 <-for (i in 2:N) {
lambda[i] - exp(alpha0 + beta1*log(lambda[i-1]) + gamma1*log(x[i-1]))
}
y3 = x - lambda
#
# Calculate the likelihood for the residuals (with mu and sigma as parameters)
#
R1 = suppressWarnings(dnorm(y1, mu1, sigma1,log = T))
R3 = suppressWarnings(dlnorm(y3, mu2, sigma2,log = T))
#
# Sum the log likelihoods for all of the data points
#
-sum(R1+R3)
}
fit <- mle(LL, start = list(alpha0=0.2, beta1=0.4, gamma1=0.2, roh=1, mu1=0, sigma1=1, mu2=0, sigma2=lambda[1]))
Error in optim(start, f, method = method, hessian = TRUE, ...) :
initial value in 'vmmin' is not finite