Esta funcion calcula el modelo de volatilidad estocástica basada en el filtro auxiliar de partículas (APF) el algoritmo incorpora los pasos de empuje bayesianos basados en la transformación wavelet. El algoritmo asume que los parámetros del modelo son desconocidos. bayeShrinkPL, metodología propuesta para la eliminación de ruido aditivo basado en particle learning en la transformación wavelet. BAYES.THR, metodología de Abramovich et al. (1998) para la eliminación de ruido aditivo basado en la transformación wavelet.

APFW(y, ms1, xs, levj, M = 5, Ne = 5, method = 1)

Arguments

y

representa la serie de observaciones reales.

ms1

vector de parámetros (\(\alpha\), \(\beta\) y \(\tau^2\)).

xs

partículas iniciales de la variable latente a partir de la distribución a priori.

levj

nivel de resolución en la transformación wavelet.

M

parámetro de la función bayeShrinkPL.

Ne

parámetro de la función bayeShrinkPL.

method

1 o 2, método de eliminación de ruido a partir de la transformación wavelet method = 1 (bayeShrinkPL), method = 2 (BAYES.THR).

Value

Esta funcion retorna los cuantiles (2.5%, 50% y 97.5%) de las estimaciones de la volatilidad estocástica con el método de filtrado de partículas basado en wavelets. Además también retorna la función de verosimilitud

Author

Omar Rios Saavedra, orioss@unal.edu.co

Examples

# Ejemplo de estimación de volatilidad estocástica con parámetros conocidos
# con un filtro de partículas basado en empujes wavelet

# Generación de retornos
rlike<-function(x){rnorm(1,0,exp(x/2))}
n     =  2^11
alpha = -0.00645
beta  =  0.985
tau2  =  0.1
tau   = sqrt(tau2)
y1     = rep(0,n)
x1     = rep(0,n)
x1[1]  = alpha/(1-beta)
y1[1]  = rlike(x1[1])
set.seed(116)
for (t in 2:n){
  x1[t] = rnorm(1,alpha+beta*x1[t-1],tau)
  y1[t] = rlike(x1[t])
}

alpha.true<-alpha
beta.true<-beta
tau2.true<-tau2

# valores iniciales y distribución a priori
theta <- c(alpha,beta,tau2)
m0 <- 0.0; C0 <- 0.1; sC0 <- sqrt(C0)
N = 2^10
lev <- 3:6

set.seed(123); xs <- rnorm(N,m0,sC0)

# Estimación de la volatilidad latente
vol3a <- APFW(y1, theta, xs, lev[2], N = 2, method = 1)
mvol3a <- vol3a$quants[,1,1]
plot.ts(y1, ylab = 'Retornos')

plot.ts(exp(x1/2), ylab = 'Volatilidad latente')

plot.ts(mvol3a, ylab = 'Volatilidad estimada')
lines(exp(x1/2), ylim = c(-0.01, 6), col = 'red')
legend('topleft', legend = c('Volatilidad estimada', 'Volatilidad latente'),
       lty = 1, col = c('black','red'), bty = 'n')