1 votos

Valores iniciales de constrOptim() en R

Quiero realizar una optimización de restricciones para la Estimación de Máxima Verosimilitud en R para pronosticar la volatilidad de los rendimientos. El problema es que mis valores iniciales no están en la región permitida. ¿Hay algo como un algoritmo EM que pueda utilizar? ¿Alguien tiene idea de cómo encontrar la región de valores?

mi código:

library(quantmod)
getSymbols('^GDAXI', src='yahoo', return.class='ts',from="2005-01-01", to="2015-01-31")
GDAXI.DE=GDAXI[ , "GDAXI.Close"]
log_r1=diff(log(GDAXI.DE[39:2575]))

sigma=matrix(nrow=length(log_r1)-1, ncol=1)
for(i in 2:length(log_r1))
{
sigma[i-1]=var(log_r1[1:i])
}

error=matrix(nrow=length(log_r1), ncol=1)
mu=mean(log_r1)
for(i in 1:length(log_r1))
{
error[i]=log_r1[i]-mu
}

sig=var(log_r1)
er=error
Sigma_garch=matrix(nrow=length(sigma), ncol=1)
garch=function(th)
{
omega.0=th[1]
alpha.0=th[2]
beta.0=th[3]
for(i in 1:length(sigma))
{
if(i==1)
{
  Sigma_ga=sig
}else
{
  Sigma_ga=Sigma_garch[i-1]
}
Sigma_garch[i]=omega.0+alpha.0*er[i]^2+beta.0*Sigma_ga 
}
return(Sigma_garch)
}

LogLik=function(th)
{
input=garch(th)
sig=input
for(i in 1:length(sigma))
{
LL=(-1/2)*log(2*pi)-(1/2)*log(sig[i])-(1/2)*er[i]/sig[i]
}
}

ui=matrix(c(diag(1,3),c(0,(-1),(-1))),4,3, byrow = T)
ci=c(0.01,0,0,(-0.99))
theta=c(0.02,0.01,0.95)
est=constrOptim(c(0.0000029,0.095,0.0888),LogLik, grad=NULL, ui,ci,hessian=TRUE)

1 votos

¿Puede contar un poco más sobre su configuración? Me parece que cualquier valor positivo debería estar en la región permitida.

0 votos

Tengo a >= 0, b >= 0, w > 0 y a+b < 1. Estas son las especificaciones de garch. Estoy mirando las series de retorno. Ahora tengo que encontrar los valores de partida, pero no sé la región en la que están. Así que necesito encontrar esa región y no sé cómo.

1 votos

Por favor, muestra tu configuración, esto es bastante vago. Supongo que podrías hacer algo peor que intentar $\alpha = 0.08, \beta = 0.90$ y $\omega = 0.01$ pero es sólo una suposición.

1voto

Charles Chen Puntos 183

Su función Log Likelihood LogLik no funciona: 1) LL se reinicia en cada iteración y 2) la función no devuelve nada, puedes probar tú mismo:

> LogLik(c(0.0000029,0.095,0.0888))

Esta es la razón del error dado por constrOptim Parece que la función no da un valor para el vector inicial (o para cualquier valor).

Me parece que tu código es un poco difícil de seguir y no estoy seguro de lo que estás tratando de implementar por lo que es difícil dar más consejos.

0 votos

Estoy probando una estimación garch(1,1) en el Dax para predecir la volatilidad.

0 votos

De acuerdo, ¿y cuál es la fuente de estas fórmulas? ¿Las has obtenido tú mismo?

0 votos

Las fórmulas se pueden encontrar en todos los textos de introducción a la econometría. Aquí es donde las encontré.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X