Puntaje de López - VaR Simulación Histórica#

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 Simulación Histórica (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))]

VaR Simulación Histórica para Backtesting (NC = 95% y H = 250)#

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

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

  for(i in 1:ventana_backtesting){

        VaR_SH_percentil[i,j] = abs(quantile(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i),j], 1-NC))

 }
}

Excepciones VaR Simulación Histórica (NC = 95% y H = 250)#

excepciones_SH_percentil = vector()

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

excepciones_SH_percentil[i] = sum(ifelse(-VaR_SH_percentil[,i] > rendimientos_backtesting[,i], 1, 0))

}

p.gorro_SH_percentil = excepciones_SH_percentil/ventana_backtesting

excepciones_SH_percentil
  1. 20
  2. 10
  3. 17

Prueba de Kupiec VaR Simulación Histórica (NC = 95% y H = 250)#

tu_SH_percentil = (p.gorro_SH_percentil-(1-NC))/sqrt(p.gorro_SH_percentil*(1-p.gorro_SH_percentil)/ventana_backtesting)

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

aprobados_SH_percentil=vector()

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

    aprobados_SH_percentil[i] = ifelse(abs(tu_SH_percentil[i]) < tu_critico,aprobados_SH_percentil[i] <- 1, aprobados_SH_percentil[i] <- 0)
}

aprobados_SH_percentil
  1. 1
  2. 1
  3. 1

VaR Simulación Histórica para Backtesting del portafolio de inversión (NC = 95% y H = 250)#

VaR_SH_percentil_portafolio = vector()

  for(i in 1:ventana_backtesting){

    VaR_SH_percentil_portafolio[i] = abs(quantile(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)], 1-NC))
}

Excepciones VaR Simulación Histórica del portafolio de inversión (NC = 95% y H = 250)#

excepciones_SH_percentil_portafolio = sum(ifelse(-VaR_SH_percentil_portafolio > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_SH_percentil_portafolio = excepciones_SH_percentil_portafolio/ventana_backtesting

excepciones_SH_percentil_portafolio
11

Prueba de Kupiec VaR Simulación Histórica del portafolio de inversión (NC = 95% y H = 250)#

tu_SH_percentil_portafolio = (p.gorro_SH_percentil_portafolio-(1-NC))/sqrt(p.gorro_SH_percentil_portafolio*(1-p.gorro_SH_percentil_portafolio)/ventana_backtesting)

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

aprobados_SH_percentil_portafolio = ifelse(abs(tu_SH_percentil_portafolio) < tu_critico, aprobados_SH_percentil_portafolio <- 1, aprobados_SH_percentil_portafolio <- 0)

aprobados_SH_percentil_portafolio
1

Puntaje de López - VaR Simulación Histórica (NC = 95% y H = 250)#

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

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

  for(i in 1:ventana_backtesting){

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

  }
}

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

puntaje_lopez_SH_percentil = apply(lopez_SH_percentil, 2, sum)

puntaje_lopez_SH_percentil

puntaje_lopez_SH_percentil_portafolio
  1. 20.0100793900687
  2. 10.0003133762384
  3. 17.0023570764449
11.0009070565652

Backtesting método VaR Simulación Histórica (NC = 99% y H = 250)#

NC = 0.99

VaR Simulación Histórica para Backtesting (NC = 99% y H = 250)#

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

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

  for(i in 1:ventana_backtesting){

        VaR_SH_percentil[i,j] = abs(quantile(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i),j], 1-NC))

 }
}

Excepciones VaR Simulación Histórica (NC = 99% y H = 250)#

excepciones_SH_percentil = vector()

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

excepciones_SH_percentil[i] = sum(ifelse(-VaR_SH_percentil[,i]>rendimientos_backtesting[,i], 1, 0))

}

p.gorro_SH_percentil = excepciones_SH_percentil/ventana_backtesting

excepciones_SH_percentil
  1. 4
  2. 0
  3. 2

Prueba de Kupiec VaR Simulación Histórica (NC = 99% y H = 250)#

tu_SH_percentil = (p.gorro_SH_percentil-(1-NC))/sqrt(p.gorro_SH_percentil*(1-p.gorro_SH_percentil)/ventana_backtesting)

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

aprobados_SH_percentil = vector()

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

    aprobados_SH_percentil[i] = ifelse(abs(tu_SH_percentil[i]) < tu_critico, aprobados_SH_percentil[i] <- 1, aprobados_SH_percentil[i] <- 0)
}

aprobados_SH_percentil
  1. 1
  2. 0
  3. 1

VaR Simulación Histórica para Backtesting del portafolio de inversión (NC = 99% y H = 250)#

