VaR y CVaR para un activo por Simulación Monte Carlo#
Acción con precio actual de $5000, rendimiento esperado continuo diario de 0,14% y desviación estándar diaria de 1,8%.
En la acción se tiene invertido 250 millones de pesos.
s = 5000
mu = 0.00014 #Compuesto continuo diario.
volatilidad = 0.018 #Diaria
valor_mercado = 250000000
VaR y CVaR diarios con un nivel de confianza del 99%#
n = 1 #Un día
dt = 1
NC = 0.99
Simulación de los precios diarios#
Se creará una matriz llamada st
. Cada fila será una iteración y las
columnas representarán el tiempo. Se empezará en \(t=0\), que será
la primera columna de la matriz st
. La última columna será el
período \(T\). Así se tendrían n+1
columnas.
Ejemplo de matriz:#
En las matrices, las ubicaciones se representan de la siguiente manera:
[Filas,Columnas]
.
iteraciones = 50000
st = matrix(, iteraciones, n+1)
st[,1] = s
for(j in 2:(n+1)){
for(i in 1:iteraciones){
st[i,j] = st[i,j-1]*exp((mu-volatilidad^2/2)*dt+volatilidad*rnorm(1)*sqrt(dt)) #Precios simulados.
}
}
Rendimientos diarios simulados#
rend = st[,n+1]/s-1
VaR diario#
VaR = abs(quantile(rend, 1-NC)*valor_mercado)
VaR
CVaR diario#
CVaR = abs(mean(tail(sort(rend, decreasing = T), floor(50000*(1-NC))))*valor_mercado)
CVaR
VaR y CVaR mensual con un nivel de confianza del 90%#
n = 20 #Un mes
dt = 1
NC = 0.90
iteraciones = 50000
st = matrix(, iteraciones, n+1)
st[,1] = s
for(j in 2:(n+1)){
for(i in 1:iteraciones){
st[i,j] = st[i,j-1]*exp((mu-volatilidad^2/2)*dt+volatilidad*rnorm(1)*sqrt(dt)) #Precios simulados.
}
}
Rendimientos mensuales simulados#
rend = st[,n+1]/s-1 #Rendimientos simulados.
VaR diario#
VaR = abs(quantile(rend, 1-NC)*valor_mercado)
VaR
CVaR diario#
CVaR = abs(mean(tail(sort(rend, decreasing = T), floor(50000*(1-NC))))*valor_mercado)
CVaR