Puntaje de López - VaR Delta-Normal#

Importar datos.#

datos = read.csv("Tres acciones.csv", sep = ";")

Matriz de precios.#

precios = datos[,-1]

Proporciones de inversión.#

proporciones = c(0.25,0.5,0.25)

Matriz de rendimientos.#

rendimientos = matrix(, nrow(precios)-1, ncol(precios))

for(i in 1:ncol(precios)){

  rendimientos[,i] = diff(log(precios[,i]))
}

Rendimientos portafolio de inversión#

rendimientos_portafolio = vector()

for(i in 1:nrow(rendimientos)){

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

Horizonte de tiempo de un día#

t = 1

Backtesting método VaR Delta-Normal (NC = 95% y H = 250)#

NC = 0.95

Ventana para Backtesting#

ventana_backtesting = 250

rendimientos_backtesting = matrix(, ventana_backtesting, ncol(rendimientos))

for(i in 1:ncol(rendimientos)){

rendimientos_backtesting[,i] = rendimientos[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos)), i]
}

#Para el portafolio de Inversión

rendimientos_backtesting_portafolio = rendimientos_portafolio[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos))]

Volatilidad histórica y rendimiento medio (NC = 95% y H = 250)#

volatilidad_historica = matrix(, ventana_backtesting, ncol(rendimientos))

rendimiento_medio = matrix(, ventana_backtesting, ncol(rendimientos))

for(j in 1:ncol(rendimientos)){

  for(i in 1:ventana_backtesting){

    volatilidad_historica[i,j] = sd(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])

    rendimiento_medio[i,j] = mean(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])
 }
}

VaR Delta-Normal para Backtesting (NC = 95% y H = 250)#

VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(i in 1:ncol(rendimientos)){

    VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)

    VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}

Excepciones VaR Delta-Normal (NC = 95% y H = 250)#

excepciones_sin_promedios = vector()

excepciones_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

 excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

 excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

}

p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting

p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting

excepciones_sin_promedios

excepciones_con_promedios
  1. 17
  2. 6
  3. 15
  1. 17
  2. 7
  3. 16

Prueba de Kupiec VaR Delta-Normal (NC = 95% y H = 250)#

tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)

tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios = vector()

aprobados_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

    aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico,aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)

    aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico,aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
  }

aprobados_sin_promedios

aprobados_con_promedios
  1. 1
  2. 0
  3. 1
  1. 1
  2. 0
  3. 1

Volatilidad y rendimiento medio del portafolio (NC = 95% y H = 250)#

volatilidad_historica_portafolio = vector()

rendimiento_medio_portafolio = vector()

for(i in 1:ventana_backtesting){

    volatilidad_historica_portafolio[i] = sd(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])

    rendimiento_medio_portafolio[i] = mean(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])
}

VaR Delta-Normal del portafolio de inversión para Backtesting (NC = 95% y H = 250)#

VaR_portafolio_sin_promedios = vector()

VaR_portafolio_con_promedios = vector()

for(i in 1:ventana_backtesting){

    VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)

    VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))

}

Excepciones VaR Delta-Normal del portafolio de inversión (NC = 95% y H = 250)#

excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))

excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting

p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting

excepciones_sin_promedios_portafolio

excepciones_con_promedios_portafolio
88

Prueba de Kupiec VaR Delta-Normal del portafolio de inversión (NC = 95% y H = 250)#

tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)

tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico, aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)

aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1, aprobados_con_promedios_portafolio <- 0)

aprobados_sin_promedios_portafolio

aprobados_con_promedios_portafolio
11

Puntaje de López#

Compara los métodos del VaR utilizados y escoge el modelo más adecuado.

Utiliza una función de pérdidas (\(C_t\)) para asignar puntaje a cada observación dependiendo si la pérdida del día excede el VaR o no.

Los métodos de VaR con mayor puntaje serán considerados como los de cobertura más débiles.

