Examen Procesos 2
FORTERRA. INC.
FORTERRA ES UN FABRICANTE LÍDER DE PRODUCTOS DE TUBERÍAS Y PRONÓSTICOS PARA USO EN INFRAESTRUCTURAS RELACIONADAS CON EL AGUA, ASÍ COMO LAS SOLUCIONES DE GESTIÓN DE AGUAS TORMENTAS Y PRODUCTOS DE PRÁCTICAS ARQUITECTÓNICAS, ESTRUCTURALES Y ESPECIALES.
El presente informe tiene la finalidad de mostrar la resolución de la Prueba de Procesos 2 del curso de Análisis de la Gestión del Riesgo tomando la data del precio de las acciones de FORTERRA. INC.
Para ello, necesitaremos las siguientes librerías:
pkges <- c("pdfetch", "tseries", "tidyverse", "forecast", "dplyr")
#install.packages("pkges")
lapply(pkges,library,character.only=T)## [[1]]
## [1] "pdfetch" "stats" "graphics" "grDevices" "utils" "datasets"
## [7] "methods" "base"
##
## [[2]]
## [1] "tseries" "pdfetch" "stats" "graphics" "grDevices" "utils"
## [7] "datasets" "methods" "base"
##
## [[3]]
## [1] "forcats" "stringr" "dplyr" "purrr" "readr" "tidyr"
## [7] "tibble" "ggplot2" "tidyverse" "tseries" "pdfetch" "stats"
## [13] "graphics" "grDevices" "utils" "datasets" "methods" "base"
##
## [[4]]
## [1] "forecast" "forcats" "stringr" "dplyr" "purrr" "readr"
## [7] "tidyr" "tibble" "ggplot2" "tidyverse" "tseries" "pdfetch"
## [13] "stats" "graphics" "grDevices" "utils" "datasets" "methods"
## [19] "base"
##
## [[5]]
## [1] "forecast" "forcats" "stringr" "dplyr" "purrr" "readr"
## [7] "tidyr" "tibble" "ggplot2" "tidyverse" "tseries" "pdfetch"
## [13] "stats" "graphics" "grDevices" "utils" "datasets" "methods"
## [19] "base"
Empezando con la resolución necesitamos obtener los datos, para ello ejecutamos el siguiente código en R:
FORTERRA.DB <- pdfetch::pdfetch_YAHOO("FRTA", from = c("2019-01-01"), to = c("2020-01-01"), interval = "1d")
head(FORTERRA.DB) ##MOSTRANDO ALGUNOS DATOS DE LA DATAFRAME ## FRTA.open FRTA.high FRTA.low FRTA.close FRTA.adjclose FRTA.volume
## 2019-01-02 3.65 4.26 3.650 4.23 4.23 272300
## 2019-01-03 4.12 4.15 3.900 3.90 3.90 223200
## 2019-01-04 3.91 4.28 3.900 4.25 4.25 299000
## 2019-01-07 4.24 4.66 4.170 4.38 4.38 223100
## 2019-01-08 4.46 4.64 4.320 4.63 4.63 152300
## 2019-01-09 4.64 4.72 4.237 4.65 4.65 138400
#Empleamos la función summary para obtener una serie de estadísticos que muestran una noción de cómo se distribuye estos datos.
summary(FORTERRA.DB)## Index FRTA.open FRTA.high FRTA.low
## Min. :2019-01-02 Min. : 3.650 Min. : 4.130 Min. : 3.400
## 1st Qu.:2019-04-02 1st Qu.: 4.787 1st Qu.: 4.940 1st Qu.: 4.656
## Median :2019-07-02 Median : 5.670 Median : 5.867 Median : 5.500
## Mean :2019-07-02 Mean : 6.457 Mean : 6.655 Mean : 6.283
## 3rd Qu.:2019-10-01 3rd Qu.: 7.322 3rd Qu.: 7.500 3rd Qu.: 7.200
## Max. :2019-12-31 Max. :11.840 Max. :12.000 Max. :11.560
## FRTA.close FRTA.adjclose FRTA.volume
## Min. : 3.790 Min. : 3.790 Min. : 44100
## 1st Qu.: 4.795 1st Qu.: 4.795 1st Qu.: 117950
## Median : 5.745 Median : 5.745 Median : 180600
## Mean : 6.484 Mean : 6.484 Mean : 233202
## 3rd Qu.: 7.293 3rd Qu.: 7.293 3rd Qu.: 258300
## Max. :11.800 Max. :11.800 Max. :1965600
#Trabajaremos con los precios ajustados debido a que arregla el desfase de precios después de pagar dividendos.
forterra <- FORTERRA.DB[, 5]
#Mediante las siguientes funciones podemos apreciar el primer y el último dato respectivamente.
head(forterra, 1)## FRTA.adjclose
## 2019-01-02 4.23
## FRTA.adjclose
## 2019-12-31 11.56
#Una vez obtenidos los valores con los que trabajaremos los volveremos una serie de tiempo mediante la siguiente función.
ts.forterra <- ts(forterra, start = c(2019,1), frequency = 365)
#Obtendremos una idea de cómo son los datos en términos cuantitativos mediante la siguiente función:
summary(ts.forterra)## FRTA.adjclose
## Min. : 3.790
## 1st Qu.: 4.795
## Median : 5.745
## Mean : 6.484
## 3rd Qu.: 7.293
## Max. :11.800
PRECIOS Y RENDIMIENTOS
Ciertamente, la mayoría de las series financieras presentan un comportamiento errático, en los que se alternan períodos de estabilidad con períodos de turbulencia.
En finanzas se suele considerar, con mucha frecuencia, las series de rentabilidades en lugar de las series de precios. Los argumentos para tomar esta decisión son básicamente dos:
• La primera de estos, está relacionado con los inversores, quienes afirman que la serie de rentabilidades de un activo es una síntesis completa y libre de escala de la oportunidad de inversión.
• La segunda razón tiene que ver con el hecho de que, las series de rentabilidades presentan, en general, mejores propiedades estadísticas que las series de precios de activos, las cuales suelen mostrar una tendencia a largo plazo, mientras que a corto plazo o a medio plazo presentan movimientos de crecimiento y decrecimiento. Esto arroja como resultado que al tomar pequeñas muestras de la serie de precios correspondientes a un mismo activo pero tomadas en diferentes períodos estas exhiban medias distintas, con lo cual se dificulta el análisis estadístico.
Redimiento Discreto
El rendimiento discreto es visto como la relación entre la ganancia en un determinado tiempo respecto de la inversión inicial, esto es en términos matemáticos de la siguiente forma:
\[r_t=(P_t-P_{t-1})/P_{t-1}\]
Ahora lo aplicaremos R:
tamano.precios <- length(ts.forterra)
retorno.dis <- numeric(length = tamano.precios)
for (i in 2:tamano.precios) {
retorno.dis[i] <- (ts.forterra[i]/ts.forterra[i - 1]) - 1
}
ts.plot(retorno.dis)Rendimiento Continuo
Las entidades financieras, bancos e inversores hacen uso de la rentabilidad simple para sus aplicaciones empíricas. No obstante, las rentabilidades continuas presentan propiedades estadísticas más atractivas en cuanto a que son más manejables. Por esta razón, en el ámbito académico y de investigación son las rentabilidades continuas las de mayor frecuencia. Siendo enmarcado además que el avance en modelos econométricos y de predicción han difundido su uso. El rendimiento continuo se calcula de la siguiente forma:
\[R_t=\text{ln}(P_t/P_{t-1})\]
Aplicando la propiedad de logaritmos la ecuación quedaría de la siguiente forma:
\[R_t=\text{ln}(P_t)-\text{ln}(P_{t-1})\]
Aplicando a R:
MOVIMIENTO BROWNIANO GEOMÉTRICO
Una prueba significativa requiere datos de alta frecuencia durante un largo período de tiempo para que también se puedan resolver claramente las alas de las distribuciones de precios. Dichos datos han estado disponibles solo a partir de la década de 1990 y pueden analizarse debido al rápido desarrollo de las instalaciones informáticas y a los enfoques estadísticos que se les brinda.
El propósito del enfoque estadístico es revelar leyes empíricas que caracterizan el mercado financiero. En última instancia, se espera que las observaciones se puedan combinar para explicar las propiedades del mercado mediante un modelo para las “interacciones microscópicas” entre los componentes del mercado. Varios modelos de este tipo se han propuesto como especulaciones en los últimos años. Algunos toman prestados conceptos bien establecidos de la física estadística y los reinterpretan en términos financieros.
En este marco se plantea el análisis estadístico de los precios de acciones cotizados en el mercado. El modelo de la evolución dinámica de los precios de los activos se enmarca como un movimiento browniano geométrico y se basa en varios supuestos:
• El comercio es continuo, es decir, el intervalo de tiempo entre citas sucesivas, \(t\), tiende a cero.
• La evolución temporal de los precios es un proceso estocástico cuyas variables aleatorias fundamentales son las variaciones infinitesimales del rendimiento.
Formalmente el Movimiento Browniano Geométrico (GBM) es un caso particular del proceso Ito. EL GBM se define de la siguiente manera:
\[S_t=S_0 e^{(\mu-0.5\sigma^2)\Delta t + \sigma \sqrt{\Delta t}\epsilon}, \ \ \epsilon \sim N(0,1) \]
Al definir el GBM en términos sencillos se obtiene:
\[\Delta S = \mu S \Delta t+\sigma S \Delta z\]
El proceso se denomina como “geométrico” porque tanto los términos de tendencia como de volatilidad son proporcionales al valor de mercado de \(S\) (valor actual). Esta característica es vista empíricamente en los precios de los activos de renta variable como las acciones, cuya peculiar característica denota que las tasas de rendimiento tienen tendencias a ser “más” estacionarias con respecto de las ganancias brutas en términos monetarios: \(\Delta S\). La descripción anterior es aplicable también para las divisas, esta situación se debe a que \(\Delta S/S\) representa per se a la apreciación del capital, \(\mu\) representa el rendimiento esperado total del activo menos la tasa de pago de ingresos, o para los instrumentos de renta variable como las acciones representa los rendimientos de los dividendos.
Movimiento Browniano Geométrico en R
Para desarrollar el modelo en R se tienen que tener en cuenta los siguientes parámetros:
• Cantidad de simulaciones a realizar (500).
• La cantidad de unidades temporales (en nuestro caso será 365 días).
• La media de las distribuciones simuladas (se empleará la media de nuestra data).
• La desviación estándar de las distribuciones simuladas (se empleará la desviación estándar de nuestra data).
• El precio inicial (se empleará el primer precio de nuestra serie temporal).
t<-365
tseq <- 1:t
dt <- 1/t
mu<-mean(retorno.con)
s<-sd(retorno.con)
P0<-4.23
nsim<-5000
m <- matrix(ncol = nsim, nrow = t)
for (i in 1:nsim) {
m[1,i] <- P0
for (h in 2:t) {
e <- rnorm(1)
m[h, i]<- m[(h-1),i]*exp((mu-(s^2)/2)*dt+s*e*sqrt(dt))
}
}Una vez obtenidas las simulaciones procederemos a graficarlas:
gbm_df <- as.data.frame(m) %>%
mutate(ix = 1:nrow(m)) %>%
pivot_longer(-ix, names_to = 'sim', values_to = 'Precio')
gbm_df %>%
ggplot(aes(x=ix, y=Precio, color=sim)) +
geom_line() +
theme(legend.position = 'none')VALUE AT RISK (VALOR EN RIESGO)
El valor en riesgo (conocido comúnmente como VaR), es una técnica estadística que mide el grado de exposición ante el riesgo financiero, este valor es en términos monetarios, y van acompañado de un nivel de confianza y de la medida del tiempo con que se realizó el calculo que suele ser diario, semanal o mensual. En términos sencillos, el VaR indica la probabilidad (normalmente 1% o 5%) de sufrir una determinada pérdida durante un periodo de tiempo.
Se empleará la data de FORTERRA para calcular el VaR para un nivel de significancia de \(\alpha_1=0.01\), \(\alpha_2=0.05\) y \(\alpha_3=0.1\).
VAR MONTE CARLO
El método Monte Carlo para estimar el VaR utiliza un software informático para generar cientos o miles de posibles resultados según unos datos iniciales introducidos por el usuario. Para este proceso se utilizará una simulación que sigue un Movimiento Browniano Geométrico.
La simulación de variables aleatorias se realiza en nuestro caso con el fin de gestionar el riesgo. Tales simulaciones, llamadas simulaciones de Monte Carlo, son fundamentales para la ingeniería financiera y la gestión de riesgos. Permiten a los financistas, ingenieros financieros, estadísticos, matemáticos o economistas fijar el precio de instrumentos financieros complejos. Ademas permite, a los gestores de riesgo, construir la distribución de carteras que son demasiado complejas para modelar analíticamente.
Los métodos de simulación son bastante flexibles y son cada vez más fáciles de implementar con los avances tecnológicos en informática. Sin embargo, sus inconvenientes no deben subestimarse. Los resultados de la simulación dependen en gran medida de los supuestos del modelo: la forma de la distribución, los parámetros y las funciones de fijación de precios o rendimientos. Los gestores de riesgos deben ser muy conscientes del efecto que los errores en estos supuestos pueden tener en los resultados.
Las simulaciones implican crear variables aleatorias artificiales con propiedades similares a las de los factores de riesgo en la cartera. Estos incluyen los precios de las acciones, los tipos de cambio, los rendimientos o precios de los bonos y los precios de los productos básicos. Para nuestro caso en particular analizaremos un solo activo y se asumirá que se sigue un Movimiento Browniano Geométrico.
VaR Monte Carlo al 99%
Simulando el Movimiento Browniano Geométrico en R:
t<-365
tseq <- 1:t
dt <- 1/t
mu<-mean(retorno.con)
s<-sd(retorno.con)
P0<-4.23
nsim<-5000
m1 <- matrix(ncol = nsim, nrow = t)
for (i in 1:nsim) {
m1[1,i] <- P0
for (h in 2:t) {
e1 <- rnorm(1)
m1[h, i]<- m1[(h-1),i]*exp((mu-(s^2)/2)*dt+s*e1*sqrt(dt))
}
}Graficando las simulaciones que siguen un Movimiento Browniano Geométrico:
gbm_df1 <- as.data.frame(m1) %>%
mutate(ix = 1:nrow(m1)) %>%
pivot_longer(-ix, names_to = 'sim', values_to = 'Precio')
gbm_df1 %>%
ggplot(aes(x=ix, y=Precio, color=sim)) +
geom_line() +
theme(legend.position = 'none')Ahora se realizará la simulación Monte Carlo bajo el proceso anteriormente desarrollado:
VAR.99 <- numeric(length = nsim)
for(i in 1:nsim){
sim.ts <- m1[, i]
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
}Graficando la densidad de las simulaciones:
Definiendo los quantiles:
## 2.5%
## -0.006180219
## 97.5%
## -0.004542163
Definiendo la Media y la Desviación Estándar:
## [1] -0.005311196
## [1] 0.0004208198
Para analizar el VaR en términos monetarios necesitaremos los siguientes datos:
mean.monet.99<-c(mean(VAR.99)*100000)
sd.monet.99<-c(sd(VAR.99)*100000)
quantile.monet.99.1<-quantile(VAR.99,0.025)*100000
quantile.monet.99.2<-quantile(VAR.99,0.975)*100000
#Visualizando los datos
mean.monet.99## [1] -531.1196
## [1] 42.08198
## 2.5%
## -618.0219
## 97.5%
## -454.2163
Después de realizar las simulaciones del VaR y obtener los valores cuantitativos en términos monetarios al multiplicar los estadísticos por \(\$100,000\) (Valor de la Cartera) se puede indicar que:
• La pérdida media (esperada) máxima con un nivel de confianza del 99% con una frecuencia diaria es de $531.12.
• La desviación estándar en términos monetarios toma el valor de $42.08 esta cifra se interpreta como la “cantidad monetaria” que se desviara de la media.
• Los cuantiles 0.025 y 0.975 en términos monetarios indican que la pérdida máxima se encontraría entre los valores $454.22 y $618.02.
VaR Monte Carlo al 95%
Simulando el Movimiento Browniano Geométrico en R:
t<-365
tseq <- 1:t
dt <- 1/t
mu<-mean(retorno.con)
s<-sd(retorno.con)
P0<-4.23
nsim<-5000
m2 <- matrix(ncol = nsim, nrow = t)
for (i in 1:nsim) {
m2[1,i] <- P0
for (h in 2:t) {
e2 <- rnorm(1)
m2[h, i]<- m2[(h-1),i]*exp((mu-(s^2)/2)*dt+s*e2*sqrt(dt))
}
}Graficando las simulaciones que siguen un Movimiento Browniano Geométrico:
gbm_df2 <- as.data.frame(m2) %>%
mutate(ix = 1:nrow(m2)) %>%
pivot_longer(-ix, names_to = 'sim', values_to = 'Precio')
gbm_df2 %>%
ggplot(aes(x=ix, y=Precio, color=sim)) +
geom_line() +
theme(legend.position = 'none')Ahora se realizará la simulación Monte Carlo bajo el proceso anteriormente desarrollado:
VAR.95 <- numeric(length = nsim)
for(i in 1:nsim){
sim.ts <- m2[, i]
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
}Graficando la densidad de las simulaciones:
Definiendo los quantiles:
## 2.5%
## -0.00432789
## 97.5%
## -0.003312144
Definiendo la Media y la Desviación estándar:
## [1] -0.003807816
## [1] 0.0002588049
Para analizar el VaR en términos monetarios necesitaremos los siguientes datos:
mean.monet.95<-c(mean(VAR.95)*100000)
sd.monet.95<-c(sd(VAR.95)*100000)
quantile.monet.95.1<-quantile(VAR.95,0.025)*100000
quantile.monet.95.2<-quantile(VAR.95,0.975)*100000
#Visualizando los datos
mean.monet.95## [1] -380.7816
## [1] 25.88049
## 2.5%
## -432.789
## 97.5%
## -331.2144
Después de realizar las simulaciones del VaR y obtener los valores cuantitativos en términos monetarios al multiplicar los estadísticos por \(\$100,000\) (Valor de la Cartera) se puede indicar que:
• La pérdida media (esperada) máxima con un nivel de confianza del 95% con una frecuencia diaria es de $380.78.
• La desviación estándar en términos monetarios toma el valor de $25.88 esta cifra se interpreta como la “cantidad monetaria” que se desviara de la media.
• Los cuantiles 0.025 y 0.975 en términos monetarios indican que la pérdida máxima se encontraría entre los valores $331.21 y $432.79.
VaR Monte Carlo al 90%
Simulando el Movimiento Browniano Geométrico en R:
t<-365
tseq <- 1:t
dt <- 1/t
mu<-mean(retorno.con)
s<-sd(retorno.con)
P0<-4.23
nsim<-5000
m3 <- matrix(ncol = nsim, nrow = t)
for (i in 1:nsim) {
m3[1,i] <- P0
for (h in 2:t) {
e3 <- rnorm(1)
m3[h, i]<- m3[(h-1),i]*exp((mu-(s^2)/2)*dt+s*e3*sqrt(dt))
}
}Graficando las simulaciones que siguen un Movimiento Browniano Geométrico:
gbm_df3 <- as.data.frame(m3) %>%
mutate(ix = 1:nrow(m3)) %>%
pivot_longer(-ix, names_to = 'sim', values_to = 'Precio')
gbm_df3 %>%
ggplot(aes(x=ix, y=Precio, color=sim)) +
geom_line() +
theme(legend.position = 'none')Ahora se realizará la simulación Monte Carlo bajo el proceso anteriormente desarrollado:
VAR.90 <- numeric(length = nsim)
for(i in 1:nsim){
sim.ts <- m3[, i]
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R, 0.1, na.rm = TRUE)
sim.var <- exp(sim.q) - 1
VAR.90[i] <- sim.var
}Graficando la densidad de las simulaciones:
Definiendo los quantiles:
## 2.5%
## -0.003375722
## 97.5%
## -0.002587346
Definiendo la Media y la Desviación estándar:
## [1] -0.002974373
## [1] 0.0002044166
Para analizar el VaR en términos monetarios necesitaremos los siguientes datos:
mean.monet.90<-c(mean(VAR.90)*100000)
sd.monet.90<-c(sd(VAR.90)*100000)
quantile.monet.90.1<-quantile(VAR.90,0.025)*100000
quantile.monet.90.2<-quantile(VAR.90,0.975)*100000
#Visualizando los datos
mean.monet.90## [1] -297.4373
## [1] 20.44166
## 2.5%
## -337.5722
## 97.5%
## -258.7346
Después de realizar las simulaciones del VaR y obtener los valores cuantitativos en terminos monetarios al multiplicar los estadísticos por \(\$100,000\) (Valor de la Cartera) se puede indicar que:
• La pérdida media (esperada) máxima con un nivel de confianza del 90% con una frecuencia diaria es de $297.44.
• La desviación estándar en terminos monetarios toma el valor de $20.44 esta cifra se interpreta como la “cantidad monetaria” que se desviara de la media.
• Los cuantiles 0.025 y 0.975 en terminos monetarios indican que la pérdida máxima se encontraría entre los valores $258.73 y $337.57.