## [[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"
En esta seccón procederemos a cargar la data de la pagina de Yahoo.
DataNVCN <- pdfetch_YAHOO("NVCN",from = as.Date("2019-01-01"),to = as.Date("2020-01-01"), interval = '1d') #DATOS DE Neovasc
Neovasc<--DataNVCN[,5]
Podemos ver un resumen de sus estadísticas con la función summary. A este tipo de conjunto de datos se les conoce como Open-high-low-close chart (OHLC) permite analizar los diferentes movimientos de un instrumento financiero.
summary(Neovasc)
## Index NVCN.adjclose
## Min. :2019-01-02 Min. :-8.300
## 1st Qu.:2019-04-02 1st Qu.:-5.100
## Median :2019-07-02 Median :-4.185
## Mean :2019-07-02 Mean :-4.431
## 3rd Qu.:2019-10-01 3rd Qu.:-3.297
## Max. :2019-12-31 Max. :-2.580
tsNeovasc <- ts(DataNVCN$`NVCN.close`,start = c(2019,1),frequency=365)
*Retornos (Continuo)
Hallaremos el retorno contiuo de Neovasc, en la que utilizaremos la siguiente formula.
\[R_t=\text{ln}(1+r_t)\]
RetornoContinuo<-diff(log(tsNeovasc))
muC<-mean(RetornoContinuo)
s2C<-var(RetornoContinuo)
sC<-sd(RetornoContinuo)
ts.plot(RetornoContinuo)
tail (tsNeovasc)
## Time Series:
## Start = c(2019, 247)
## End = c(2019, 252)
## Frequency = 365
## NVCN.close
## [1,] 3.43
## [2,] 3.57
## [3,] 3.52
## [4,] 3.62
## [5,] 3.93
## [6,] 5.41
## attr(,"index")
## [1] 1546387200 1546473600 1546560000 1546819200 1546905600 1546992000
## [7] 1547078400 1547164800 1547424000 1547510400 1547596800 1547683200
## [13] 1547769600 1548115200 1548201600 1548288000 1548374400 1548633600
## [19] 1548720000 1548806400 1548892800 1548979200 1549238400 1549324800
## [25] 1549411200 1549497600 1549584000 1549843200 1549929600 1550016000
## [31] 1550102400 1550188800 1550534400 1550620800 1550707200 1550793600
## [37] 1551052800 1551139200 1551225600 1551312000 1551398400 1551657600
## [43] 1551744000 1551830400 1551916800 1552003200 1552262400 1552348800
## [49] 1552435200 1552521600 1552608000 1552867200 1552953600 1553040000
## [55] 1553126400 1553212800 1553472000 1553558400 1553644800 1553731200
## [61] 1553817600 1554076800 1554163200 1554249600 1554336000 1554422400
## [67] 1554681600 1554768000 1554854400 1554940800 1555027200 1555286400
## [73] 1555372800 1555459200 1555545600 1555891200 1555977600 1556064000
## [79] 1556150400 1556236800 1556496000 1556582400 1556668800 1556755200
## [85] 1556841600 1557100800 1557187200 1557273600 1557360000 1557446400
## [91] 1557705600 1557792000 1557878400 1557964800 1558051200 1558310400
## [97] 1558396800 1558483200 1558569600 1558656000 1559001600 1559088000
## [103] 1559174400 1559260800 1559520000 1559606400 1559692800 1559779200
## [109] 1559865600 1560124800 1560211200 1560297600 1560384000 1560470400
## [115] 1560729600 1560816000 1560902400 1560988800 1561075200 1561334400
## [121] 1561420800 1561507200 1561593600 1561680000 1561939200 1562025600
## [127] 1562112000 1562284800 1562544000 1562630400 1562716800 1562803200
## [133] 1562889600 1563148800 1563235200 1563321600 1563408000 1563494400
## [139] 1563753600 1563840000 1563926400 1564012800 1564099200 1564358400
## [145] 1564444800 1564531200 1564617600 1564704000 1564963200 1565049600
## [151] 1565136000 1565222400 1565308800 1565568000 1565654400 1565740800
## [157] 1565827200 1565913600 1566172800 1566259200 1566345600 1566432000
## [163] 1566518400 1566777600 1566864000 1566950400 1567036800 1567123200
## [169] 1567468800 1567555200 1567641600 1567728000 1567987200 1568073600
## [175] 1568160000 1568246400 1568332800 1568592000 1568678400 1568764800
## [181] 1568851200 1568937600 1569196800 1569283200 1569369600 1569456000
## [187] 1569542400 1569801600 1569888000 1569974400 1570060800 1570147200
## [193] 1570406400 1570492800 1570579200 1570665600 1570752000 1571011200
## [199] 1571097600 1571184000 1571270400 1571356800 1571616000 1571702400
## [205] 1571788800 1571875200 1571961600 1572220800 1572307200 1572393600
## [211] 1572480000 1572566400 1572825600 1572912000 1572998400 1573084800
## [217] 1573171200 1573430400 1573516800 1573603200 1573689600 1573776000
## [223] 1574035200 1574121600 1574208000 1574294400 1574380800 1574640000
## [229] 1574726400 1574812800 1574985600 1575244800 1575331200 1575417600
## [235] 1575504000 1575590400 1575849600 1575936000 1576022400 1576108800
## [241] 1576195200 1576454400 1576540800 1576627200 1576713600 1576800000
## [247] 1577059200 1577145600 1577318400 1577404800 1577664000 1577750400
## attr(,"index")attr(,"tzone")
## [1] UTC
## attr(,"index")attr(,"tclass")
## [1] Date
tail (RetornoContinuo)
## Time Series:
## Start = c(2019, 247)
## End = c(2019, 252)
## Frequency = 365
## NVCN.close
## [1,] 0.02061929
## [2,] 0.04000533
## [3,] -0.01410461
## [4,] 0.02801304
## [5,] 0.08216540
## [6,] 0.31960967
El proceso es llamado geométrico debido a que los términos de tendencia y volatilidad son proporcionales al valor de S. Esto pasa normalmente en caso de los precios de las acciones, de los cuales las tasas de rendimiento suelen parecer más estacionaria que las ganancias en ∆S. Debido a que ∆S / S representa solo la apreciación del capital, abstrayéndose de los pagos de dividendos, µ representa la tasa de rendimiento.
Movimiento Browniano Geométrico (GBM), este proceso estocástico 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) \] En el cálculo de Movimiento Bromiano Geométrico utilizaremos la media y la varianza de los Retornos Continuos, además realizaremos 10 000 simulaciones, que se realizara en función a su precio inicial. Posterior a ello realizaremos una incorporación del Movimiento Browmiano en un VaR.
∆t = 1/365 = 0.0027397, la media es µ = -0.000606. el precio inicial es de 6.5 y se realiza en 10 000 simulaciones. Este modelo es particularmente importante porque es el proceso subyacente para la fórmula Black-Scholes. La característica clave de esta distribución es el hecho de que la volatilidad es proporcional a S. Esto asegura que el precio de las acciones se mantendrá positivo. De hecho, a medida que el precio de las acciones cae, su variación disminuye, lo que hace que sea poco probable que experimente un gran movimiento descendente que empuje el precio a valores negativos.
t<-365
tseq<- 1:t
dt <- 1/t
muC<-mean(RetornoContinuo)
sC<-sd(RetornoContinuo)
P0<- 6.5
x <- P0
nsim<- 10000
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((muC-(sC^2)/2)*dt+sC*e*sqrt(dt))
}
}
*Grafico de la Simulación
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
Para alpha = 0.01
VAR.mc <- numeric(length = nsim)
for (i in 1:nsim) {
sim.ts <- m[,i]
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R,0.01,na.rm = TRUE)
sim.VAR <- exp(sim.q)-1
VAR.mc[i] <- sim.VAR
}
mean(VAR.mc)
## [1] -0.006947249
sd(VAR.mc)
## [1] 0.0005479281
plot(density(VAR.mc))
quantile(VAR.mc,0.025)
## 2.5%
## -0.008107809
quantile(VAR.mc,0.975)
## 97.5%
## -0.005954194
mean.monetario.mc<-c(mean(VAR.mc)*100000)
sd.monetario.mc<-c(sd(VAR.mc)*100000)
quantil_monet_0.025<-c(quantile(VAR.mc,0.025)*100000)
quantil_monet_97.5<-(quantile(VAR.mc,0.975)*100000)
sim.VAR*10000
## 1%
## -73.20558
mean.monetario.mc
## [1] -694.7249
sd.monetario.mc
## [1] 54.79281
quantil_monet_0.025
## 2.5%
## -810.7809
quantil_monet_97.5
## 97.5%
## -595.4194
Como pudimos ver en el proceso de VAR de Montecarlo a un nivel de confianza del 90%, la máxima perdida media esperada es de 694.2695 dólares, que son valores que se dan en términos monetarios que se realizó al multiplicar el total de la cartera que es de 100 000 dólares. Midiendo los cuartiles de 0.025 y 0.975 podemos observar que la perdida estaría entre 808.9282 y 94.3635 dólares. Lo que también se calculó es la desviación estándar en términos monetarios que nos dio $ 54.63951, lo que nos quiere decir que dicho valor se desviara de su media.
t<-365
tseq<- 1:t
dt <- 1/t
muC<-mean(RetornoContinuo)
sC<-sd(RetornoContinuo)
P0<- 6.5
x <- P0
nsim<- 10000
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((muC-(sC^2)/2)*dt+sC*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
Para alpha = 0.05
VAR.mc2 <- numeric(length = nsim)
for (i in 1:nsim) {
sim.ts2 <- m[,i]
sim.R2 <- diff(log(sim.ts2))
sim.q2 <- quantile(sim.R2,0.05,na.rm = TRUE)
sim.VAR2 <- exp(sim.q2)-1
VAR.mc2[i] <- sim.VAR2
}
mean(VAR.mc2)
## [1] -0.004996654
sd(VAR.mc2)
## [1] 0.0003331405
plot(density(VAR.mc2))
quantile(VAR.mc2,0.025)
## 2.5%
## -0.005659566
quantile(VAR.mc2,0.975)
## 97.5%
## -0.004365398
mean.monetario.mc2<-c(mean(VAR.mc2)*100000)
sd.monetario.mc2<-c(sd(VAR.mc2)*100000)
quantil_monet2_0.025<-c(quantile(VAR.mc2,0.025)*100000)
quantil_monet2_97.5<-(quantile(VAR.mc2,0.975)*100000)
mean.monetario.mc2
## [1] -499.6654
sd.monetario.mc2
## [1] 33.31405
quantil_monet2_0.025
## 2.5%
## -565.9566
quantil_monet2_97.5
## 97.5%
## -436.5398
Como pudimos ver en el proceso de VAR de Montecarlo a un nivel de confianza del 99%, la máxima perdida media esperada es de 499.0639 USD, que son valores que se dan en términos monetarios que se realizó al multiplicar el total de la cartera que es de 100 000 dólares. Midiendo los cuartiles de 0.025 y 0.975 podemos observar que la perdida estaría entre 566.8064 y 435.5966 USD. Lo que también se calculó es la desviación estándar en términos monetarios que nos dio $ 33.29821, lo que nos quiere decir que dicho valor se desviara de su media.
t<-365
tseq<- 1:t
dt <- 1/t
muC<-mean(RetornoContinuo)
sC<-sd(RetornoContinuo)
P0<- 6.5
x <- P0
nsim<- 10000
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((muC-(sC^2)/2)*dt+sC*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
Para alpha = 0.1
VAR.mc3 <- numeric(length = nsim)
for (i in 1:nsim) {
sim.ts3 <- m[,i]
sim.R3 <- diff(log(sim.ts3))
sim.q3 <- quantile(sim.R3,0.1,na.rm = TRUE)
sim.VAR3 <- exp(sim.q3)-1
VAR.mc3[i] <- sim.VAR3
}
mean(VAR.mc3)
## [1] -0.003903754
sd(VAR.mc3)
## [1] 0.0002714332
plot(density(VAR.mc3))
quantile(VAR.mc3,0.025)
## 2.5%
## -0.00444149
quantile(VAR.mc3,0.975)
## 97.5%
## -0.003376423
mean.monetario.mc3<-c(mean(VAR.mc3)*100000)
sd.monetario.mc3<-c(sd(VAR.mc3)*100000)
quantil_monet3_0.025<-c(quantile(VAR.mc3,0.025)*100000)
quantil_monet3_97.5<-(quantile(VAR.mc3,0.975)*100000)
mean.monetario.mc3
## [1] -390.3754
sd.monetario.mc3
## [1] 27.14332
quantil_monet3_0.025
## 2.5%
## -444.149
quantil_monet3_97.5
## 97.5%
## -337.6423
Como pudimos ver en el proceso de VAR de Montecarlo a un nivel de confianza del 90%, la máxima perdida media esperada es de 390.5645 USD, que son valores que se dan en términos monetarios que se realizó al multiplicar el total de la cartera que es de 100 000 dólares. Midiendo los cuartiles de 0.025 y 0.975 podemos observar que la perdida estaría entre 444.9682 y 337.1347 USD. Lo que también se calculó es la desviación estándar en términos monetarios que nos dio $ 27.47886, lo que nos quiere decir que dicho valor se desviara de su media.
t<-365
tseq<- 1:t
dt <- 1/t
muC<-mean(RetornoContinuo)
sC<-sd(RetornoContinuo)
P0<- 6.5
x <- P0
nsim<- 10000
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((muC-(sC^2)/2)*dt+sC*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