VaR Simulación Histórica - Método no paramétrico#

No asume que las rentabilidades siguen una distribución normal por lo que es posible reflejar la distribución de rentabilidades.

En vez de utilizar la información histórica para calcular volatilidades y covarianzas de los activos, con este método se utilizan las pérdidas y ganancias que se habría experimentado durante un período de tiempo determinado.

Se analiza cuáles habrían sido las rentabilidades hipotéticas en el pasado si se hubiera tenido el activo o el portafolio actual. Con las pérdidas experimentadas en el pasado se puede concluir sobre el riesgo esperado a partir de este momento.

Con las pérdidas y ganancias hipotéticas para cada día del período de observación, se genera la distribución esperada (distribución empírica) y se toman los percentiles de la distribución de rentabilidades como medida directa del VaR. Esta distribución no se basa en la hipótesis de normalidad.

Lo ocurrido en el período de la muestra de rentabilidades observadas recoge toda la información suficiente para estimar el riesgo futuro.

Recomendación: mínimo datos de un año.

Se parte del supuesto de que en el futuro los mercados se comportarán de forma parecida al pasado.

Se puede considerar período de inestabilidad en los mercados.

Los resultados del análisis pueden variar considerablemente dependiendo de la elección de la longitud de la muestra y la frecuencia de observaciones utilizadas.

No es posible extrapolar los resultados del análisis a otros horizontes temporales. Es necesario volver a calcular los percentiles de la distribución de rentabilidades y llevar a cabo el análisis de nuevo para diferentes plazos.

Importar datos#

datos = read.csv("Tres acciones.csv", sep = ";", header = T)
head(datos)
tail(datos)
A data.frame: 6 × 4
FechaECOPFBCOLOMISA
<fct><int><int><int>
111/01/20081995168007000
214/01/20081960163806810
315/01/20081905158806890
416/01/20081860159806710
517/01/20081755159006590
618/01/20081725153406320
A data.frame: 6 × 4
FechaECOPFBCOLOMISA
<fct><int><int><int>
281122/07/201930304126019000
281223/07/201930154202019160
281324/07/201930004128019300
281425/07/201930004130019800
281526/07/201929804116019200
281629/07/201929804130018960

Matriz de precios#

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

Nombres de las acciones#

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

Matriz de rendimientos#

rendimientos = diff(log(precios))

Cantidad de acciones#

acciones = ncol(precios)
acciones
3

Cantidad de rendimientos#

numero_rendimientos = nrow(rendimientos)
numero_rendimientos
2815

VaR simulación historica#

VaR diario con un nivel de confianza del 95% NC = 0.95 #### Proporciones de inversión. proporciones=c(0.25, 0.4, 0.35)

ECO: 25%

PFBCOLOM: 40%

ISA: 35%

NC = 0.95
proporciones = c(0.25, 0.4, 0.35)
valor_portafolio = 100000000
valor_mercado_acciones = proporciones*valor_portafolio

Con un nivel de confianza del 95%, se debe esoger el rendimiento que se encuentra en el 5% de los rendimientos más bajos.

Se usa la función quantile() para hallar el percentil del 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_individuales_SH_percentil
  1. 725237.852255347
  2. 979379.265539478
  3. 862800.178664044

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)*valor_portafolio)
VaR_portafolio_SH_percentil
5%: 1892558.8139104