For my thesis I need to estimate BEKK GARCH models. For this I have tried several packages. I keep getting the same error: "H is singular". I have found that this can be caused by highly correlated series, or series very close to zero.
To make sure it had nothing to do with my data (I am modeling cryptocurrencies and other asset classes), I tried to run the BEKK model on different series. I have tried to run in on Google, IBM, microsoft, GOLD index and other series, but I keep getting this error.
One example of code I have tried where I got this error is:
getSymbols("MSFT", from = startDate, to = endDate)
getSymbols("GOOG", from = startDate, to = endDate)
data <- data.frame(dailyReturn(MSFT), dailyReturn(IBM))
log_returns1 <- diff(log(MSFT$MSFT.Adjusted), lag=1)
log_returns2 <- diff(log(GOOG$GOOG.Adjusted), lag=1)
log_ret <- merge(log_returns1[-1,], log_returns2[-1,])
estimate <- BEKK(log_ret, order = c(1, 1), params = NULL, fixed = NULL, method = "BFGS", verbose = T)
I still obtain parameters but the results cannot be right. I get totally different parameter estimates with different packages. Also, when plotting the dynamic correlation obtained from the model it looks more like a return series that bounces between -1 and +1.
I did get "Valid" parameters for the BTC-VIX series using the MTS BEKK package, namely no significant volatility spillover. But even here the dynamic correlation obtained from the model was not correct.
I have used: MTS and mGARCH-BEKK package.
Any help would be greatly appreciated.