Importe los datos de la serie de precios Finjan Holdings, Inc. desde fecha inicio ‘2019-01-01’ y fecha de fin ‘2020-01-01’
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)
Calcule los retornos: 1) Continuos 2) Discretos
# 1. Simple Returns
d_FNJN <- diff(tsFNJN)/tsFNJN[-length(tsFNJN)]
dmu <- mean(d_FNJN)
# 2. Continuous Returns
l_FNJN<-diff(log(tsFNJN))
Haciendo uso de los retornos continuos. Realice un analisis descriptivo: media , varianza y desviacion estandar de la distribucion de los datos.
# Return mean
mu<-mean(l_FNJN)
# Return Variance
s2<-var(l_FNJN)
# Return Standard Deviation
s<-sd(l_FNJN)
Tomando los retornos continuos de FINJN, optenemos una media de -0.00104,una varianza (s2) de 0.0007878 lo que nos indica que tan separado se encuentre de la media; y la desviaciÓn estandar de 0.02806923.
Realice un gráfico de la distribución de los retornos (continuos) y compárelo con una distribución normal simulada a partir de la media y varianza de los retornos obtenidos en la pregunta anterior: ¿La distribución de los datos, se asemeja a una distribución normal? Analice sus resultados
# Return Distribution
x<-seq(-0.1,0.1,by=0.01)
hist(
l_FNJN,prob=TRUE,ylim=c(0,35),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_FNJN),lwd=1.5,lty=2)
curve(dnorm(x,mean=mu,sd=s),lwd=2,lty=2,col="red",add = T)
Analisando el graficos presentado podemos analizar de manera informal, que tiene una curtosis por encima de lo normal con una distribución (frecuencia o probabilidades que ocurran los retornos) leptocúrtica esto significa que los datos estan concentrados en la media (centro del grafico), siendo asi una curva muy apuntada como podemos observar. Pudiendo concluir que los eventos externos, tanto como negativos y positivos son mas probables. Entonces, este si se asemeja a una distribución normal (aunque la curtosis se vea ligeramente mas grande por encima de la distribución normal), pero se asemeja bastante a una normal. El analisis formal se realizara mediante los siguinetes tests (Question 5).
Realice el test de normalidad 1) Jarque-Bera, 2) Kolmogorov, 3) Shapiro-will. ¿Cuál es la hipóteiss nula de cada uno de estos test?. Interprete resultados
# 1. Spahiro-Wilk: H0 - normalidad
shapiro.test(l_FNJN)
##
## Shapiro-Wilk normality test
##
## data: l_FNJN
## W = 0.98252, p-value = 0.003536
# 2. Kolmogorov-Smirnov: H0 - normalidad
ks.test(unique(l_FNJN),"pnorm", mean=mu, sd=s)
##
## One-sample Kolmogorov-Smirnov test
##
## data: unique(l_FNJN)
## D = 0.072376, p-value = 0.1973
## alternative hypothesis: two-sided
# 3. Jarque-Bera: H0 - curtosis y asimetria de una normal
jarque.bera.test(l_FNJN)
##
## Jarque Bera Test
##
## data: l_FNJN
## X-squared = 15.839, df = 2, p-value = 0.0003637
El analisis para el: Test Shapiro-Wilk el p-value es de 0.003536 entonces podemos decir que rechaza la hipotesis nula (nivel de significancia 5%), al ser este menor que el 5% se rechaza la hipotesis nula. No es una distribución normal.
Test kolmogorov el p-value es de 0.1973 por lo tanto no rechaza la nula. Si es una distribución normal
Test de Jarque Bera el p-value es de 0.0003637 por lo tanto si rechaza la hipotesis nula. No es una distribución normal.
Como conclusión de manera general, realizada por los tres test se concluye que la distribución no es normal. Se rechaza que los retornos tengan una distribución normal.
# a) ############### Historical VAR
# Equity
W<-100000
# Historical VAR computation with alpha = 1%
alpha1 <- 0.01
Hq1 <- quantile(x=l_FNJN, alpha1)
mean(exp(Hq1)-1)
## [1] -0.05603738
# Result
HVAR1 <- W*(exp(Hq1)-1)
# Historical VAR computation with alpha = 5%
alpha2 <- 0.05
Hq2 <- quantile(x=l_FNJN, alpha2)
mean(exp(Hq2)-1)
## [1] -0.04243427
# Result
HVAR2 <- W*(exp(Hq2)-1)
# Historical VAR computation with alpha = 10%
alpha3 <- 0.1
Hq3 <- quantile(x=l_FNJN, alpha3)
mean(exp(Hq3)-1)
## [1] -0.03536977
# Result
HVAR3 <- W*(exp(Hq3)-1)
Asumimos una cartera de 100,000 USD, asignamos el valor de alpha 1%, pasamos a calcular y nos resulta un valor -5.603738%, luego calculamos el VAR lo cual seria nuestro valor en riesgo que se representa del 1% de significancia que es de (-5604),es lo que perderia si mis retornos caerian a -5.603738% esto representa mi riesgo de pérdida en mi inversión en monto,si perderia un 1% de la inversión.
Para alpha=5% da un valor de -4.2435427%, si asumimos una perdida de 5% a nuestro monto invertido estariamos perdiendo (-4243).
Par alpha=10% da un valor de -0.03536977%, si asumimos una perdida de 10% a nuestro monto invertido estariamos perdiendo (-3537).
# b) ############### Parametric VAR
# Parametric VAR
set.seed(1000)
# Parametric VAR with alpha = 1%
PVAR1<-qnorm(alpha1,mean = mu,sd = s,lower.tail = T);PVAR1*W
## [1] -6633.951
# Parametric VAR with alpha = 5%
PVAR2<-qnorm(alpha2,mean = mu,sd = s,lower.tail = T);PVAR2*W
## [1] -4721.049
# Parametric VAR with alpha = 10%
PVAR3<-qnorm(alpha3,mean = mu,sd = s,lower.tail = T);PVAR3*W
## [1] -3701.287
# Distribution results of the three Parametric VARs
x<-seq(-0.2,0.2,by=0.001)
plot(density(l_FNJN),col="blue",main = c("Distribucion de los retornos de IBM"))
lines(x,dnorm(x,mu,s),col="red", lty = 1,lwd = 1)
lines(rep(PVAR1,2),c(0,30),col="red",lwd = 1)
lines(rep(PVAR2,2),c(0,30),col="yellow",lwd = 1)
lines(rep(PVAR3,2),c(0,30),col="black",lwd = 1)
legend("topleft", legend = c("Datos reales", "Simulacion de una N(-0.001,0.028)"),
col = c("blue", "red"), lty = 1, cex = 0.8)
# C) ############### Monte Carlo VAR
# Monte Carlo VAR with alpha = 1%
MCVAR1.mc <- numeric()
for (i in 1:10000) {
changes <- rnorm(length(l_FNJN),mean=1+mu,sd=s)
sim.ts <- cumprod(c(as.numeric(tsFNJN[1]),changes))
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R,alpha1,na.rm = T)
sim.VAR <- exp(sim.q)-1
# Saved in a vector
MCVAR1.mc[i] <- sim.VAR
}
# Mean and sd of Simulated VARs
mean(MCVAR1.mc)
## [1] -0.06415238
sd(MCVAR1.mc)
## [1] 0.005945325
# Simulated VAR distribution graph
plot(density(MCVAR1.mc))
# Confidence Interval Requested
quantile(MCVAR1.mc,0.225)
## 22.5%
## -0.06847685
quantile(MCVAR1.mc,0.975)
## 97.5%
## -0.05340682
# Monte Carlo VAR with alpha = 5%
MCVAR2.mc <- numeric()
for (i in 1:10000) {
changes <- rnorm(length(l_FNJN),mean=1+mu,sd=s)
sim.ts <- cumprod(c(as.numeric(tsFNJN[1]),changes))
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R,alpha1,na.rm = T)
sim.VAR <- exp(sim.q)-1
# Saved in a vector
MCVAR2.mc[i] <- sim.VAR
}
# Mean and sd of Simulated VARs
mean(MCVAR2.mc)
## [1] -0.06427895
sd(MCVAR2.mc)
## [1] 0.005826004
# Simulated VAR distribution graph
plot(density(MCVAR2.mc))
# Confidence Interval Requested
quantile(MCVAR2.mc,0.225)
## 22.5%
## -0.06853389
quantile(MCVAR2.mc,0.975)
## 97.5%
## -0.05356562
# Monte Carlo VAR with alpha = 10%
MCVAR3.mc <- numeric()
for (i in 1:10000) {
changes <- rnorm(length(l_FNJN),mean=1+mu,sd=s)
sim.ts <- cumprod(c(as.numeric(tsFNJN[1]),changes))
sim.R <- diff(log(sim.ts))
sim.q <- quantile(sim.R,alpha1,na.rm = T)
sim.VAR <- exp(sim.q)-1
# Saved in a vector
MCVAR3.mc[i] <- sim.VAR
}
# Mean and sd of Simulated VARs
mean(MCVAR3.mc)
## [1] -0.06434129
sd(MCVAR3.mc)
## [1] 0.005960855
# Simulated VAR distribution graph
plot(density(MCVAR3.mc))
# Confidence Interval Requested
quantile(MCVAR3.mc,0.225)
## 22.5%
## -0.06877463
quantile(MCVAR3.mc,0.975)
## 97.5%
## -0.05345784
Estime un modelo GARCH(1,1), a partir de los resultados obtenidos calcule la varianza incondicional y la prevalencia.Interprete sus resultados.
# GARCH Estimation
#install.packages("rugarch")
require("parallel")
## Loading required package: parallel
library("rugarch")
##
## Attaching package: 'rugarch'
## The following object is masked from 'package:stats':
##
## sigma
fit = ugarchfit(spec = ugarchspec(mean.model = list(armaOrder = c(0, 0),
include.mean = TRUE),
variance.model = list(model = "sGARCH",
garchOrder = c(1, 1))), solver.control = list(tol = 1e-12),
data = l_FNJN)
fit
##
## *---------------------------------*
## * GARCH Model Fit *
## *---------------------------------*
##
## Conditional Variance Dynamics
## -----------------------------------
## GARCH Model : sGARCH(1,1)
## Mean Model : ARFIMA(0,0,0)
## Distribution : norm
##
## Optimal Parameters
## ------------------------------------
## Estimate Std. Error t value Pr(>|t|)
## mu -0.001063 0.001759 -0.60412 0.54576
## omega 0.000000 0.000002 0.12993 0.89662
## alpha1 0.000000 0.000053 0.00000 1.00000
## beta1 0.999000 0.000047 21474.05716 0.00000
##
## Robust Standard Errors:
## Estimate Std. Error t value Pr(>|t|)
## mu -0.001063 0.001810 -5.8714e-01 0.55711
## omega 0.000000 0.000007 2.9225e-02 0.97669
## alpha1 0.000000 0.000365 0.0000e+00 1.00000
## beta1 0.999000 0.000053 1.9008e+04 0.00000
##
## LogLikelihood : 541.8185
##
## Information Criteria
## ------------------------------------
##
## Akaike -4.2854
## Bayes -4.2292
## Shibata -4.2859
## Hannan-Quinn -4.2628
##
## Weighted Ljung-Box Test on Standardized Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 2.916 0.0877
## Lag[2*(p+q)+(p+q)-1][2] 3.059 0.1353
## Lag[4*(p+q)+(p+q)-1][5] 3.935 0.2623
## d.o.f=0
## H0 : No serial correlation
##
## Weighted Ljung-Box Test on Standardized Squared Residuals
## ------------------------------------
## statistic p-value
## Lag[1] 0.2627 0.6083
## Lag[2*(p+q)+(p+q)-1][5] 0.5466 0.9503
## Lag[4*(p+q)+(p+q)-1][9] 3.8402 0.6160
## d.o.f=2
##
## Weighted ARCH LM Tests
## ------------------------------------
## Statistic Shape Scale P-Value
## ARCH Lag[3] 0.1836 0.500 2.000 0.6683
## ARCH Lag[5] 0.6187 1.440 1.667 0.8481
## ARCH Lag[7] 2.1517 2.315 1.543 0.6852
##
## Nyblom stability test
## ------------------------------------
## Joint Statistic: 29.7771
## Individual Statistics:
## mu 0.09376
## omega 3.83650
## alpha1 0.05738
## beta1 0.05471
##
## Asymptotic Critical Values (10% 5% 1%)
## Joint Statistic: 1.07 1.24 1.6
## Individual Statistic: 0.35 0.47 0.75
##
## Sign Bias Test
## ------------------------------------
## t-value prob sig
## Sign Bias 1.85046 0.06545 *
## Negative Sign Bias 0.09823 0.92183
## Positive Sign Bias 0.70278 0.48286
## Joint Effect 6.79021 0.07889 *
##
##
## Adjusted Pearson Goodness-of-Fit Test:
## ------------------------------------
## group statistic p-value(g-1)
## 1 20 28.76 6.984e-02
## 2 30 65.61 1.178e-04
## 3 40 104.86 6.059e-08
## 4 50 122.90 2.784e-08
##
##
## Elapsed time : 0.3720791
# Unconditional Variance Calculation
UC <- uncvariance(fit)
UC
## [1] 0.0002049456
# Persistence
pers <- persistence(fit)
pers
## [1] 0.999
Interpretamos los resultados, podemos decir que el beta 1 es significativo. con respecto a la varianza incondicional es pequeña. la persistencia es de 0.999 se hacerca a uno. El GARCH presenta una larga persistencia es decir si analizamos la autocorrelación vamos a encontrar una persistencia enorme de muchos rezagos con respecto a la funciÓn de autocorrelación.