Taller VaR Simulación Histórica y CVaR#

Utilizar el archivo Datos primer examen 01-2020.csv para resolver el taller.

Importar datos#

datos = read.csv("Datos primer examen 01-2020.csv", sep = ";", header = T)
head(datos)
tail(datos)
A data.frame: 6 × 5
FechaECOISANUTRESAPFBCOLOM
<fct><int><int><dbl><dbl>
131/01/201024151228019977.220825.2
207/02/201024801254020535.421024.5
314/02/201024951274020635.121921.3
421/02/201025601288020455.622140.5
528/02/201026251270020834.521941.2
607/03/201026801260020734.821961.1
A data.frame: 6 × 5
FechaECOISANUTRESAPFBCOLOM
<fct><int><int><dbl><dbl>
51722/12/20193340193802510045800
51829/12/20193380203002528045180
51905/01/20203400196602514044380
52012/01/20203385195202518045880
52119/01/20203290193802522045800
52226/01/20203180188002476044700

Matriz de precios#

precios=datos[,-1]
precios = ts(precios)

Nombres de las acciones#

nombres = colnames(precios)
nombres
  1. 'ECO'
  2. 'ISA'
  3. 'NUTRESA'
  4. 'PFBCOLOM'

Matriz de rendimientos#

rendimientos = diff(log(precios))

Cantidad de acciones#

acciones = ncol(precios)
acciones
4

Cantidad de rendimientos#

numero_rendimientos = nrow(rendimientos)
numero_rendimientos
521

Portafolio de inversión#

El portafolio de inversión está valorado en mil millones de pesos.

Se tiene invertido la misma proporción en cada acción.

proporciones = c(0.25, 0.25, 0.25, 0.25)
valor_portafolio = 1000000000
valor_mercado_acciones = proporciones*valor_portafolio
valor_mercado_acciones
  1. 2.5e+08
  2. 2.5e+08
  3. 2.5e+08
  4. 2.5e+08

VaR Simulación Histórica y CVaR en términos porcentuales#

Nivel de confianza del 99% NC = 0.99

Horizonte de tiempo: semanal t = 1. En este método no se puede escalar el tiempo, es decir, si la frecuencia de los rendimientos es semanal, el VaR y CVaR quedan semanales. Para otros horizontes de tiempo se debe utilizar otra base de datos con frecuencia en el tiempo distinta. Por tanto, no se utiliza en el código t = 1.

NC = 0.99

VaR individuales#

VaR_individuales_SH_percentil = vector()

for(i in 1:acciones){

  VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i],1 - NC))
}

VaR_individuales_SH_percentil
  1. 0.100017529037464
  2. 0.0747062638979077
  3. 0.0623792449456534
  4. 0.0746798926612424

CVaR individuales#

CVaR = vector()

for(i in 1:acciones){

  CVaR[i] = abs(mean(tail(sort(rendimientos[,i], decreasing = T), floor(nrow(rendimientos)*(1-NC)))))
}

CVaR
  1. 0.131734096471733
  2. 0.104054311101083
  3. 0.0763919471659559
  4. 0.0898571003585143

Rendimientos del portafolio de inversión#

rendimientos_portafolio = vector()

for(i in 1:numero_rendimientos){

  rendimientos_portafolio[i] = sum(rendimientos[i,]*proporciones)
}

VaR portafolio de inversión#

VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC))
VaR_portafolio_SH_percentil
1%: 0.0570097464552412

CVaR portafolio de inversión#

CVaR_portafolio = abs(mean(tail(sort(rendimientos_portafolio, decreasing = T), floor(nrow(rendimientos)*(1 - NC)))))
CVaR_portafolio
0.0700265657963683

Preguntas#

1. Con un nivel de confianza del 99%, ¿cuál es el VaR semanal de la acción de ECO?#

NC = 0.99

VaR_individuales_SH_percentil = vector()

for(i in 1:acciones){

  VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC))
}

VaR_individuales_SH_percentil[1]

VaR_individuales_SH_percentil[1]*valor_mercado_acciones[1]
0.10001752903746425004382.259366

Respuesta en términos porcentuales: 10,00%

Respuesta en términos monetarios: $25.004.382

2. Con un nivel de confianza del 95%, ¿cuál es el VaR semanal de la acción de ECO?#

NC = 0.95

VaR_individuales_SH_percentil = vector()

for(i in 1:acciones){

  VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC))
}

VaR_individuales_SH_percentil[1]

VaR_individuales_SH_percentil[1]*valor_mercado_acciones[1]
0.063625695880211315906423.9700528

Respuesta en términos porcentuales: 6,36%

