library(xts)
library(zoo)
library(quantmod)
library(zoo)
library(quadprog)
Parte 1. Teoría de Markowitz:
Cree un reporte que le permita construir la frontera eficiente (todos los portafolios de mínima varianza dado un nivel de retorno esperado) tomando 10 acciones de cualquiera de los siguientes mercados: STOXX50, FTSE100, DAX30, SP500, RUSSELL2000. Justificar brevemente los activos escogidos. El periodo de análisis comprende desde Dic-2015 a Dic-2020. Analizar brevemente los resultados obtenidos.
Nota: esta aplicación se debe hacer sin y con restricciones en corto.
Parte 2. Teoría de Sharpe:
Tomando la misma información anterior, cree un reporte que le permita obtener el portafolio tangente, es decir, el portafolio de máximo Sharpe. Presentar los resultados de forma gráfica, incluyendo los pesos del portafolio tangente. Analizar brevemente los resultados obtenidos.
Nota: esta aplicación se debe hacer sin y con restricciones en corto.
Para la creacion de la frontera eficiente , se palntea un portafolio compuesto por activos diversificados los cuales pertenecen a diferentes sectores e industrias con el objetivo de minimizar el riesgo que puede asumir un inversionista.
Por lo tanto, los activos seleccionados se presentan a continuacion:
Las acciones tomadas son
Esta es la accion de Bayer, la cual es una empresa farmaceutica de las más grandes y exitosas del mundo. Es la creadora de la aspirina y fue fundada en 1863. Percibió unos 43.500 millones de euros en ingresos en el 2019 y actualemnte su acción se cotiza en 47.55 Euros.
Esta es la accion qe pertenece a la empresa fabricante de automoviles y motos BMW. BMW es una de las empresas alemanas con mayor produccion y venta de automoviles de lujo, compitiendo contra Audi, Mercedez y Lexus.
Para el año 2019 recibió mas de 53.000 millones en ingresos y su accion en este momneto se cotiza en 79.72 Euros.
La accion CCH.L pertenece a Coca-Cola Hellenic Bottling Company S.A la cual es la segunda embotelladora más grande del mundo de la bebida CocaCola. Esta presente en mas de 28 países y fue creada despues de la fusión de la compañía Hellenic Bottling Company S.A., con sede en Atenas, con Coca-Cola Beverages plc.
Esta es la accion de la empresa de tabacalera Brithis American Tobbaco Company, la cual es propietaria de grandes marcas como Dunhill, LuckyStrike entre otras. Es una de las mas grandes del mundo y sus ingresos anuales en 2020 fueron de 25.78 miles de millones GBP. Su accion se cotiza en 2,712 GBX.
Rolls-Royce Holdings es una =sociedad anónima creada en febrero del 2011 la cual es deuña de la fabricante de autopmoviles Rolls-Royce, ademas de esto es fabricante de motortes aeronatuticos y ha tenido varios contratos en el sector de la defensa.
La accion se cotiza en 114,14 GBX
Es la accion del grupo Allianz el cual es un de los grupos financieros mas grande de Alemania y más importantes del mundo. Este grupo en el año 2021 alcanzo los 106.000 millones de euros en ingresos. Para el 2020 alcanzo 140.000 millones de euros en ingresos.
La accion se cotiza en 197,42 euros
Es la accion de la empresa Air Liquide, la cual es una multinacional francesa que se dedica a la produccion y distrtibucion de la energía. Asi mismo, se dedica a la innovación dentro de este mimso secytor. Tiene ingrezsos por 20.000 millones de euros para el año 2020
La accion se cotiza en 152.40 euros
Adidas Ag es una de las empresas productoras y distribuidoras de implementos deportivos. Es una de las más famosas y solo esta detrás de su mayor competidor que es Nike. Realiza todo tipon de eventos y patrocina deportistas al rededor del mundo. En 2018 ingreso 20.000 millones de euros
Su accion se cotiza en 303.45 euros
Henkel es una empresa manufacturera de productos quimicos e industriales fundada en Alemania en el año 1876. Tiene ingresos de 19.000 millones de euros.
La accion se cotiza en 82.48 euros
Orange es una de las empresas mas grandes de telecomunicaciones con sede en francia. Maneja todo tipo de servicios, desde telefonía fija y movil, internet y televisión satelital. Para el 2019 recibió 40.000 millones de euros en ingresos
Su accion se cotiza en 9.6 euros
Conociendo estas acciones y a que grupos empresariales pertenece, se porcederá a optimizar este portafolio de acciones y determinar cuanto peso tiene cada una de estas acciones y si se logra reducir el riesgo.
# Algoritmo de optimizacion
# Modelo MV
# Ruta de trabajo
setwd("C:/Users/FamiliaEspinosa/Desktop/U- EXTERNADO 6.0/Teoria de portafolios/r")
rm(list=ls())
activos <- c("BAYN.DE", "BMW.DE", "CCH.L", "BATS.L", "RR.L", "ALV.DE", "AI.PA", "ADS.DE","HEN3.DE","ORA.PA")
# Carga de datos
fechai <- "2015-12-01"
fechaf <- "2021-01-01"
periodicidad <- "monthly"
f.precios <- function(activos,fechai,fechaf,periodicidad){
precios <- xts()
for(i in 1:length(activos)){
aux <- Ad(getSymbols(activos[i],from=fechai,to=fechaf,
periodicity=periodicidad,auto.assign=FALSE))
aux <- na.approx(aux,na.rm=FALSE) # Interpolación de datos con NA
precios <- cbind(precios,aux)
}
colnames(precios) <- activos
tclass(precios) <- "Date"
return(precios)
}
precios=f.precios(activos,fechai,fechaf,periodicidad)
# Calculos del modelo MV
retornos <- diff(log(precios))[-1] #[-1]: na.omit
cov <- cov(retornos) # Covarianzas - para anualizar cov*12
mu <- colMeans(retornos) # Retornos esperados
var <- diag(cov) # Varianzas
sigma <- sqrt(var) # Desviacion estandar
n <- length(mu)
ones <- rep(1,n)
x <- t(mu)%*%solve(cov)%*%mu # solve: obtener la matriz inversa
y <- t(mu)%*%solve(cov)%*%ones
z <- t(ones)%*%solve(cov)%*%ones
d <- x*z - y^2
g <- (solve(cov,ones)%*%x-solve(cov,mu)%*%y)%*%solve(d)
h <- (solve(cov,mu)%*%z-solve(cov,ones)%*%y)%*%solve(d)
nport <- 100
Rp <- seq(min(mu),max(mu),length=nport)
wpo <- matrix(0,nrow=nport,ncol=n)
sigmapo <- matrix(0,nrow=nport)
rpo <- matrix(0,nrow=nport)
for(i in 1:nport){
wi <- g + h * Rp[i]
sigmapo[i] <- sqrt(t(wi)%*%cov%*%wi)
rpo[i] <- t(wi)%*%mu
wpo[i,] <- t(wi)
}
# PMV
wpmv <- solve(cov,ones)%*%(1/z)
sigmapmv <- sqrt(t(wpmv)%*%cov%*%wpmv)
rpmv <- t(wpmv)%*%mu
plot(sigma,mu,main="Plano riesgo retorno",xlim=c(0,max(sigma)))
lines(sigmapo,rpo,col="blue")
points(sigmapmv,rpmv)
text(sigmapmv,rpmv,labels = "PMV",pos = 2)
text(sigma,mu,labels = activos,pos = 2,cex=0.6)
rownames(wpmv) <- activos
barplot(t(wpmv))
A partir de la frontera eficiente en la que encontramos la solucion exacta en la optimizacion, se evidencia que esta misma presenta una inclinacion considerable y que al mismo tiempo se encuentra a una distancia considrable de varios de los activos seleccionados. De esta manera, podemos ver que efectivamente se logra una eliminacion del riesgo importante debido a la diversificacion en los activos como se menciono anteriormente.
Asimismo, dentro de los activos seleccionados solo 4 de ellos presentan retornos esperados positivos considerables junto a un riesgo promedio superior al 5%. Tambien, observamos que activos como Bayer y Rolls-Royce Holdings presentan unos retornos esperados negativos y a su vez son los activos de mayor riesgo con valores cercanos al 10% y 15% respectivamente.
Ahora , el inversionista cuenta con un mejor criterio para invertir bajo un menor riesgo respecto a la desicion de invertir en un solo activo
Rf=0
sharp.activos=(mu-Rf)/sigma
r.ordenados=sort(sharp.activos,decreasing = TRUE)
r.ordenados
## ADS.DE AI.PA CCH.L ALV.DE BATS.L BMW.DE
## 0.25815492 0.21625586 0.11365451 0.08326945 -0.01426170 -0.01930507
## HEN3.DE RR.L ORA.PA BAYN.DE
## -0.02465425 -0.06762388 -0.06830905 -0.11445873
Organizamos los activos bajo el criterio del mayor sharpe para que de esta manera se logre establecer los activos con la mejor relacion riesgo retorno. Del mismo modo, podemos obsrervar los coeficientes de sharpe negativos que representan unos riesgos y unas perdidas, lo cual sera de utilidad para restringir el conjunto de los activos.
Vemos que los activos que se destacan son Adidas, L’Air Liquide S.A, Coca-Cola HBC y Allianz SE.
n.activos=4
nombres=c(names(r.ordenados[1:n.activos]))
retornos.tbn=cbind(retornos[,nombres])
cov <- cov(retornos.tbn) # Covarianzas
mu <- colMeans(retornos.tbn) # Retornos esperados
var <- diag(cov) # Varianzas
sigma <- sqrt(var) # Desviacion estandar
# COnstrucción de los protafolios optimos
# wi = g + h x Rp
n <- length(mu)
ones <- rep(1,n)
x <- t(mu)%*%solve(cov)%*%mu # solve: obtener la matriz inversa
y <- t(mu)%*%solve(cov)%*%ones
z <- t(ones)%*%solve(cov)%*%ones
d <- x*z - y^2
g <- (solve(cov,ones)%*%x-solve(cov,mu)%*%y)%*%solve(d)
h <- (solve(cov,mu)%*%z-solve(cov,ones)%*%y)%*%solve(d)
nport <- 100
Rp <- seq(min(mu),max(mu),length=nport)
wpo <- matrix(0,nrow=nport,ncol=n)
sigmapo <- matrix(0,nrow=nport)
rpo <- matrix(0,nrow=nport)
for(i in 1:nport){
wi <- g + h * Rp[i]
sigmapo[i] <- sqrt(t(wi)%*%cov%*%wi)
rpo[i] <- t(wi)%*%mu
wpo[i,] <- t(wi)
}
# PMV
wpmv <- solve(cov,ones)%*%(1/z)
sigmapmv <- sqrt(t(wpmv)%*%cov%*%wpmv)
rpmv <- t(wpmv)%*%mu
plot(sigma,mu,main="Plano riesgo retorno",xlim=c(0,max(sigma)))
lines(sigmapo,rpo,col="blue")
points(sigmapmv,rpmv)
text(sigmapmv,rpmv,labels = "PMV",pos = 2)
text(sigma,mu,labels = activos,pos = 2,cex=0.6)
rownames(wpmv) <- nombres
barplot(t(wpmv))
A partir de los resultados, vemos que gran parte del portafolio optimo define el mayor peso para el activo de L’Air Liquide S.A. que es una empresa la cual se desempeña dentro de la industria quimica y medicinal, por lo que tiene una correlacion casi que nula respecto a los otros activos. Sin embargo, la aseguradora del Grupo Allianz en este caso esta aportando una cantidad de riesgo considerable al portafolio y por ende cuenta con un peso negativo.
## Portafolio Tangente - Modelo de Sharpe
er <- mu-Rf
zi <- solve(cov,er)
wpt <- zi/sum(zi)
barplot(wpt)
rpt <- t(wpt)%*%mu
sigmapt <- sqrt(t(wpt)%*%cov%*%wpt)
plot(sigma,mu,main="Plano riesgo retorno",xlim=c(0,max(sigma)))
lines(sigmapo,rpo,col="blue")
points(sigmapmv,rpmv)
text(sigmapmv,rpmv,labels = "PMV",pos = 2)
text(sigma,mu,labels = activos,pos = 2,cex=0.6)
points(sigmapt,rpt)
text(sigmapt,rpt,labels = "T",pos = 2)
Ahora, con el portafolio tangente señalado dentro de la frontera eficiente, se observa que la aseguradora del Grupo Allianz continua presentando una participacion negativa bastante considerable, es decir, que a pesar de que tenga una buena relacion riesgo-retorno tambien las covarianzas definidas con alguno de los activos puede ser alta. Por otra parte, obsefvamos en los demas activos que la participacion esta en su mayoria concentrada en L’Air Liquide S.A. y Adidas
Dmat <- cov*2
dvec <- rep(0,n)
Amat <- cbind(mu,ones,diag(1,nrow=n)) # Ajustar
nport <- 100
Rp <- seq(min(mu),max(mu),length=nport)
wpo2 <- matrix(0,nrow=nport,ncol=n)
sigmapo2 <- matrix(0,nrow=nport)
rpo2 <- matrix(0,nrow=nport)
for(i in 1:nport){
bvec <- c(Rp[i],1,rep(0,n)) # Ajustar
wi <- solve.QP(Dmat, dvec, Amat, bvec, meq=0)
wi <- wi[["solution"]]
sigmapo2[i] <- sqrt(t(wi)%*%cov%*%wi)
rpo2[i] <- t(wi)%*%mu
wpo2[i,] <- t(wi)
}
wpmv2=wpo2[1,]
sigmapmv2=sqrt(t(wpmv2)%*%cov%*%wpmv2)
rpmv2=mu%*%wpmv2
sharpe.port2 <- (rpo2-Rf)/sigmapo2
tabla <- cbind(sharpe.port2,wpo2)
sort.tabla <- tabla[order(-tabla[,1]),]
port.maxsharpe2 <- sort.tabla[1,]
wpt2 <- port.maxsharpe2[2:length(port.maxsharpe2)] # Aproximacion
wpt2 <- round(wpt2,6)
sigmat2=sqrt(t(wpt2)%*%cov%*%wpt2)
rt2=mu%*%wpt2
plot(sigma,mu,main="Plano riesgo retorno",xlim=c(0,max(sigma)))
lines(sigmapo,rpo,col="blue")
points(sigmapmv,rpmv)
text(sigmapmv,rpmv,labels = "PMV",pos = 2)
text(sigma,mu,labels = activos,pos = 2,cex=0.6)
points(sigmapt,rpt)
text(sigmapt,rpt,labels = "T",pos = 2)
lines(sigmapo2,rpo2,col="red")
points(sigmapmv2,rpmv2)
text(sigmapmv2,rpmv2,labels = "PMV",pos = 2)
points(sigmat2,rt2)
text(sigmat2,rt2,labels = "T",pos = 2)
names(wpt2)= names(wpt)
par(mfrow=c(1,2))
barplot(wpt,main="Portafolio T sin restricciones en cortos")
barplot(wpt2,main="Portafolio T con restricciones en cortos")
A partir de los resultados obtenidos, evidenciamos que la frontera eficiente con restricciones de cortos (la cual indica una solucion aproximada), muestra un desplazamiento a la derecha que significa que el portafolio ahora tiene menos capacidad de minimizar el riesgo y por ende es menos efectiva la diversificacion. Lo anterior se relaciona con la gran la concentracion en la participacion que tienen solo 2 activos: Adidas (aproximadamente 45%) y L’Air Liquide S.A (aproximadamente 55%), por lo tanto, las restricciones generaron una gran diferencia en la forma en que se distribuyen los activos dentro del portafolio
Finalmente, es importante resaltar que al introducir la restriccion adicional de los cortos, los pesos en el portafolio se reducen a la mitad, donde la alta concentracion genera que se pierda la eficiencia dentro del mismo.