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
- 20
- 10
- 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
- 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
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
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
- 20.0100793900687
- 10.0003133762384
- 17.0023570764449
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
- 4
- 0
- 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
- 0
- 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
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
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
- 4.00179684593861
- 0
- 2.00024053446162
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
- 5
- 1
- 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
- 0
- 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
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
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
- 5.00208130721835
- 1.00083998242338
- 3.0002405500786
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
- 32
- 17
- 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
- 0
- 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
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
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
- 32.0139471948101
- 17.0028680508645
- 25.0031545412919
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 |