rmgarch DCC likelihood

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

rmgarch DCC likelihood

Berk Koralp
Hi,



When Tracing is on, the iteration steps show a different function value than the full log-likelihood function.

So full log-likelihood doesn’t get sent to the optimizer here.



The correlation component -0.5*[log(det(Rt))+(Z*(inv(Rt)*trans(Z)))] gets close to this traced function value but it seems to be always slightly off.



Where`s this difference coming from?



I used the optimal parameters produced by rugarch and rmgarch to replicate the model myself, and obtained the exact same individual likelihoods , and hence the same llh sum.

But removing components and leaving only correlation part doesn’t seem to match the traced function value.



Any help would be greatly appreciated.



Best,



Berk.





Specs are as follows:


rX <- data.frame(rDAT1,rDAT2)

names(rX)[1] <- "rDAT1"

names(rX)[2] <- "rDAT2"

ug_spec = ugarchspec()

ug_spec <- ugarchspec(mean.model=list(armaOrder=c(0,0),include.mean = FALSE))

ugfit1 = ugarchfit(spec = ug_spec, data = rDAT1)

ugfit2 = ugarchfit(spec = ug_spec, data = rDAT2)

uspec.n = multispec(replicate(2, ugarchspec(mean.model = list(armaOrder = c(0,0),include.mean = FALSE))))

multf = multifit(uspec.n, rX)

spec1 = dccspec(uspec = uspec.n, dccOrder = c(1, 1), distribution = 'mvnorm')

fit1 = dccfit(spec1, data = rX, fit.control = list(eval.se = TRUE),solver.control= list(trace=TRUE), fit = multf)







        [[alternative HTML version deleted]]

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.
Reply | Threaded
Open this post in threaded view
|

Re: rmgarch DCC likelihood

alexios
Not sure I've understood you correctly. Here is what a reproducible
example would look like:
##################
library(rmgarch)
data("dji30ret")
rX <- as.xts(dji30ret[,1:2])
colnames(rX)[1] <- "rDAT1"
colnames(rX)[2] <- "rDAT2"
ug_spec = ugarchspec()
ug_spec <- ugarchspec(mean.model=list(armaOrder=c(0,0),include.mean =
FALSE))

ugfit1 = ugarchfit(spec = ug_spec, data = rX[,1])
ugfit2 = ugarchfit(spec = ug_spec, data = rX[,2])

uspec.n = multispec(replicate(2, ugarchspec(mean.model = list(armaOrder
= c(0,0),include.mean = FALSE))))

# using scale=1 as in the internal call of multifit
multf = multifit(uspec.n, rX, fit.control=list(scale=1))
spec1 = dccspec(uspec = uspec.n, dccOrder = c(1, 1), distribution =
'mvnorm')

rbind(likelihood(multf), cbind(likelihood(ugfit1), likelihood(ugfit2)))

          [,1]     [,2]
[1,] 13802.48 13959.91
[2,] 13802.48 13959.91

fit1 = dccfit(spec1, data = rX, fit.control = list(eval.se =
TRUE),solver.control= list(trace=TRUE), fit = multf)

fit2 = dccfit(spec1, data = rX, fit.control = list(eval.se =
TRUE),solver.control= list(trace=TRUE))
##################

Are you saying that these two are different?

 > cbind(likelihood(fit1),likelihood(fit2))
          [,1]     [,2]
[1,] 28153.17 28153.17


As to the "full log-likelihood" function, again I am unclear what it is
you are stating. The function (log likelihood) to be optimized excludes
constant values which are only included at the end to compose the full
log likelihood.


Alexios

On 10/28/19 1:00 PM, Berk Koralp wrote:

> Hi,
>
>
>
> When Tracing is on, the iteration steps show a different function value than the full log-likelihood function.
>
> So full log-likelihood doesn’t get sent to the optimizer here.
>
>
>
> The correlation component -0.5*[log(det(Rt))+(Z*(inv(Rt)*trans(Z)))] gets close to this traced function value but it seems to be always slightly off.
>
>
>
> Where`s this difference coming from?
>
>
>
> I used the optimal parameters produced by rugarch and rmgarch to replicate the model myself, and obtained the exact same individual likelihoods , and hence the same llh sum.
>
> But removing components and leaving only correlation part doesn’t seem to match the traced function value.
>
>
>
> Any help would be greatly appreciated.
>
>
>
> Best,
>
>
>
> Berk.
>
>
>
>
>
> Specs are as follows:
>
>
> rX <- data.frame(rDAT1,rDAT2)
>
> names(rX)[1] <- "rDAT1"
>
> names(rX)[2] <- "rDAT2"
>
> ug_spec = ugarchspec()
>
> ug_spec <- ugarchspec(mean.model=list(armaOrder=c(0,0),include.mean = FALSE))
>
> ugfit1 = ugarchfit(spec = ug_spec, data = rDAT1)
>
> ugfit2 = ugarchfit(spec = ug_spec, data = rDAT2)
>
> uspec.n = multispec(replicate(2, ugarchspec(mean.model = list(armaOrder = c(0,0),include.mean = FALSE))))
>
> multf = multifit(uspec.n, rX)
>
> spec1 = dccspec(uspec = uspec.n, dccOrder = c(1, 1), distribution = 'mvnorm')
>
> fit1 = dccfit(spec1, data = rX, fit.control = list(eval.se = TRUE),solver.control= list(trace=TRUE), fit = multf)
>
>
>
>
>
>
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> [hidden email] mailing list
> https://stat.ethz.ch/mailman/listinfo/r-sig-finance
> -- Subscriber-posting only. If you want to post, subscribe first.
> -- Also note that this is not the r-help list where general R questions should go.
>

_______________________________________________
[hidden email] mailing list
https://stat.ethz.ch/mailman/listinfo/r-sig-finance
-- Subscriber-posting only. If you want to post, subscribe first.
-- Also note that this is not the r-help list where general R questions should go.