1

1#

\(𝐶_𝑡:\) Puntaje asignado a la pérdida que excede el VaR.

\(𝐿_𝑡:\) Valor de la pérdida real del día \(t\) en valor absoluto.

\(𝑉𝑎𝑅_𝑡:\) Valor en Riesgo del día \(t\).

2

2#

El método que minimice esta sumatoria proveerá la mejor cobertura condicionada.

Puntaje de López - VaR Delta-Normal (NC = 95% y H = 250)#

lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(j in 1:ncol(rendimientos)){

  for(i in 1:ventana_backtesting){

    ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)

    ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)


  }
}

puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))

puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))

puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)

puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)

puntaje_lopez_sin_promedios

puntaje_lopez_con_promedios

puntaje_lopez_sin_promedios_portafolio

puntaje_lopez_con_promedios_portafolio
  1. 17.008975741454
  2. 6.00019579925925
  3. 15.0021205275282
  1. 17.0090693230293
  2. 7.00021210746552
  3. 16.0021880560683
8.000695139464048.0007217329587

Backtesting método VaR Delta-Normal (NC = 99% y H = 250)#

NC = 0.99

VaR Delta-Normal para Backtesting (NC = 99% y H = 250)#

VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(i in 1:ncol(rendimientos)){

    VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)

    VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}

Excepciones VaR Delta-Normal (NC = 99% y H = 250)#

excepciones_sin_promedios = vector()

excepciones_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

 excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

 excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

}

p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting

p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting

excepciones_sin_promedios

excepciones_con_promedios
  1. 7
  2. 0
  3. 4
  1. 7
  2. 1
  3. 4

Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 250)#

tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)

tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios = vector()

aprobados_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

    aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico,aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)

    aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico, aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
  }

aprobados_sin_promedios

aprobados_con_promedios
  1. 1
  2. 0
  3. 1
  1. 1
  2. 1
  3. 1

VaR Delta-Normal para Backtesting del portafolio de inversión (NC = 99% y H = 250)#

VaR_portafolio_sin_promedios = vector()
VaR_portafolio_con_promedios = vector()

for(i in 1:ventana_backtesting){

    VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)

    VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))

}

Excepciones VaR Delta-Normal del portafolio de inversión (NC = 99% y H = 250)#

excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))

excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting

p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting

excepciones_sin_promedios_portafolio

excepciones_con_promedios_portafolio
22

Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 250)#

tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)

tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico, aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)

aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1, aprobados_con_promedios_portafolio <- 0)

aprobados_sin_promedios_portafolio

aprobados_con_promedios_portafolio
11

Puntaje de López - VaR Delta-Normal (NC = 99% y H = 250)#

lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(j in 1:ncol(rendimientos)){

  for(i in 1:ventana_backtesting){

    ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)

    ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)


  }
}

puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))

puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))

puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)
puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)

puntaje_lopez_sin_promedios

puntaje_lopez_con_promedios

puntaje_lopez_sin_promedios_portafolio

puntaje_lopez_con_promedios_portafolio
  1. 7.00397064315263
  2. 0
  3. 4.00064241285639
  1. 7.00401163260812
  2. 1.00000000278114
  3. 4.00066428484215
2.000144459161132.00015154099775

Backtesting método VaR Delta-Normal (NC = 99% y H = 500)#

NC = 0.99

Ventana para Backtesting#

ventana_backtesting = 500

rendimientos_backtesting = matrix(, ventana_backtesting, ncol(rendimientos))

for(i in 1:ncol(rendimientos)){

rendimientos_backtesting[,i] = rendimientos[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos)), i]
}

#Para el portafolio de Inversión

rendimientos_backtesting_portafolio = rendimientos_portafolio[-c(nrow(rendimientos)-ventana_backtesting:nrow(rendimientos))]

Volatilidad histórica y rendimiento medio (NC = 99% y H = 500)#