VaR_SH_percentil_portafolio = vector()

  for(i in 1:ventana_backtesting){

    VaR_SH_percentil_portafolio[i] = abs(quantile(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)], 1-NC))
}

Excepciones VaR Simulación Histórica del portafolio de inversión (NC = 99% y H = 250)#

excepciones_SH_percentil_portafolio = sum(ifelse(-VaR_SH_percentil_portafolio > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_SH_percentil_portafolio = excepciones_SH_percentil_portafolio/ventana_backtesting

excepciones_SH_percentil_portafolio

p.gorro_SH_percentil_portafolio
20.008

Prueba de Kupiec VaR Simulación Histórica del portafolio de inversión (NC = 99% y H = 250)#

tu_SH_percentil_portafolio = (p.gorro_SH_percentil_portafolio-(1-NC))/sqrt(p.gorro_SH_percentil_portafolio*(1-p.gorro_SH_percentil_portafolio)/ventana_backtesting)

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

aprobados_SH_percentil_portafolio = ifelse(abs(tu_SH_percentil_portafolio) < tu_critico, aprobados_SH_percentil_portafolio <- 1, aprobados_SH_percentil_portafolio <- 0)

aprobados_SH_percentil_portafolio
1

Puntaje de López - VaR Simulación Histórica (NC = 99% y H = 250)#

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

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

  for(i in 1:ventana_backtesting){

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

  }
}

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

puntaje_lopez_SH_percentil = apply(lopez_SH_percentil, 2, sum)

puntaje_lopez_SH_percentil

puntaje_lopez_SH_percentil_portafolio
  1. 4.00179684593861
  2. 0
  3. 2.00024053446162
2.00003436732289

Backtesting método VaR Simulación Histórica (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))]

VaR Simulación Histórica para Backtesting (NC = 99% y H = 500)#

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

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

  for(i in 1:ventana_backtesting){

        VaR_SH_percentil[i,j] = abs(quantile(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i),j], 1-NC))

 }
}

Excepciones VaR Simulación Histórica (NC = 99% y H = 500)#

excepciones_SH_percentil = vector()

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

excepciones_SH_percentil[i] = sum(ifelse(-VaR_SH_percentil[,i] > rendimientos_backtesting[,i], 1, 0))

}

p.gorro_SH_percentil = excepciones_SH_percentil/ventana_backtesting

excepciones_SH_percentil
  1. 5
  2. 1
  3. 3

Prueba de Kupiec VaR Simulación Histórica (NC = 99% y H = 500)#

tu_SH_percentil = (p.gorro_SH_percentil-(1-NC))/sqrt(p.gorro_SH_percentil*(1-p.gorro_SH_percentil)/ventana_backtesting)

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

aprobados_SH_percentil = vector()

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

    aprobados_SH_percentil[i] = ifelse(abs(tu_SH_percentil[i]) < tu_critico, aprobados_SH_percentil[i] <- 1, aprobados_SH_percentil[i] <- 0)
}

aprobados_SH_percentil
  1. 1
  2. 0
  3. 1

VaR Simulación Histórica para Backtesting del portafolio de inversión (NC = 99% y H = 500)#

VaR_SH_percentil_portafolio = vector()

  for(i in 1:ventana_backtesting){

    VaR_SH_percentil_portafolio[i] = abs(quantile(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)], 1-NC))
}

Excepciones VaR Simulación Histórica del portafolio de inversión (NC = 99% y H = 500)#

excepciones_SH_percentil_portafolio = sum(ifelse(-VaR_SH_percentil_portafolio > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_SH_percentil_portafolio = excepciones_SH_percentil_portafolio/ventana_backtesting

excepciones_SH_percentil_portafolio
4

Prueba de Kupiec VaR Simulación Histórica del portafolio de inversión (NC = 99% y H = 500)#

tu_SH_percentil_portafolio = (p.gorro_SH_percentil_portafolio-(1-NC))/sqrt(p.gorro_SH_percentil_portafolio*(1-p.gorro_SH_percentil_portafolio)/ventana_backtesting)

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

aprobados_SH_percentil_portafolio = ifelse(abs(tu_SH_percentil_portafolio) < tu_critico, aprobados_SH_percentil_portafolio <- 1, aprobados_SH_percentil_portafolio <- 0)

aprobados_SH_percentil_portafolio
1

Puntaje de López - VaR Simulación Histórica (NC = 99% y H = 500)#

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

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

  for(i in 1:ventana_backtesting){

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

  }
}

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

puntaje_lopez_SH_percentil = apply(lopez_SH_percentil, 2, sum)

puntaje_lopez_SH_percentil

puntaje_lopez_SH_percentil_portafolio
  1. 5.00208130721835
  2. 1.00083998242338
  3. 3.0002405500786
4.00007239002439

Backtesting método VaR Simulación Histórica (NC = 95% y H = 500)#

NC = 0.95

VaR Simulación Histórica para Backtesting (NC = 95% y H = 500)#

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

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

  for(i in 1:ventana_backtesting){

        VaR_SH_percentil[i,j] = abs(quantile(rendimientos[1:(nrow(rendimientos)-ventana_backtesting+i),j], 1-NC))

 }
}

