Juan Zapata May 26, 2020
Cargar las librerias pdfetch, tseries, tidyverse, forecast.
lapply devuelve una lista de la misma longitud que X, cada elemento del cual es el resultado de aplicar FUN al elemento correspondiente de X.
## [[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"
El paquete pdfetch nos permite descargar series temporales acciones cotizadas en mercados internacionales de yahoo finance, los datos de la serie de tiempo financiera SP500 (^GSPC) en intervalo de 1 dias.
la función summary nos permite obserbar los diferentes movimientos de la serie en el resusmen estadistico a los datos de SP500data.
## Index ^GSPC.open ^GSPC.high ^GSPC.low
## Min. :2015-01-02 Min. :1833 Min. :1847 Min. :1810
## 1st Qu.:2016-04-04 1st Qu.:2102 1st Qu.:2109 1st Qu.:2092
## Median :2017-07-01 Median :2434 Median :2442 Median :2428
## Mean :2017-07-01 Mean :2452 Mean :2463 Mean :2441
## 3rd Qu.:2018-09-30 3rd Qu.:2773 3rd Qu.:2784 3rd Qu.:2758
## Max. :2019-12-31 Max. :3247 Max. :3248 Max. :3234
## ^GSPC.close ^GSPC.adjclose ^GSPC.volume
## Min. :1829 Min. :1829 Min. :1296540000
## 1st Qu.:2102 1st Qu.:2102 1st Qu.:3232422500
## Median :2434 Median :2434 Median :3520885000
## Mean :2453 Mean :2453 Mean :3625445620
## 3rd Qu.:2771 3rd Qu.:2771 3rd Qu.:3900050000
## Max. :3240 Max. :3240 Max. :7609010000
Ahora crearemos un objeto Time-Series, el cual indica al software que se tomaron muestras equidistantes en el tiempo (meses, dias, años).
Se crea un objeto de tsSP500 donde se tomaran partes de la serie de tiempo de la data SP500data (^GSPC) a partir del 2015,1 con un frecuencia de 356.25
*(Discretos)
[r_t=(P_t-P_{t-1})/P_{t-1}] calcula el retorno discreto donde realiza un numero concreto. Un rendimiento discreto común es una tasa de interés compuesta. con ello encuentra la cantidad base para los rendimientos de la inversion. Tambien estimación de Parámetros de la media (mean), varianza (var) y la desviacion estandar (sd) de los retornos de la serie de tiempo del d_sp500.
d_sp500 <- diff(tsSP500)/tsSP500[-length(tsSP500)]
mu <- mean(d_sp500)
s2 <- var(d_sp500)
s <- sd(d_sp500)*Retornos (Continuo) [R_t=\text{ln}(P_t/P_{t-1})] Se puede demostrar que:
[R_t=\text{ln}(1+r_t)] calcula los retornos por medio de la diferencia de logaritmos con la función diff de la variable tsSP500 hacia el objeto l_sp500. Tambien estimación de Parámetros de la media (mean), varianza (var) y la desviacion estandar (sd) de los retornos de la serie de tiempo del l_sp500.
Muestra el histograma y densidad de los retornos de la serie de tiempo del l_sp500.
x<-seq(-0.1,0.1,by=0.01)
hist(
l_sp500,prob=TRUE,ylim=c(0,80),xlim = c(-0.1,0.1),breaks = 50,col = "grey94",
main = c("Histograma de los retornos"),
xlab = expression(r==ln(P[t]/P[t-1])),
ylab=c("Densidad"),
)
lines(density(l_sp500),lwd=1.5,lty=2)
curve(dnorm(x,mean=mu,sd=s),lwd=2,lty=2,col="red",add = T)Test de normalidad:
##
## Shapiro-Wilk normality test
##
## data: l_sp500
## W = 0.9384, p-value < 0.00000000000000022
##
## One-sample Kolmogorov-Smirnov test
##
## data: l_sp500
## D = 0.10578, p-value = 0.000000000001214
## alternative hypothesis: two-sided
##
## Jarque Bera Test
##
## data: l_sp500
## X-squared = 827.87, df = 2, p-value < 0.00000000000000022
Analiza la serie temporal, calcula (y por defecto las gráficas) estimaciones de la función de autocorrelación retrasada de una serie del tsSP500.
Analiza la serie temporalde la diferencia de logaritmos con 1 rezago, calcula (y por defecto las gráficas) estimaciones de la función de autocorrelación retrasada de una serie del tsSP500.
Es un calculo del riesgo del mercado donde muestra el límite tal que la probabilidad de que una pérdida sucediera en un horizonte temporal dado.
Primero se realiza el un objeto que incluya el cuantil produce cuantiles de muestra correspondientes a las probabilidades dadas (0.01) de la serie de tiempo l_sp500. Segundo se calcula la media de de la serie l_sp500. y por ultimo se calcula la varianza con exponencial de q1 luego lo restamos -1 para finalmente multiplicarlo por 100000.
## [1] -0.02578941
Generando numeros aleatoria en set.seed de 1000. Para hallar la variable aleatoria se requiere aplicar al objeto VARp la función de distribución, función cuantil y generación aleatoria para la distribución normal con media igual a mu y desviación estándar igual a sd. y por ultimo en terminos discretos al objeto VARp lo elevamos al exponencial y lo restamos -1.
## [1] -0.01936982
## [1] -0.01918343
La siguiente funcion nos permite realizar el grafico de la distribucion de los retornos simulados de una N(0.001,0.064) y con los datos reales, donde la curva roja hasta la linea roja es de x= -0.0194 es de 1% que representa la probabilidad que los retornos bajen en el punto señalado.
x<-seq(-0.2,0.2,by=0.001)
plot(density(l_sp500),col="blue",main = c("Distribucion de los retornos de IBM"))
lines(x,dnorm(x,mu,s),col="red", lty = 1,lwd = 1)
lines(rep(VARp,2),c(0,15),col="red",lwd = 1)
legend("topleft", legend = c("Datos reales", "Simulacion de una N(0.001,0.064)"),
col = c("blue", "red"), lty = 1, cex = 0.8)en el siguiente se estima una simular (10\ 000) observaciones con media en mu y desviacion estandar en s y obtener los retornos esperados en el percentil 1 (0.01). luego se calcula en terminos discretos al objeto VARp lo elevamos al exponencial y lo restamos -1.
## 1%
## -0.01926252
## 1%
## -0.01907819
Las simulaciones de Monte Carlo tienen en cuenta simular el proceso del factor de riesgo y fija el precio de la opción, que representa adecuadamente la no linealidad.
VAR.mc <- numeric()
for (i in 1:1000) {
changes <- rnorm(length(l_sp500),mean=1+mu,sd=s)
sim.ts <- cumprod(c(as.numeric(tsSP500[1]),changes))
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R,0.01,na.rm = T)
sim.VAR <- exp(sim.q)-1
VAR.mc[i] <- sim.VAR
}
mean(VAR.mc)## [1] -0.01918019
## [1] 0.0008715275
## 2.5%
## -0.020978
## 97.5%
## -0.01757655
CVAR (ES)
## [1] -2.326348
## [1] -0.02260227
El riesgo absoluto: definido como el producto de la desviación estandar de los rendimientos (\sigma(R_p)) multiplicado por el precio (p)
sd(rendimientos) * precios = σ(Rp) * p
## [1] 17.42424
El riesgo relativo: definido por la diferencia de desviaciones estandar del activo que nos interesa (\sigma(R_p)) con un activo de comparación (benchmark) (\sigma(R_b)) multiplicado por el precio (p). Notar, que en este caso estamos usando como benchmark los rendimientos del S&P500
sd((l_sp500) - (benchmark)) * precio = σ(Rp - Rb) *p
Sharpe-Ratio (SR)
la relación de Sharpe (SR), que es la relación del promedio tasa de rendimiento, μ ( Rp ), en exceso de la tasa libre de riesgo Rf , al riesgo absoluto: SR = [μ(Rp) - Rf] /σ(Rp) La relación de Sharpe se centra en el riesgo total medido en términos absolutos. Este enfoque puede ampliarse para incluir VAR en el denominador en lugar de la volatilidad de devoluciones.
Supongamos que (Rf=0.13) entonces:
## [1] -4.674422