volatilidad_historica = matrix(, ventana_backtesting, ncol(rendimientos))

rendimiento_medio = matrix(, ventana_backtesting, ncol(rendimientos))

for(j in 1:ncol(rendimientos)){

  for(i in 1:ventana_backtesting){

    volatilidad_historica[i,j] = sd(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])

    rendimiento_medio[i,j] = mean(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i), j])
 }
}

VaR Delta-Normal para Backtesting (NC = 99% y H = 500)#

VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(i in 1:ncol(rendimientos)){

    VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)

    VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}

Excepciones VaR Delta-Normal (NC = 99% y H = 500)#

excepciones_sin_promedios = vector()

excepciones_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

 excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

 excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

}

p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting

p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting

excepciones_sin_promedios

excepciones_con_promedios
  1. 12
  2. 2
  3. 6
  1. 12
  2. 3
  3. 6

Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 500)#

tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)

tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios = vector()

aprobados_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

    aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico,aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)

    aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico,aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
  }

aprobados_sin_promedios

aprobados_con_promedios
  1. 1
  2. 1
  3. 1
  1. 1
  2. 1
  3. 1

Volatilidad y rendimiento medio del portafolio (NC = 99% y H = 500)#

volatilidad_historica_portafolio = vector()

rendimiento_medio_portafolio = vector()

for(i in 1:ventana_backtesting){

    volatilidad_historica_portafolio[i] = sd(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])

    rendimiento_medio_portafolio[i] = mean(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)])
}

VaR Delta-Normal para Backtesting del portafolio de inversión (NC = 99% y H = 500)#

VaR_portafolio_sin_promedios = vector()

VaR_portafolio_con_promedios = vector()

for(i in 1:ventana_backtesting){

    VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)

    VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))

}

Excepciones VaR Delta-Normal del portafolio de inversión (NC = 99% y H = 500)#

excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))

excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting

p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting

excepciones_sin_promedios_portafolio

excepciones_con_promedios_portafolio
55

Prueba de Kupiec VaR Delta-Normal (NC = 99% y H = 500)#

tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)

tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico, aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)

aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1,aprobados_con_promedios_portafolio <- 0)

aprobados_sin_promedios_portafolio

aprobados_con_promedios_portafolio
11

Puntaje de López - VaR Delta-Normal (NC = 99% y H = 500)#

lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))
lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(j in 1:ncol(rendimientos)){

  for(i in 1:ventana_backtesting){

    ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)

    ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)


  }
}

puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))

puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))

puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)
puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)

puntaje_lopez_sin_promedios

puntaje_lopez_con_promedios

puntaje_lopez_sin_promedios_portafolio

puntaje_lopez_con_promedios_portafolio
  1. 12.0048175999161
  2. 2.00116655363073
  3. 6.00073327511721
  1. 12.0048672309775
  2. 3.00118419466552
  3. 6.0007622227941
5.000289561005645.00030436976491

Backtesting método VaR Delta-Normal (NC = 95% y H = 500)#

NC = 0.95

VaR Delta-Normal para Backtesting (NC = 95% y H = 500)#

VaR_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

VaR_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(i in 1:ncol(rendimientos)){

    VaR_sin_promedios[,i] = volatilidad_historica[,i]*qnorm(NC)*sqrt(t)

    VaR_con_promedios[,i] = abs(qnorm(1-NC, mean = rendimiento_medio[,i]*t, sd = volatilidad_historica[,i]*sqrt(t)))
}

Excepciones VaR Delta-Normal (NC = 95% y H = 500)#

excepciones_sin_promedios = vector()

