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
- 17
- 6
- 15
- 17
- 7
- 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
- 0
- 1
- 1
- 0
- 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
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
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.
\(𝐶_𝑡:\) 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\).
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
- 17.008975741454
- 6.00019579925925
- 15.0021205275282
- 17.0090693230293
- 7.00021210746552
- 16.0021880560683
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
- 7
- 0
- 4
- 7
- 1
- 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
- 0
- 1
- 1
- 1
- 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
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
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
- 7.00397064315263
- 0
- 4.00064241285639
- 7.00401163260812
- 1.00000000278114
- 4.00066428484215
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
- 12
- 2
- 6
- 12
- 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
- 1
- 1
- 1
- 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
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
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
- 12.0048175999161
- 2.00116655363073
- 6.00073327511721
- 12.0048672309775
- 3.00118419466552
- 6.0007622227941
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
- 28
- 12
- 22
- 28
- 13
- 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
- 0
- 1
- 1
- 0
- 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
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
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
- 28.0121628743772
- 12.0024838071261
- 22.0028070302842
- 28.0122864992852
- 13.0025357660379
- 23.0029038116054
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 |