Excepciones VaR Simulación Histórica (NC = 95% y H = 500)#

excepciones_SH_percentil = vector()

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

excepciones_SH_percentil[i] = sum(ifelse(-VaR_SH_percentil[,i] > rendimientos_backtesting[,i], 1, 0))

}

p.gorro_SH_percentil = excepciones_SH_percentil/ventana_backtesting

excepciones_SH_percentil
  1. 32
  2. 17
  3. 25

Prueba de Kupiec VaR Simulación Histórica (NC = 95% y H = 500)#

tu_SH_percentil = (p.gorro_SH_percentil-(1-NC))/sqrt(p.gorro_SH_percentil*(1-p.gorro_SH_percentil)/ventana_backtesting)

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

aprobados_SH_percentil = vector()

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

    aprobados_SH_percentil[i] = ifelse(abs(tu_SH_percentil[i]) < tu_critico, aprobados_SH_percentil[i] <- 1, aprobados_SH_percentil[i] <- 0)
}

aprobados_SH_percentil
  1. 1
  2. 0
  3. 1

VaR Simulación Histórica para Backtesting del portafolio de inversión (NC = 95% y H = 500)#

VaR_SH_percentil_portafolio = vector()

  for(i in 1:ventana_backtesting){

    VaR_SH_percentil_portafolio[i] = abs(quantile(rendimientos_portafolio[1:(nrow(rendimientos)-ventana_backtesting+i)], 1-NC))
}

Excepciones VaR Simulación Histórica del portafolio de inversión (NC = 95% y H = 500)#

excepciones_SH_percentil_portafolio = sum(ifelse(-VaR_SH_percentil_portafolio > rendimientos_backtesting_portafolio, 1, 0))

p.gorro_SH_percentil_portafolio = excepciones_SH_percentil_portafolio/ventana_backtesting

excepciones_SH_percentil_portafolio
19

Prueba de Kupiec VaR Simulación Histórica del portafolio de inversión (NC = 95% y H = 500)#

tu_SH_percentil_portafolio = (p.gorro_SH_percentil_portafolio-(1-NC))/sqrt(p.gorro_SH_percentil_portafolio*(1-p.gorro_SH_percentil_portafolio)/ventana_backtesting)

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

aprobados_SH_percentil_portafolio = ifelse(abs(tu_SH_percentil_portafolio) < tu_critico, aprobados_SH_percentil_portafolio <- 1, aprobados_SH_percentil_portafolio <- 0)

aprobados_SH_percentil_portafolio
1

Puntaje de López - VaR Simulación Histórica (NC = 95% y H = 500)#

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

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

  for(i in 1:ventana_backtesting){

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

  }
}

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

puntaje_lopez_SH_percentil = apply(lopez_SH_percentil, 2, sum)

puntaje_lopez_SH_percentil

puntaje_lopez_SH_percentil_portafolio
  1. 32.0139471948101
  2. 17.0028680508645
  3. 25.0031545412919
19.0018755053324

Conclusión general:#

ECO

PFBCOLOMB

ISA

Portafolio

NC = 95% y H = 250

Aceptado

Aceptado

Aceptado

Aceptado

NC = 95% y H = 500

Aceptado

Rechazado

Aceptado

Aceptado

NC = 99% y H = 250

Aceptado

Rechazado

Aceptado

Aceptado

NC = 99% y H = 500

Aceptado

Rechazado

Aceptado

Aceptado

Puntaje de López#

ECO

P FBCOLOMB

ISA

Po rtafolio

NC = 95% y H = 250

20 ,0100793900687

10,000 3133762384

17,002 3570764449

11,000 9070565652

NC = 95% y H = 500

32 ,0139471948101

17,002 8680508645

25,003 1545412919

19,001 8755053324

NC = 99% y H = 250

4, 00179684593861

0

2,0002 4053446162

2,0000 3436732289

NC = 99% y H = 500

5, 00208130721835

1,0008 3998242338

3,000 2405500786

4,0000 7239002439