excepciones_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

 excepciones_sin_promedios[i] = sum(ifelse(-VaR_sin_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

 excepciones_con_promedios[i] = sum(ifelse(-VaR_con_promedios[,i] > rendimientos_backtesting[,i], 1, 0))

}

p.gorro_sin_promedios = excepciones_sin_promedios/ventana_backtesting

p.gorro_con_promedios = excepciones_con_promedios/ventana_backtesting

excepciones_sin_promedios

excepciones_con_promedios
  1. 28
  2. 12
  3. 22
  1. 28
  2. 13
  3. 23

Prueba de Kupiec VaR Delta-Normal (NC = 95% y H = 500)#

tu_sin_promedios = (p.gorro_sin_promedios-(1-NC))/sqrt(p.gorro_sin_promedios*(1-p.gorro_sin_promedios)/ventana_backtesting)

tu_con_promedios = (p.gorro_con_promedios-(1-NC))/sqrt(p.gorro_con_promedios*(1-p.gorro_con_promedios)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios = vector()

aprobados_con_promedios = vector()

for(i in 1:ncol(rendimientos)){

    aprobados_sin_promedios[i] = ifelse(abs(tu_sin_promedios[i]) < tu_critico, aprobados_sin_promedios[i] <- 1, aprobados_sin_promedios[i] <- 0)

    aprobados_con_promedios[i] = ifelse(abs(tu_con_promedios[i]) < tu_critico, aprobados_con_promedios[i] <- 1, aprobados_con_promedios[i] <- 0)
  }

aprobados_sin_promedios

aprobados_con_promedios
  1. 1
  2. 0
  3. 1
  1. 1
  2. 0
  3. 1

VaR Delta-Normal para Backtesting del portafolio de inversión (NC = 95% y H = 500)#

VaR_portafolio_sin_promedios = vector()

VaR_portafolio_con_promedios = vector()

for(i in 1:ventana_backtesting){

    VaR_portafolio_sin_promedios[i] = volatilidad_historica_portafolio[i]*qnorm(NC)*sqrt(t)

    VaR_portafolio_con_promedios[i] = abs(qnorm(1-NC, mean = rendimiento_medio_portafolio[i], sd = volatilidad_historica_portafolio[i]))

}

Excepciones VaR Delta-Normal del portafolio de inversión (NC = 95% y H = 500)#

excepciones_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, 1, 0))

excepciones_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_sin_promedios_portafolio = excepciones_sin_promedios_portafolio/ventana_backtesting

p.gorro_con_promedios_portafolio = excepciones_con_promedios_portafolio/ventana_backtesting

excepciones_sin_promedios_portafolio

excepciones_con_promedios_portafolio
1515

Prueba de Kupiec VaR Delta-Normal (NC = 95% y H = 500)#

tu_sin_promedios_portafolio = (p.gorro_sin_promedios_portafolio-(1-NC))/sqrt(p.gorro_sin_promedios_portafolio*(1-p.gorro_sin_promedios_portafolio)/ventana_backtesting)

tu_con_promedios_portafolio = (p.gorro_con_promedios_portafolio-(1-NC))/sqrt(p.gorro_con_promedios_portafolio*(1-p.gorro_con_promedios_portafolio)/ventana_backtesting)

tu_critico = abs(qt((1-NC)/2, ventana_backtesting-1))

aprobados_sin_promedios_portafolio = ifelse(abs(tu_sin_promedios_portafolio) < tu_critico ,aprobados_sin_promedios_portafolio <- 1, aprobados_sin_promedios_portafolio <- 0)

aprobados_con_promedios_portafolio = ifelse(abs(tu_con_promedios_portafolio) < tu_critico, aprobados_con_promedios_portafolio <- 1, aprobados_con_promedios_portafolio <- 0)

aprobados_sin_promedios_portafolio

aprobados_con_promedios_portafolio
00

Puntaje de López - VaR Delta-Normal (NC = 95% y H = 500)#

lopez_sin_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

lopez_con_promedios = matrix(, ventana_backtesting, ncol(rendimientos))

