Question 1

# Downloading Data
FNJN <- pdfetch_YAHOO("FNJN",from = as.Date("2019-01-01"),to = as.Date("2020-01-01"), interval = '1d') 
tsFNJN <- ts(FNJN$`FNJN.close`,start = c(2019,1),frequency=356.25)
# Return Computation
l_FNJN<-diff(log(tsFNJN))
# Return mean
mu<-mean(l_FNJN)
# Return Variance
s2<-var(l_FNJN)
# Return Standard Deviation
s<-sd(l_FNJN)

Monte Carlo

# Semilla de los datos aleatorios
set.seed(1000)
# Un año
t<-365
# Secuencia de los datos
tseq <- 1:t
# Número de steps
dt <- 1/t
# Media del proceso Browniano Geométrico (PBG)
mu<-mu
# Desviación Estándar del proceso Browniano Geométrico
s<s
## [1] FALSE
# Valor Inicial del PBG
P0<-tsFNJN[1]
# Numero total de simulaciones
nsim<-10000
# Matriz donde se guardara las simulaciones
m <- matrix(ncol = nsim, nrow = t)
# Vector donde se guardará los valores del VAR para cada alpha
MCVAR1.mc <- numeric()
MCVAR2.mc <- numeric()
MCVAR3.mc <- numeric()
# Los alphas
alpha1 = 0.01
alpha2 = 0.05
alpha3 = 0.1

For alpha = 0.01

for (i in 1:nsim) {
  # Valor inicial de cada simulación
  m[1,i] <- P0
  for (h in 2:t) {
    # Valor Inicial del error
    e <- rnorm(1)
    # Simulación del PBG para
    m[h, i]<- m[(h-1),i]*exp((mu-(s^2)/2)*dt+s*e*sqrt(dt))
  }
  # Guardando en un vector la simulación
  sim.ts <- m[,i]
  # Guardando los retornos del vector
  sim.R <- diff(log(sim.ts))
  # Guardando el cuantil (en logaritmo) que corresponde al alpha 1
  sim.q <- quantile(sim.R,alpha1,na.rm = T)
  # Guardando el VaR en niveles
  sim.VAR <- exp(sim.q)-1
  # Guardando el VaR de cada simulación en el vector correspondiente
  MCVAR1.mc[i] <- sim.VAR
}
# Calculando en unidades monetarias el VaR al alpha1 nivel de significancia
values1 = 100000*MCVAR1.mc
# Mean and Standard Deviation of Simulated VARs
mean(values1)
## [1] -333.2319
sd(values1)
## [1] 26.27231
# Simulated VAR distribution graph
plot(density(values1))

# Confidence Interval Requested
quantile(values1,0.025)
##     2.5% 
## -388.413
quantile(values1,0.975)
##     97.5% 
## -285.2553

Explicación de los resultados:

Values1 viene a ser los VaR calculados de acuerdo a 1% de nivel de significancia para cada simulación y representados en valores monetarios de acuerdo a un portafolio de 100,000 dólares

For alpha = 0.05

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))
  }
  sim.ts <- m[,i]
  sim.R <- diff(log(sim.ts))
  sim.q <- quantile(sim.R,alpha2,na.rm = T)
  sim.VAR <- exp(sim.q)-1
  # Saved in a vector
  MCVAR2.mc[i] <- sim.VAR
}
values2 = 100000*MCVAR2.mc
# Mean and Standard Deviation of Simulated VARs
mean(values2)
## [1] -239.7471
sd(values2)
## [1] 16.07147
# Simulated VAR distribution graph
plot(density(values2))

# Confidence Interval Requested
quantile(values2,0.025)
##      2.5% 
## -271.9416
quantile(values2,0.975)
##     97.5% 
## -208.6554

Explicación de los resultados:

Values2 viene a ser los VaR calculados de acuerdo a 5% de nivel de significancia para cada simulación y representados en valores monetarios de acuerdo a un portafolio de 100,000 dólares

For alpha = 0.1

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))
  }
  sim.ts <- m[,i]
  sim.R <- diff(log(sim.ts))
  sim.q <- quantile(sim.R,alpha3,na.rm = T)
  sim.VAR <- exp(sim.q)-1
  # Saved in a vector
  MCVAR3.mc[i] <- sim.VAR
}
values3 = 100000*MCVAR3.mc
# Mean and Standard Deviation of Simulated VARs
mean(values3)
## [1] -187.5915
sd(values3)
## [1] 12.99897
# Simulated VAR distribution graph
plot(density(values3))

# Confidence Interval Requested
quantile(values3,0.025)
##      2.5% 
## -213.5656
quantile(values3,0.975)
##     97.5% 
## -162.3216

Explicación de los resultados:

Values3 viene a ser los VaR calculados de acuerdo a 10% de nivel de significancia para cada simulación y representados en valores monetarios de acuerdo a un portafolio de 100,000 dólares

##Conclusiones Generales: