En el presente trabajo seva ha desarrollar la primera practica calificada del curso de Analisis de Gestion de Riesgo. Además, para el desarrollo se utilizaran los datos historicos diarios de los precios al cierre ajustado que presento la cotizacion de la empresa Twist Bioscience Corporation en la bolsa NASDAQ.
La empresa Twist Bioscience Corporation, ahora sera nombrada por su ticker TWST, es una empresa estadounidense fundada en febrero del año 2013, esta especializada en la biología sintética. La compañía está desarrollando una plataforma disruptiva de síntesis de ácido desoxirribonucleico (ADN) para industrializar la ingeniería de la biología.
Tambien, cuenta con un proceso de fabricación de ADN sintético basado en semiconductores con una plataforma de silicio de \(10,000\) pozos, que es capaz de producir herramientas de biología sintética, como genes, conjuntos de oligonucleótidos y bibliotecas de variantes.
Su metodología de diseño, junto con su plataforma de síntesis basada en silicio, permite la síntesis de cada variante de biblioteca posicionada exactamente donde el usuario quiere que esté. Ofrece piscinas oligo no amplificadas y piscinas oligo listas para clonación y tambien ofrece síntesis de agrupaciones de oligonucleótidos para la focalización específica.
Según la informacion publicada en su reporte fiscal al finalizar el segundo trimestre, la empresa presento unos ingresos totales de \(\$19.3\) millones en comparación a los \(\$13.6\) millones percibidos en el mismo periodo del año fiscal 2019, por otra parte, la compañia presento una perdida neta de \(\$31.8\) millones en comparacion de los \(\$25.9\) millones en el año fiscal 2019. Además, al 31 de marzo del 2020, la compañía tenía \(\$230.1\) millones en efectivo, equivalentes de efectivo e inversiones a corto plazo.
Tambien es importante resaltar que la empresa esta comprometida en la investigacion sobre el virus Covid-19, haciendo publica la informacion de sus hallazgos, por lo que para el segundo trimestre de este año fiscal 2020 realizó gastos de investigación por \(\$10.6\) millones de dolares en comparacion con los \(\$8.9\) millones de dolares gastados para el mismo período del año fiscal 2019.
Para desarrollar el analisis de los datos de TWST se van a necesitar los siguientes paquetes:
Para poder contar con los paquetes mencionados, se tendra que aplicar los codigos mostrados, lo que se muestra primero es la creación de un vector con los nombres de los paquetes que se va ha necesitar, luego se utiliza la funcion “install.packages()” para poder instalar los paquetes y finalmente se utiliza la función “lapply()” para poder usar la funcion “library()” para cada paquete que se encuentra en el vector “pk”.
pk <- c("tseries", "forecast", "pdfetch", "forcats", "quantmod", "nortest", "tseries", "stats", "dygraphs")
install.packages(pk)
lapply(pk, "library", character.only = TRUE)
Luego de instalar y activar los paquetes de interes, se dispondra a obtener los datos historicos de los precios que cotizo TWST entre el primero de enero del año 2019 hasta el primero de enero del año 2020.
Para poder obtener los datos de los precios, primero se generan dos objetos el primero se llama “start”, el cual guardara el dato de la fecha en que inicia el periodo de evaluacion, y el segundo objeto se llama “end”, el cual guarda la fecha en que finaliza el periodo se va ha estudiar. Luego se utiliza la función “getSymbols()”, en dicha funcion se ingresara el ticker de la compañía, la fuente de donde se obtendra la infromacion y los intervalos de tiempo que se desea obtener.
start <- as.Date("2019-01-01")
end <- as.Date("2020-01-01")
quantmod::getSymbols("TWST", src = "yahoo", from = start, to = end)
## [1] "TWST"
Finalmente, se utiliza la funcion “head()”, para poder ver la primera fila del cuadro que se ha descargado, la funcion “tail()”, para poder ver la ultima final de todo el cuadro descargado, y finalmente se usa la funcion “names()”, para poder saber los nombres las variables que contiene el cuadro descargado.
head(TWST, 1)
## TWST.Open TWST.High TWST.Low TWST.Close TWST.Volume TWST.Adjusted
## 2019-01-02 22.73 24.53 21.5 24.46 135500 24.46
tail(TWST, 1)
## TWST.Open TWST.High TWST.Low TWST.Close TWST.Volume TWST.Adjusted
## 2019-12-31 21.01 21.33 20.76 21 752300 21
names(TWST)
## [1] "TWST.Open" "TWST.High" "TWST.Low" "TWST.Close"
## [5] "TWST.Volume" "TWST.Adjusted"
Además, se grafican los datos descargados sobre TWST (volumen negociado, precio minimo, precio maximo, precio de cierre y precio de cierren ajustado), luego se grafico los datos de los precios al cierre ajustados de TWST.
quantmod::chartSeries(TWST, theme = "white")
quantmod::chartSeries(TWST$TWST.Adjusted, name = "TWST", theme = "white")
A continuación, se buscar obtener los retornos de la cotizacion de TWST, pero primero se debe de separa la informacion de interes del cuadro de datos descargardo, para el desarrollo del trabajo el interes estara en los datos precios de cierre ajustados.
Se utiliza los precios de cierre ajustados, pues estos precios no estan influenciados por la reaccion que tiene el mercado luego del pago de devidendos, lo que sucede es que el valor de la cotizacion de las acciones bajan luego del pago de dividendos afectando en el analisis de los retornos y por esa razon al ajustar los precios separandolos de ese efecto se podra tener un mejor analisis.
Entonces, para poder separar la informacion de interes se corre el siguiente codigo, el cual crea un objeto llamado “pTWST”, porque contendra los precios al cierre ajustado de TWST, y como estos datos estan en la columna 6 del cuadro de datos se pone entre corchetes el numero de la columna en donde se encuentra los datos. Tambien se utiliza las funciones “head()” y “tail()” para observar el primer y ultimo datos que se han separado del cuadro.
pTWST <- TWST[, 6]
head(pTWST, 1)
## TWST.Adjusted
## 2019-01-02 24.46
tail(pTWST, 1)
## TWST.Adjusted
## 2019-12-31 21
Luego, se tiene que anunciar al programa R que los datos que se van ha utilizar son variables temporales, para eso se corre el siguiente codigo, el cual utilizando la funcion “ts()” se le dira al programa que los datos guardados en el objeto “pTWST” son variables temporales que estan dentro del periodo 2019-01-01 y 2020-01-01, y tiene una frecuencia diaria. Tambien para comprobar que se cambio el tipo de variable y efectivamente es una variable “ts”, es decir de series de tiempo.
tTWST <- ts(pTWST, start = c(2019,1), end = c(2020,1), frequency = 365)
class(tTWST)
## [1] "ts"
class(pTWST)
## [1] "xts" "zoo"
Finalmente, se pueden utilizar los datos de los precios de TWST para poder obtener los retornos.
Para lograr obtener los retornos discretos de TWST, se utilizara la siguiente formula: \[R_t=(\frac{P_t}{P_t-1})-1\]$ Entonces, se aplicara el siguiente codigo, el cual usara la funcion “for” para aplicar la formula expuesta como una operacion repetitiva para cada dato que se tiene, para eso primero se crea un objeto llamado “r.Discreto.TWST” donde se guardaran todos los retornos discretos de TWST y luego de desarrolla la funcion “for”, donde se indica al programa que aplicara la formula expuesta.
Finalmente se muestra los primeros retornos discretos de TWST con la funcion “head()”.
tamano.precios <- length(tTWST)
r.Discreto.TWST <- numeric(length = tamano.precios)
for (i in 2:tamano.precios) {
r.Discreto.TWST[i] <- (tTWST[i]/tTWST[i - 1]) - 1
}
head(r.Discreto.TWST,2)
## [1] 0.00000000 -0.06336873
Para obtener los retornos continuos de TWST se puede usar la siguente formula \[r_t=\log(\frac{P_t}{P_t-1})\]
Sin embargo se usara el siguiente metodo en el programa, un nuevo objeto llamado “r.Continuos.TWST”, el cual contendra el logaritmo natural de las diferencias de los precios de TWST.
Luego se usa la funcion “head()” para observar los primeros retornos continuos de TWST.
r.Continuos.TWST <- diff(log(tTWST))
head(r.Continuos.TWST)
## [1] -0.0654655929 0.1211239155 0.0468363159 -0.0003690718 0.0044198599
## [6] -0.0692291597
A continuación, se mostrara en el siguiente grafico los retornos que presento TWST en su cotización diaria entre el periodo 2019-01-01 y 2020-01-01, la linea verde son los retornos continuos de TWST y la linea morada son los retornos discreto de TWST.
A continuación, se realizara el analisis descriptivo de los retornos continuos de TWST para ello primero se corre el codigo mosrado, el cual contiene tres objetos llamados “media”, “varianza” y “desviacion.estandar”, dichos objetos guardaran el dato de
media <- mean(r.Continuos.TWST);media
## [1] 3.229151e-05
varianza <- var(r.Continuos.TWST);varianza
## [1] 0.001519088
desviacion.estandar <- sd(r.Continuos.TWST);desviacion.estandar
## [1] 0.03897548
Por lo tanto, se puede decir que:
Los retornos de TWST tienen una media muy cercano a cero, por lo que se puede decir que durante el periodo que se esta analizando los retornos se han compensando, es decir, los retornos negativos que se han tenido se recuperaron con lo mementos de alza.
La varianza de los retornos de TWST tambien es cercano a cero, por lo que se puede decir que los retornos durante el periodo analizado no se alejan demasiado del valor promedio, sino se encuentran muy cercano a el.
Los retornos de TWST tiene una desviacion estanda muy cercano a cero, por lo que se podria decir que el comportamiento de los retornos que se tuvieron durante el periodo estudiado no fueron muy volatiles.
En esta parte se intentara concluir si los retornos de TWST siguen una distribucion de probabilidad normal, para ello se se mostraran las graficas de los retornos junto con la grafica de una distribucion normal con el fin de poder sacar una conclusion.
En el primer par de graficos se muestra el histograma de los retornos de TWST y la grafica de la distribucion de una normal pero con la media y desviacion estandar de los retornos de TWST, con el fin de dar un primera comparativa; se puede decir que los los retornos de TWST estarian siguiendo una distribucion normal.
Luego en el segundo par, se muestran graficas muy informativas, la primera se esta comparando la funcion de densidad de los retornos de TWST y de una distribucion normal y en la segunda se compara le histograma de de los retornos de TWST y la grafica de una distribucion normal con media y desviacion estandar de los retornos de TWST; se podria decir, luego de comparar en una sola grafica el histograma y una distribucion normal, que los retornos de no estan siguiendo una distribucion normal.
Sin embargo, esta conclusion de no normalidad de los retornos de TWST, no es sifuciente estudio para realizar una conclusion contundente.
En esta seccion, se va ha realizar tres test de normalidad, con el fin de definir con fundamento estadistico si los retornos de TWST siguen un distribucion normal. Se probaran los diferentes test para los retornos de TWST, se expodnran los resultado y luego de realizar las pruebas se dara una conclusion.
Es importante recordar que las pruebas que se van a utilizar tienen la siguiente hipotesis nuela y alternativa:
\(H_0\) = La muestra proviene de una poblacion norma.
\(H_A\) = La muestra NO proviene de una poblacion normal.
Además, como se esta trabajando con un nivel confianza del \(95\%\), sí al realizar la prueba y se obtiene un \(p\)-value menor al \(5\%\) (\(p\)-value \(>\) \(5\%\)), se se acetara la hipotesis nula, es decir, se podra decir que estadisticamente los retornos de TWST siguen una distribucion normal; de lo contrario, si el \(p\)-value es \(<\) (menor) que \(5\%\), se podra decir que estadisticamente la distribucion de los retornos de TWST no siguen una distribucion normal.
tseries::jarque.bera.test(r.Continuos.TWST)
##
## Jarque Bera Test
##
## data: r.Continuos.TWST
## X-squared = 55.311, df = 2, p-value = 9.759e-13
Como se observa, al ejecutar la prueba de Jarque-Bera se ve un \(p\)-value menor que \(5\%\), por lo que se puede asumir que los retornos de TWST NO siguen una distribucion normal.
shapiro.test(r.Continuos.TWST)
##
## Shapiro-Wilk normality test
##
## data: r.Continuos.TWST
## W = 0.97893, p-value = 3.579e-05
Como se observa, al ejecutar la prueba de Shapiro-Wilk se ve un \(p\)-value menor que \(5\%\), por lo que se puede asumir que los retornos de TWST NO siguen una distribucion normal. Sin embargo, esta prueba es recomendable para muestras menores de \(50\) observaciones, es decir para muestras pequeñas, por lo que se esta prueba pierde validez por el tamaño que presenta nuestras muestra, que es de \(365\) observaciones.
ks.test(r.Continuos.TWST,"pnorm", media, desviacion.estandar)
##
## One-sample Kolmogorov-Smirnov test
##
## data: r.Continuos.TWST
## D = 0.058918, p-value = 0.1586
## alternative hypothesis: two-sided
Como se observa, al ejecutar la prueba de Kolmogorov se ve un \(p\)-value mayor que \(5\%\), por lo que se puede asumir que los retornos de TWST siguen una distribucion normal.
A pesar de que continuamente se alude al test Kolmogorov-Smirnov como un test válido para contrastar la normalidad, esto no es del todo cierto. El Kolmogorov-Smirnov asume que se conoce la media y varianza poblacional, lo que en la mayoría de los casos no es posible. Esto hace que el test sea muy conservador y poco potente. Para solventar este problema, se desarrolló una modificación del Kolmogorov-Smirnov conocida como test Lilliefors.
El test Lilliefors asume que la media y varianza son desconocidas, estando especialmente desarrollado para contrastar la normalidad. Es la alternativa al test de Shapiro-Wilk cuando el número de observaciones es mayor de 50. La función lillie.test() del paquete nortest permite aplicarlo.
nortest::lillie.test(r.Continuos.TWST)
##
## Lilliefors (Kolmogorov-Smirnov) normality test
##
## data: r.Continuos.TWST
## D = 0.058918, p-value = 0.003959
Luego de aplicar la prueba alternativa de Lilliefors el \(p\)-value menor que \(5\%\), por lo que estadisticamente los retornos de TWST no siguen una distribución normal.
Por lo tanto, omitiendo el resultado de la prueba de Kolmogorov y luego de haber explicado el motivo por el cual arroja un resultado opuesto a las otras pruebas aplicadas, se puede concluir con fundamento estadistico que la distribucion de los retornos de TWST no siguen uns distribucion normal.
A continuación, se va ha desarrolar el modelo VaR teniendo una cartera de \(\$100,000\), se desea hallar la perdida maxima esperada evaluando tres escenario donde se tendran tres niveles de confianza distintos (\(99\%\), \(95\%\), \(90\%\)), además se dearrollaran los tres metodos de aplicar el modelo VaR: VaR Parametrico, VaR Historico y Var Montecalor.
Para aplicar el VaR- Parametrico, primero se aplicara el codigo mostrado, donde se usa la funcion “for” para poder hallar el VaR parametrico para los tres escenario de confianza y ademas obtener el valor en unidades monetarias.
nivel.de.confianza <- c(0.01, 0.05, 0.1)
var.parametrico <- numeric(length = 3)
var.parametrico.monetario <- numeric(length = 3)
for (i in 1:3) {
var.parametrico[i] <- qnorm(nivel.de.confianza[i], media, desviacion.estandar,
lower.tail = TRUE)
var.parametrico.monetario[i] <- (exp(var.parametrico[i]) - 1) * 100000
}
var.parametrico
## [1] -0.09063823 -0.06407667 -0.04991680
var.parametrico.monetario
## [1] -8665.193 -6206.691 -4869.143
Entonces, teniendo los resultados para los distintos escenarios, se tienen tres respuestas:
Teniendo una cartera de \(\$100,000\) y teniendo un nivel de confianza del \(99\%\), el valor que arroja el VaR es de \(-0.088206\), es decir, la perdida maxima esperada es de \(\$10,422.575\).
Teniendo una cartera de \(\$100,000\) y teniendo un nivel de confianza del \(95\%\), el valor que arroja el VaR es de \(-0.062366\), es decir, la perdida maxima esperada es de \(\$5,989.018\).
Teniendo una cartera de \(\$100,000\) y teniendo un nivel de confianza del \(90\%\), el valor que arroja el VaR es de \(-0.048591\), es decir, la perdida maxima esperada es de \(\$4,584.194\).
Para aplicar el VaR-Historico, primero se aplicara el codigo mostrado, donde se usa la funcion “for” para poder hallar el VaR-historico para los tres escenario de confianza y ademas obtener el valor en unidades monetarias.
nivel.de.confianza <- c(0.01, 0.05, 0.1)
var.historico<- numeric(length = 3)
var.historico.monetario <- numeric(length = 3)
for (i in 1:3) {
var.historico[i] <- quantile(r.Continuos.TWST, nivel.de.confianza[i])
var.historico.monetario[i] <- (exp(var.historico[i]) - 1) * 100000
}
var.historico
## [1] -0.11006685 -0.06175858 -0.04692594
var.historico.monetario
## [1] -10422.575 -5989.018 -4584.194
Entonces, teniendo los resultados para los distintos escenarios, se tienen tres respuestas:
Teniendo una cartera de \(\$100,000\) y teniendo un nivel de confianza del \(99\%\), el valor que arroja el VaR es de \(-0.10820434\), es decir, la perdida maxima esperada es de \(\$10,255.581\).
Teniendo una cartera de \(1\$00,000\) y teniendo un nivel de confianza del \(95\%\), el valor que arroja el VaR es de $-0.06200871 $, es decir, la perdida maxima esperada es de \(\$6,012.530\).
Teniendo una cartera de \(\$100,000\) y teniendo un nivel de confianza del \(90\%\), el valor que arroja el VaR es de \(-0.04588534\), es decir, la perdida maxima esperada es de \(\$4,484.853\).
Para aplicar el VaR-Montecarlr, se va a dividir el preceso para cada nivel de confianza, para lograr las \(10,000\) simulaciones se usara la función “for” y dentro de estas \(10,000\) repeticiones que hara la función se le esta pidiendo al programa que genere un distribucion normal con media y desviacion estandar de los retornos de TWST, luego que halle los retornos simulados y halle el valor del VaR para cada simulación, luego de hallar el VaR se debe de transformar ese valor continuo a valor discreto para ser analisado.
El proceso expuesto se va ha realizar para cada nivel de confianza, además se va ha graficar la distribucion obtenida, tambien se determinara la media, desviacion estandar y los invervalos de confianza para los percentiles \(0.025\) y \(0.975\). Tambien, para que la simulacion no varie cada vez que se generen distribuciones aleatorias, se coloca una semilla con la función “set.seed()”, asi se elimina el problema de generar varios elementos aleatorias en cada ejecución.
Primero se va ha ejecutar las \(10,000\) simualciones y luego se analizaran los resultados.
VAR.99 <- numeric()
for (i in 1:10000) {
changes <- rnorm(length(r.Continuos.TWST),mean=1+media,sd=desviacion.estandar)
sim.ts <- cumprod(c(as.numeric(tTWST[1]),changes))
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R,0.01,na.rm = TRUE)
sim.VAR <- exp(sim.q)-1
VAR.99[i] <- sim.VAR
}
mean(VAR.99)
## [1] -0.08861135
sd(VAR.99)
## [1] 0.007084049
quantile(VAR.99, 0.025)
## 2.5%
## -0.1037393
quantile(VAR.99, 0.975)
## 97.5%
## -0.07580785
plot(density(VAR.99), main = "VaR-Montecarlo al 99% de confianza")
A continuación, se expondran los resultados obtenidos:
Los valores obtenidos de la simualción tienen una media de \(-0.0886\), lo que se puede decir es que al \(99\%\) de nivel de confianza, las perdidas maximas esperadas en promedido son de \(\$8,862.857\).
Los valores obtenido de la simulación tienen una desviacion estandar de \(0.0070\), lo que quiere decir que al \(99\%\) de nivel de confianza,las perdidas maximas esperadas se alejaran como mucho en \(\$705.6306\) de las perdidas maximas esperadas promedio.
Al \(99\%\) de nivel de confianza, el intervalo de confianza es que las perdidas maximas esperadas se encuentran entre \(\$10,325.13\) y \(\$7,563.728\)
Primero se va ha ejecutar las \(10,000\) simualciones y luego se analizaran los resultados.
VAR.95 <- numeric()
for (i in 1:10000) {
changes <- rnorm(length(r.Continuos.TWST), mean = 1 + media, sd = desviacion.estandar)
sim.ts <- cumprod(c(as.numeric(tTWST[1]), changes))
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R, 0.05, na.rm = TRUE)
sim.VAR <- exp(sim.q) - 1
VAR.95[i] <- sim.VAR
}
mean(VAR.95)
## [1] -0.06352107
sd(VAR.95)
## [1] 0.004266714
quantile(VAR.95, 0.025)
## 2.5%
## -0.07223555
quantile(VAR.95, 0.975)
## 97.5%
## -0.05552337
plot(density(VAR.95), main = "VaR-Montecarlo al 95% de confianza")
A continuación, se expondran los resultados obtenidos:
A continuación, se expondran los resultados obtenidos:
Los valores obtenidos de la simualción tienen una media de \(-0.0635\), lo que se puede decir es que al \(95\%\) de nivel de confianza, teniendo una cartera de \(\$100,000\), las perdidas maximas esperadas en promedido son de \(\$6,355.919\).
Los valores obtenido de la simulación tienen una desviacion estandar de \(0.0070\), lo que quiere decir que al \(95\%\) de nivel de confianza,, teniendo una cartera de \(\$100,000\), las perdidas maximas esperadas se alejaran como mucho en \(\$421.55\) de las perdidas maximas esperadas promedio.
Al \(95\%\) de nivel de confianza, , teniendo una cartera de \(\$100,000\),el intervalo de confianza es que las perdidas maximas esperadas se encuentran entre \(\$7,207.785\) y \(\$5,552.187\)
Primero se va ha ejecutar las \(10,000\) simualciones y luego se analizaran los resultados.
VAR.90 <- numeric()
for (i in 1:10000) {
changes <- rnorm(length(r.Continuos.TWST), mean = 1 + media, sd = desviacion.estandar)
sim.ts <- cumprod(c(as.numeric(tTWST[1]), changes))
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R, 0.90, na.rm = TRUE)
sim.VAR <- exp(sim.q) - 1
VAR.90[i] <- sim.VAR
}
mean(VAR.90)
## [1] 0.04966279
sd(VAR.90)
## [1] 0.003468691
quantile(VAR.90, 0.025)
## 2.5%
## 0.04285342
quantile(VAR.90, 0.975)
## 97.5%
## 0.05654359
plot(density(VAR.90), main = "VaR-Montecarlo al 90% de confianza")
A continuación, se expondran los resultados obtenidos:
Los valores obtenidos de la simualción tienen una media de \(0.0496\),lo que se puede decir es que al \(90\%\) de nivel de confianza, teniendo una cartera de \(\$100,000\), las perdidas maximas esperadas en promedido son de \(\$4,967.536\).
Los valores obtenido de la simulación tienen una desviacion estandar de \(0.0034\), lo que quiere decir que al \(90\%\) de nivel de confianza,, teniendo una cartera de \(\$100,000\), las perdidas maximas esperadas se alejaran como mucho en \(\$345.64\) de las perdidas maximas esperadas promedio.
Al \(90\%\) de nivel de confianza, , teniendo una cartera de \(\$100,000\),el intervalo de confianza es que las perdidas maximas esperadas se encuentran entre \(\$4,305.65\) y \(\$5,657.53\)
ts.garch <- tseries::garch(r.Continuos.TWST, c(1,1))
##
## ***** ESTIMATION WITH ANALYTICAL GRADIENT *****
##
##
## I INITIAL X(I) D(I)
##
## 1 1.367179e-03 1.000e+00
## 2 5.000000e-02 1.000e+00
## 3 5.000000e-02 1.000e+00
##
## IT NF F RELDF PRELDF RELDX STPPAR D*STEP NPRELDF
## 0 1 -1.006e+03
## 1 6 -1.007e+03 3.20e-04 7.23e-04 1.0e-03 7.3e+07 1.0e-04 2.63e+04
## 2 7 -1.007e+03 1.72e-05 2.12e-05 9.8e-04 2.0e+00 1.0e-04 3.65e+00
## 3 13 -1.011e+03 4.23e-03 7.44e-03 4.7e-01 2.0e+00 8.8e-02 3.63e+00
## 4 16 -1.013e+03 1.75e-03 1.66e-03 6.4e-01 1.5e+00 2.0e-01 2.65e-02
## 5 18 -1.018e+03 5.45e-03 3.32e-03 4.4e-01 1.8e+00 3.9e-01 1.95e-01
## 6 22 -1.018e+03 3.18e-05 5.78e-04 6.0e-03 2.0e+00 7.7e-03 8.58e-03
## 7 23 -1.019e+03 3.13e-04 4.20e-04 3.0e-03 2.0e+00 3.9e-03 7.41e-04
## 8 25 -1.019e+03 2.25e-05 1.49e-05 2.9e-03 1.7e+00 3.9e-03 2.05e-04
## 9 26 -1.019e+03 2.51e-06 8.57e-06 2.9e-03 1.9e+00 3.9e-03 1.74e-04
## 10 28 -1.019e+03 5.63e-05 1.20e-04 9.9e-03 6.9e-01 1.5e-02 1.71e-04
## 11 29 -1.019e+03 1.05e-04 1.29e-04 1.0e-02 1.3e+00 1.5e-02 2.21e-04
## 12 30 -1.019e+03 4.16e-05 5.13e-05 1.6e-02 0.0e+00 2.4e-02 5.13e-05
## 13 42 -1.019e+03 1.87e-07 8.72e-07 6.7e-07 2.8e+00 8.3e-07 1.65e-06
## 14 63 -1.019e+03 -2.23e-15 1.14e-14 1.3e-14 4.9e+07 1.6e-14 9.22e-07
##
## ***** FALSE CONVERGENCE *****
##
## FUNCTION -1.018842e+03 RELDX 1.278e-14
## FUNC. EVALS 63 GRAD. EVALS 14
## PRELDF 1.136e-14 NPRELDF 9.221e-07
##
## I FINAL X(I) D(I) G(I)
##
## 1 2.636234e-04 1.000e+00 -7.231e+02
## 2 1.978380e-01 1.000e+00 -8.684e-01
## 3 6.262517e-01 1.000e+00 -5.617e-01
summary(ts.garch)
##
## Call:
## tseries::garch(x = r.Continuos.TWST, order = c(1, 1))
##
## Model:
## GARCH(1,1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.5683 -0.6224 0.0000 0.6239 4.3063
##
## Coefficient(s):
## Estimate Std. Error t value Pr(>|t|)
## a0 2.636e-04 9.932e-05 2.654 0.007949 **
## a1 1.978e-01 5.361e-02 3.691 0.000224 ***
## b1 6.263e-01 9.387e-02 6.672 2.53e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Diagnostic Tests:
## Jarque Bera Test
##
## data: Residuals
## X-squared = 7.948, df = 2, p-value = 0.0188
##
##
## Box-Ljung test
##
## data: Squared.Residuals
## X-squared = 0.13693, df = 1, p-value = 0.7114
ts.garch.residuals <- ts.garch$residuals
hhat <- ts(ts.garch$fitted.values[-1,1]^2,start = c(2019,1),frequency = 365.25)
plot.ts(hhat, ylab = " ", col = "purple")
Coef.garch <- ts.garch$coef; Coef.garch
## a0 a1 b1
## 0.0002636234 0.1978379738 0.6262517221
alfa.cero <- Coef.garch[1]
alfa.uno <- Coef.garch[2]
beta <- Coef.garch[3]
Varianza.Incondicional <- (alfa.cero / (1 - alfa.uno - beta))
Persistencia <- (alfa.uno + beta)
Varianza.Incondicional
## a0
## 0.001498624
Persistencia
## a1
## 0.8240897
En este caso es un autorregresivo AR(1) y MA(1) que son las medias moviles. Dicho modelo no nos arroja el impacto de las variables estimadas por el t-student ni el p-value, asi que no podriamos saber si nuestras variables son significativas o no. Pero existe un componente que si se debe destacar \(\beta_1\) este mide la volatilidad que acompaña al p en t-1 que en este caso es $0.197838 $, nos indica que la volatilidad es baja.
La varianz incondicional representa la volatilidad promedio diaria de los rendimientos de TWST, para obtener el valor de la varianza incondicinal se utiliza la siguiente formula: \[h=\frac{\alpha_0}{1-\alpha_1-\beta}\]
Dado que nuestro \(\alpha_0\) es \(0.0002636234\), tenemos un \(\alpha_1\) como \(0.1978379738\) y nuestro \(\beta\) es \(0.6262517221\), la varianza incondicional de los retornos de WSTW es \(0.001498624\).
Si existe un choque que influya en la cotizacion de los precios, la persistencia muestra la velocidad en que la varianza los choques a la varianza vuelven a sus valores normales al largo plazo, para obtener el valor de la persistencia se usa la siguiente formula:
\[\gamma=\alpha_1+\beta\]
Entonces, como el \(\alpha_1\) hallado es \(0.1978379738\) y el \(\beta\) es \(0.6262517221\), entonces la persistencia es menor a 1 las varianzas de los retornos vuelven rapido a su varianza normal luego de pasar por un choque que altere su volatilidad normal, ya que al tener una persistencia menor a 1, los retornos son estacionarios y volveran a su horizonte normal.