for(j in 1:ncol(rendimientos)){

  for(i in 1:ventana_backtesting){

    ifelse(-VaR_sin_promedios[i,j] > rendimientos_backtesting[i,j], lopez_sin_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_sin_promedios[i,j])^2, lopez_sin_promedios[i,j] <- 0)

    ifelse(-VaR_con_promedios[i,j] > rendimientos_backtesting[i,j], lopez_con_promedios[i,j] <- 1+(abs(rendimientos_backtesting[i,j])-VaR_con_promedios[i,j])^2, lopez_con_promedios[i,j] <- 0)


  }
}

puntaje_lopez_sin_promedios_portafolio = sum(ifelse(-VaR_portafolio_sin_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_sin_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_sin_promedios)^2, puntaje_lopez_sin_promedios_portafolio <- 0))

puntaje_lopez_con_promedios_portafolio = sum(ifelse(-VaR_portafolio_con_promedios > rendimientos_backtesting_portafolio, puntaje_lopez_con_promedios_portafolio <- 1+(abs(rendimientos_backtesting_portafolio)-VaR_portafolio_con_promedios)^2, puntaje_lopez_con_promedios_portafolio <- 0))

puntaje_lopez_sin_promedios = apply(lopez_sin_promedios, 2, sum)

puntaje_lopez_con_promedios = apply(lopez_con_promedios, 2, sum)

puntaje_lopez_sin_promedios

puntaje_lopez_con_promedios

puntaje_lopez_sin_promedios_portafolio

puntaje_lopez_con_promedios_portafolio
  1. 28.0121628743772
  2. 12.0024838071261
  3. 22.0028070302842
  1. 28.0122864992852
  2. 13.0025357660379
  3. 23.0029038116054
15.001439412939415.0014909723498

Conclusión general:#

ECO

PFBCOLOMB

ISA

Portafolio*

VaR sin promedios, NC = 95% y H = 250

Aceptado

Rechazado

Aceptado

Aceptado

VaR con promedios, NC = 95% y H = 250

Aceptado

Rechazado

Aceptado

Aceptado

VaR sin promedios, NC = 95% y H = 500

Aceptado

Rechazado

Aceptado

Rechazado

VaR con promedios, NC = 95% y H = 500

Aceptado

Rechazado

Aceptado

Rechazado

VaR sin promedios, NC = 99% y H = 250

Aceptado

Rechazado

Aceptado

Aceptado

VaR con promedios, NC = 99% y H = 250

Aceptado

Aceptado

Aceptado

Aceptado

VaR sin promedios, NC = 99% y H = 500

Aceptado

Aceptado

Aceptado

Aceptado

VaR con promedios, NC = 99% y H = 500

Aceptado

Aceptado

Aceptado

Aceptado

Puntaje de López#

ECO

P FBCOLOMB

ISA

Po rtafolio

VaR sin promedios, NC = 95% y H = 250

1 7,008975741454

6,0001 9579925925

15,002 1205275282

8,0006 9513946404

VaR con promedios, NC = 95% y H = 250

17 ,0090693230293

7,0002 1210746552

16,002 1880560683

8,000 7217329587

VaR sin promedios, NC = 95% y H = 500

12 ,0048175999161

2,001 1665536307

6,0007 3327511721

5,0002 8956100564

VaR con promedios, NC = 95% y H = 500

12 ,0048672309775

3,0011 8419466552

6,000 7622227941

5,0003 0436976491

VaR sin promedios, NC = 99% y H = 250

7, 00397064315263

0

4,0006 4241285639

2,0001 4445916113

VaR con promedios, NC = 99% y H = 250

7, 00401163260812

1,0000 0000278114

4,0006 6428484215

2,0001 5154099775

VaR sin promedios, NC = 99% y H = 500

12 ,0048175999161

2,0011 6655363073

6,0007 3327511721

5,0002 8956100564

VaR con promedios, NC = 99% y H = 500

12 ,0048672309775

3,0011 8419466552

6,000 7622227941

5,0003 0436976491