En la siguiente entrada se usan diversas estrategias GARCH para obtener diferentes series de volatilidad. El tema es que estas series presentan mucho ruido en su evolución histórica y se proponen promedios móviles de cada una para una representación con menos ruidos. El ejemplo se realiza usando tidyverse. [ver entrada anterior donde se explica cómo preparar las series de volatilidad (es decir, hasta el punto donde se colocan los gráficos): http://betaeconomia.blogspot.com/2022/07/modelos-garch-sobre-multiples-series.html].
dataVol %>%
mutate(fecha = 1:nrow(dataVol)) %>%
as.data.frame() %>%
pivot_longer(!fecha, names_to = "var", values_to = "value") %>%
ggplot(aes(x = fecha, y = value)) +
geom_line(aes(color
= var))+
facet_wrap(~var, scales='free_y', ncol = 2) +
theme_classic()+
theme(legend.position = "none",
axis.ticks = element_line(colour = "grey70", size = 0.2),
strip.background = element_blank()) +
scale_colour_grey(start = 0.1,end = 0.1)
mutate(fecha = 1:nrow(dataVol)) %>%
as.data.frame() %>%
pivot_longer(!fecha, names_to = "var", values_to = "value") %>%
ggplot(aes(x = fecha, y = value)) +
theme_classic()+
theme(legend.position = "none",
axis.ticks = element_line(colour = "grey70", size = 0.2),
strip.background = element_blank()) +
scale_colour_grey(start = 0.1,end = 0.1)
Ahora, antes de graficar las volatilidades se crea una variable
que representa los promedios de cada serie particular. Esto se hace
para disimular el ruido [Aquí se explica en detalle como se usa la función: https://betaeconomia.blogspot.com/2022/04/aplicaciones-de-la-funcion-rollaplay-de.html].
dataVol %>%
mutate(fecha = 1:nrow(dataVol)) %>%
as.data.frame() %>%
pivot_longer(!fecha, names_to = "var", values_to = "value") %>%
group_by(var) %>%
mutate(value2 = rollapply(data = value, width = 22, FUN = mean, fill=NA, align = "right", partial = T)) %>%
ggplot(aes(x = fecha, y = value2)) +
geom_line(aes(color
= var))+
facet_wrap(~var, scales='free_y', ncol = 2) +
theme_classic()+
theme(legend.position = "none",
axis.ticks = element_line(colour = "grey70", size = 0.2),
strip.background = element_blank()) +
scale_colour_grey(start = 0.1,end = 0.1)
mutate(fecha = 1:nrow(dataVol)) %>%
as.data.frame() %>%
pivot_longer(!fecha, names_to = "var", values_to = "value") %>%
group_by(var) %>%
mutate(value2 = rollapply(data = value, width = 22, FUN = mean, fill=NA, align = "right", partial = T)) %>%
ggplot(aes(x = fecha, y = value2)) +
theme_classic()+
theme(legend.position = "none",
axis.ticks = element_line(colour = "grey70", size = 0.2),
strip.background = element_blank()) +
scale_colour_grey(start = 0.1,end = 0.1)