ANÁLISIS DE LA SERIE DE TIEMPO

Empezamos cargando las librerías, que serán necesarias para el análisis estadístico posterior.

options(scipen=999)
pkges<-c("pdfetch","tseries","tidyverse","forecast")
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"

Como analizaremos acciones de una compañía internacional, será necesario usar el paquete pdfetch. Ahora, procederemos a importar los datos de la página yahoo finance, el cual es un servicio de Yahoo! que ofrece información financiera de las empresas más relevantes de Estados Unidos. Para el presente trabajo, analizaremos la serie de precios de la compañía: Superconductor Technologies Inc.; con fecha inicio ’2019-01-01’ y fecha de fin ’2020-01-01’. Es importante mencionar que la compañía desarrolla, produce y comercializa materiales superconductores de alta temperatura y tecnologías relacionadas en los Unated States.

IMPORTANDO DATOS

SCONdata <- pdfetch_YAHOO("SCON",from = as.Date("2019-01-01"),to = as.Date("2020-01-01"), interval = '1d')  #DATOS DE SCON
tsSCONdata <- ts(SCONdata$`SCON.close`,start = c(2019,1),frequency=365.25)
plot(tsSCONdata)

ret_cont_SCON=diff(log(tsSCONdata))
plot(ret_cont_SCON)

var_ret_cont=var(ret_cont_SCON)
sd_ret_cont=sd(ret_cont_SCON)
med_ret_cont=mean(ret_cont_SCON)

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Value at Risk - Montecarlo Para cada α realice las siguiente simulaci´on: Realice 10 000 simulaciones de un movimiento browniano geom´etrico (GBM) con media µ y varianza σ 2 (Calculados a partir de los retornos continuos de sus datos)

t<-365
tseq <- 1:t
dt <- 1/t
mu<-med_ret_cont
s<-sd_ret_cont
P0<-1.36
nsim<-500
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))
  }
}

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')

m2<-t(m)
plot(tseq, m2[1, ],xlab = "Tiempo", ylab = "Precio", type = "l",ylim = c(min(m2[1, ])/1.1,max(m2[1, ])*1.1))
apply(m2[2:nsim, ],MARGIN =  1, function(x, r){
  lines(tseq, x)
})

## NULL

VAR: Monte Carlo

alpha = 0.01

VAR.mc1 <- numeric(length=nsim)
for (i in 1:nsim) {
  sim.ts1<-m[,i]
  sim.R <- diff(log(sim.ts1))
  sim.q <- quantile(sim.R,0.01,na.rm = T)
  sim.VAR <- exp(sim.q)-1
  VAR.mc1[i] <- sim.VAR
}
mean(VAR.mc1)
## [1] -0.009935574
sd(VAR.mc1)
## [1] 0.0007705823
plot(density(VAR.mc1))

quantile(VAR.mc1,0.025)
##        2.5% 
## -0.01155331
quantile(VAR.mc1,0.975)
##        97.5% 
## -0.008539752

valor monetario

med.money.1<-c(mean(VAR.mc1)*100000)
sd.money.1<-c(sd(VAR.mc1)*100000)
quantile.money.1.1<-quantile(VAR.mc1,0.025)*100000
quantile.money.2.1<-quantile(VAR.mc1,0.975)*100000
med.money.1
## [1] -993.5574
sd.money.1
## [1] 77.05823
quantile.money.1.1
##      2.5% 
## -1155.331
quantile.money.2.1
##     97.5% 
## -853.9752

VAR: Monte Carlo

alpha = 0.05

VAR.mc2 <- numeric(length=nsim)
for (i in 1:nsim) {
  sim.ts2<-m[,i]
  sim.R <- diff(log(sim.ts2))
  sim.q <- quantile(sim.R,0.01,na.rm = T)
  sim.VAR <- exp(sim.q)-1
  VAR.mc1[i] <- sim.VAR
}
mean(VAR.mc2)
## [1] 0
sd(VAR.mc2)
## [1] 0
plot(density(VAR.mc2))

quantile(VAR.mc2,0.025)
## 2.5% 
##    0
quantile(VAR.mc2,0.975)
## 97.5% 
##     0

valor monetario

med.money.2<-c(mean(VAR.mc2)*100000)
sd.money.2<-c(sd(VAR.mc2)*100000)
quantile.money.1.2<-quantile(VAR.mc2,0.025)*100000
quantile.money.2.2<-quantile(VAR.mc2,0.975)*100000
med.money.2
## [1] 0
sd.money.2
## [1] 0
quantile.money.1.2
## 2.5% 
##    0
quantile.money.2.2
## 97.5% 
##     0

VAR: Monte Carlo

alpha = 0.1

VAR.mc3 <- numeric(length=nsim)
for (i in 1:nsim) {
  sim.ts3<-m[,i]
  sim.R <- diff(log(sim.ts3))
  sim.q <- quantile(sim.R,0.01,na.rm = T)
  sim.VAR <- exp(sim.q)-1
  VAR.mc1[i] <- sim.VAR
}
mean(VAR.mc3)
## [1] 0
sd(VAR.mc3)
## [1] 0
plot(density(VAR.mc3))

quantile(VAR.mc3,0.025)
## 2.5% 
##    0
quantile(VAR.mc3,0.975)
## 97.5% 
##     0

valor monetario

med.money.3<-c(mean(VAR.mc3)*100000)
sd.money.3<-c(sd(VAR.mc3)*100000)
quantile.money.1.3<-quantile(VAR.mc3,0.025)*100000
quantile.money.2.3<-quantile(VAR.mc3,0.975)*100000
med.money.3
## [1] 0
sd.money.3
## [1] 0
quantile.money.1.3
## 2.5% 
##    0
quantile.money.2.3
## 97.5% 
##     0