Respuesta en términos monetarios: $15.906.424

3. Con un nivel de confianza del 99%, ¿cuál es el VaR semanal de la acción de Nutresa?#

NC = 0.99

VaR_individuales_SH_percentil = vector()

for(i in 1:acciones){

  VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC))
}

VaR_individuales_SH_percentil[3]

VaR_individuales_SH_percentil[3]*valor_mercado_acciones[1]
0.062379244945653415594811.2364133

Respuesta en términos porcentuales: 6,24%

Respuesta en términos monetarios: $15.594.811

4. Con un nivel de confianza del 95%, ¿cuál es el VaR semanal de la acción de Nutresa?#

NC = 0.95

VaR_individuales_SH_percentil = vector()

for(i in 1:acciones){

  VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC))
}

VaR_individuales_SH_percentil[3]

VaR_individuales_SH_percentil[3]*valor_mercado_acciones[1]
0.03707025850404659267564.62601163

Respuesta en términos porcentuales: 3,71%

Respuesta en términos monetarios: $9.267.565

5. Con un nivel de confianza del 99%, ¿cuál es el CVaR semanal de la acción de ISA?#

NC = 0.99

CVaR = vector()

for(i in 1:acciones){

  CVaR[i] = abs(mean(tail(sort(rendimientos[,i], decreasing = T), floor(nrow(rendimientos)*(1 - NC)))))
}

CVaR[2]

CVaR[2]*valor_mercado_acciones[2]
0.10405431110108326013577.7752708

Respuesta en términos porcentuales: 10,41%

Respuesta en términos monetarios: $26.013.578

6. Con un nivel de confianza del 95%, ¿cuál es el CVaR semanal de la acción de ISA?#

NC = 0.95

CVaR = vector()

for(i in 1:acciones){

  CVaR[i] = abs(mean(tail(sort(rendimientos[,i], decreasing = T), floor(nrow(rendimientos)*(1 - NC)))))
}

CVaR[2]

CVaR[2]*valor_mercado_acciones[2]
0.070100486411536717525121.6028842

Respuesta en términos porcentuales: 7,01%

Respuesta en términos monetarios: $17.525.122

7. Con un nivel de confianza del 99%, ¿cuál es el VaR semanal del portafolio de inversión?#

NC = 0.99

VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC))
VaR_portafolio_SH_percentil
VaR_portafolio_SH_percentil*valor_portafolio
1%: 0.05700974645524121%: 57009746.4552412

Respuesta en términos porcentuales: 5,70%

Respuesta en términos monetarios: $57.009.746

8. Con un nivel de confianza del 95%, ¿cuál es el VaR semanal del portafolio de inversión?#

NC = 0.95

VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC))
VaR_portafolio_SH_percentil
VaR_portafolio_SH_percentil*valor_portafolio
5%: 0.03464909177107735%: 34649091.7710773

Respuesta en términos porcentuales: 3,46%

Respuesta en términos monetarios: $34.649.092

9. Con un nivel de confianza del 99%, ¿cuál es el CVaR semanal del portafolio de inversión?#

NC = 0.99

CVaR_portafolio = abs(mean(tail(sort(rendimientos_portafolio,decreasing = T), floor(nrow(rendimientos)*(1 - NC)))))
CVaR_portafolio
CVaR_portafolio*valor_portafolio
0.070026565796368370026565.7963683

Respuesta en términos porcentuales: 7,00%

Respuesta en términos monetarios: $70.026.566

10. Con un nivel de confianza del 99%, ¿cuál es el Beneficio por Diversificación semanal del portafolio de inversión?#

NC = 0.99

VaR_individuales_SH_percentil=vector()

for(i in 1:acciones){

  VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)*valor_mercado_acciones[i])
}

VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC))*valor_portafolio

BD = sum(VaR_individuales_SH_percentil) - VaR_portafolio_SH_percentil
BD
1%: 20935986.1803257

Respuesta: $20.935.986

11. Con un nivel de confianza del 95%, ¿cuál es el Beneficio por Diversificación semanal del portafolio de inversión?#

NC = 0.95

VaR_individuales_SH_percentil=vector()

for(i in 1:acciones){

  VaR_individuales_SH_percentil[i] = abs(quantile(rendimientos[,i], 1 - NC)*valor_mercado_acciones[i])
}

VaR_portafolio_SH_percentil = abs(quantile(rendimientos_portafolio, 1 - NC))*valor_portafolio

BD = sum(VaR_individuales_SH_percentil) - VaR_portafolio_SH_percentil
BD
5%: 15479650.510801

Respuesta: $15.479.651