Esta funcion calcula el modelo de volatilidad estocástica basada en el filtro de partículas de Liu & West (2001) el algoritmo incorpora los pasos de empuje bayesianos basados en la transformación wavelet. 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.

LWW(y, alphas, betas, tau2s, xs, delta, lev, M = 5, Ne = 5, method = 1)

Arguments

y

representa la serie de observaciones reales.

alphas

representa los valores iniciales para el parámetro de reversión de la media en el proceso de volatilidad estocástica.

betas

representa los valores iniciales para el parámetros de persistencia de volatilidad.

tau2s

representa los valores iniciales para la varianza de la variable latente (volatilidad estocástica).

xs

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

delta

constante de ponderación para el aprendizaje de parámetros en el algoritmo Liu & West (2001).

lev

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, y sus parámetros (\(\alpha\), \(\beta\) y \(\tau^2\)) a partir de las partículas libre de ruido.

Author

Omar Rios Saavedra, orioss@unal.edu.co

Examples

# Ejemplo de aplicación del filtro de Liu West con empuje basado en wavelet

library(wavethresh)

rlike <- function(x){rnorm(1,0,exp(x/2))}
n     =  2^10
alpha =  -0.004
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

# Número de partículas, ponderación de la mixtura y vector de niveles de resolución
N = 2^11
delta <- 0.99
lev <- 3:6

# Valores iniciales y distribuciones a priori
m0 <- 0.0; C0 <- 0.1; sC0 <- sqrt(C0)
ealpha <- alpha; valpha <- 0.01
ephi <- beta; vphi <- 0.01
nu <- 4; lambda <- tau2

xs <- rnorm(N, m0, sC0)
alphas <- rnorm(N, ealpha, sqrt(valpha))
betas <- rnorm(N, ephi, sqrt(vphi))
tau2s <- 1/rgamma(N, nu/2, nu*lambda/2)

# Estimación de la volatilidad latente y parámetros
rest2 <- LWW(y1, alphas, betas, tau2s, xs, delta, lev[2], M = 2, method = 1)
mvolp2 <- rest2$quants[,4,1]

# Volatilidad latente y estimación
plot.ts(y1, ylab = 'Retornos')

plot.ts(exp(x1/2), ylim = c(-0.01,4), ylab = 'Volatilidad latente', col = 'red')

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


# Parámetro de la media
malpha2 <- rest2$quants[,1,1]
lalpha2 <- rest2$quants[,1,2]
ualpha2 <- rest2$quants[,1,3]
ts.plot(malpha2, ylim = range(lalpha2, ualpha2), main = expression(LWW[j==4]), ylab=expression(mu))
lines(lalpha2, lwd = 1.25, col = 'gray')
lines(ualpha2, lwd = 1.25, col = 'gray')
abline(h = alpha.true, col = 2, lwd = 1)


# Parámetro de persistencia de la volatilidad
mbeta2 <- rest2$quants[,2,1]
lbeta2 <- rest2$quants[,2,2]
ubeta2 <- rest2$quants[,2,3]
ts.plot(mbeta2, ylim = range(lbeta2, ubeta2), main = expression(LWW[j==4]), ylab = expression(phi))
lines(lbeta2, lwd = 1.25, col = 'gray')
lines(ubeta2, lwd = 1.25, col = 'gray')
abline(h = beta.true, col = 2, lwd = 1)


# Parámetro de la varianza de la volatilidad latente
mtau22 <- rest2$quants[,3,1]
ltau22 <- rest2$quants[,3,2]
utau22 <- rest2$quants[,3,3]
ts.plot(mtau22, ylim = range(ltau22,utau22), main = expression(LWW[j==4]), ylab = expression(tau^2))
lines(ltau22, lwd = 1.25, col = 'gray')
lines(utau22, lwd = 1.25, col = 'gray')
abline(h = tau2.true, col = 2, lwd = 1)