La
siguiente entrada forma parte de un conjunto de entradas donde se exponen
diversas metodologías para estimar el Valor en Riesgo (VaR). En el caso de la estimación
Monte Carlo, se simulan posibles trayectorias de rentabilidades ficticias para
la serie de precios de interés. En nuestro caso utilizaremos las distribuciones
normal y t-student, para simular n posibles rendimientos pseudo-aleatorios de
nuestro vector de rentabilidades, aproximado los parámetros de esta función a
partir de valores históricos de la serie de rendimientos.
library(ggfortify)
library(ggplot2)
library(forecast)
library(tseries)
library(gridExtra)
DAX <- EuStockMarkets[,"DAX"]
returnx <- diff(log(DAX))*100
autoplot(returnx)
# 1. Obtener los
momentos de las series
Er
<- mean(returnx)
Vr
<- sd(returnx)
# 2. Generar
rendimientos aleatorios
n<-10000
p <- runif(n, min=0, max=1)
RsimuladoN <- qnorm(p,Er,Vr)
# ********************************************
# 3.1 Var Monte
Carlo - Normal
# ********************************************
alpha <- 0.01
VaRMonteCarlo <- quantile(RsimuladoN,alpha)
> VaRMonteCarlo
1%
-2.356055
# ********************************************
# 3.1 Var Monte
Carlo - t
# ********************************************
RsimuladoT <- qt(p,glb)
VaRMonteCarloT <- quantile(RsimuladoT,alpha)
VaRMonteCarloT
1%
-2.352612
Estas
estimaciones del VaR se pueden comparar con las estimaciones más tradicionales
del VaR.
# ********************************************
# 3.3 Var paramétrico
# ********************************************
# VaR incondicional: enfoque Delta-Normal
VaRNormal <- Er + sqrt(Vr) * qnorm(alpha)
# VaR incondicional: enfoque Delta-t-student
glb <- length(returnx)-1
VaRt <- Er + sqrt(Vr) * qt(alpha,glb)
# ********************************************
# 3.4 Var histórico
# ********************************************
VaRhist <- quantile(returnx,alpha)
# ********************************************
# 4. Resultados del
VaR
# ********************************************
vars <-
t(c(VaRNormal,VaRt,VaRhist,VaRMonteCarlo,VaRMonteCarloT))
colnames(vars)<- c("VaR Normal paramétrico",
"VaR t paramétrico",
"VaR histórico",
"VaR Monte Carlo Normal",
"VaR Monte Carlo t")
print(t(vars))
[,1]
VaR Normal paramétrico -2.295877
VaR t paramétrico -2.297916
VaR histórico -2.775251
VaR Monte Carlo Normal -2.356055
VaR Monte Carlo t -2.352612
qplot(returnx
, geom = 'histogram') +
geom_histogram(fill = 'lightblue' , bins =
30) +
geom_histogram(aes(returnx[returnx <
VaRNormal]) , fill = 'red' , bins = 30) +
geom_vline(aes(xintercept =
VaRNormal), colour="red") +
geom_vline(aes(xintercept = VaRMonteCarlo), colour="black") +
labs(x =
'Retornos diarios')