Siguiendo con la entrada anterior Análisis y optimización de portafolios con R (I), ahora calcularé la frontera eficiente, portafolio eficiente y el portafolio tangente u óptimo con R.

espcartera<-portfolioSpec()

setRiskFreeRate(espcartera)<- -0.001 ##Rentabilidad Activo Libre de Riesgo
setNFrontierPoints(espcartera) <- 20

Al no indicar las especificaciones de la cartera, la función portfolioSpec() toma los valores por defecto, por consiguiente, el tipo de modelo para calcular el portafolio eficiente es el de media-varianza (MV) o modelo de Markowitz.

Por otro lado, se debe especificar la tasa del activo libre de riesgo, la cual en el modelo de media-varianza influye en la conformación de los portafolios eficientes, y consecuentemente del portafolio óptimo o tangente.

Ahora añado algunas restricciones: supongamos que únicamente se permiten posiciones en largo (LongOnly):

constraints="LongOnly"

Calculo y dibujo la frontera eficiente:

Frontera <- portfolioFrontier(as.timeSeries(Rendimientos),spec=espcartera,constraints )
Frontera
## 
## Title:
##  MV Portfolio Frontier 
##  Estimator:         covEstimator 
##  Solver:            solveRquadprog 
##  Optimize:          minRisk 
##  Constraints:       LongOnly 
##  Portfolio Points:  5 of 20 
## 
## Portfolio Weights:
##      AAPL    XOM     HD    JPM    JNJ
## 1  0.0000 1.0000 0.0000 0.0000 0.0000
## 5  0.0132 0.3852 0.0000 0.0000 0.6016
## 10 0.0940 0.1448 0.2063 0.0000 0.5549
## 15 0.1697 0.0000 0.4640 0.0000 0.3663
## 20 0.0000 0.0000 1.0000 0.0000 0.0000
## 
## Covariance Risk Budgets:
##      AAPL    XOM     HD    JPM    JNJ
## 1  0.0000 1.0000 0.0000 0.0000 0.0000
## 5  0.0094 0.4191 0.0000 0.0000 0.5715
## 10 0.0978 0.1384 0.2165 0.0000 0.5474
## 15 0.1880 0.0000 0.5472 0.0000 0.2649
## 20 0.0000 0.0000 1.0000 0.0000 0.0000
## 
## Target Returns and Risks:
##      mean    Cov   CVaR    VaR
## 1  0.0002 0.0116 0.0273 0.0189
## 5  0.0003 0.0089 0.0209 0.0140
## 10 0.0005 0.0085 0.0205 0.0142
## 15 0.0007 0.0093 0.0219 0.0148
## 20 0.0009 0.0125 0.0283 0.0201

frontierPlot(Frontera)
grid()
tangencyPoints(Frontera, pch = 19, col = "red", cex=2)
tangencyLines(Frontera, col="darkgreen", pch=19, cex=2)
minvariancePoints(Frontera, col="blue", pch=19, cex=2)
monteCarloPoints(Frontera, mCsteps=500, col="green", cex=0.001)

plot of chunk unnamed-chunk-67

En el gráfico de la frontera eficiente, los círculos negros corresponden a portafolios eficientes; el punto rojo representa el portafolio tangente y el punto azul el portafolio con la menor varianza, esto es, el punto con el riesgo más pequeño de la frontera eficiente, denominado portafolio con la mínima varianza global (Minimum Variance Portfolio – MVP).

Los puntos verdes corresponden a posibles portafolios generados mediante simulación de Montecarlo y la línea de color verde oscuro representa la línea tangente, que como se ve, sobre esta se encuentra el portafolio tangente.

A continuación, dibujo los pesos de los portafolios ubicados en la frontera eficiente:

col <- qualiPalette(ncol(Rendimientos), "Dark2")
weightsPlot(Frontera, col=col)

plot of chunk unnamed-chunk-68

Calculo un portafolio o cartera eficiente, el cual como se ha expuesto anteriormente, es un portafolio que se encuentra en la frontera eficiente:

efPortfolio <- efficientPortfolio(as.timeSeries(Rendimientos),espcartera,constraints)
efPortfolio 
## 
## Title:
##  MV Efficient Portfolio 
##  Estimator:         covEstimator 
##  Solver:            solveRquadprog 
##  Optimize:          minRisk 
##  Constraints:       LongOnly 
## 
## Portfolio Weights:
##   AAPL    XOM     HD    JPM    JNJ 
## 0.0810 0.1878 0.1660 0.0000 0.5651 
## 
## Covariance Risk Budgets:
##   AAPL    XOM     HD    JPM    JNJ 
## 0.0810 0.1878 0.1660 0.0000 0.5651 
## 
## Target Returns and Risks:
##   mean    Cov   CVaR    VaR 
## 0.0005 0.0085 0.0204 0.0140 

Calculo el portafolio o cartera tangente, el cual es el portafolio con la relación rentabilidad-riesgo más alta de la frontera eficiente.

Este cálculo, se realiza minimizando el ratio o índice de Sharpe (Sharpe Ratio) para una tasa libre de riesgo dada, por lo que se obtiene el portafolio con el ratio de Sharpe más elevado. El ratio de Sharpe muestra la rentabilidad ajustada por la tasa libre de riesgo y el riesgo de la covarianza.

tgPortfolio <- tangencyPortfolio(as.timeSeries(Rendimientos),espcartera,constraints)
tgPortfolio
## 
## Title:
##  MV Tangency Portfolio 
##  Estimator:         covEstimator 
##  Solver:            solveRquadprog 
##  Optimize:          minRisk 
##  Constraints:       LongOnly 
## 
## Portfolio Weights:
##   AAPL    XOM     HD    JPM    JNJ 
## 0.1456 0.0000 0.3717 0.0000 0.4827 
## 
## Covariance Risk Budgets:
##   AAPL    XOM     HD    JPM    JNJ 
## 0.1613 0.0000 0.4300 0.0000 0.4086 
## 
## Target Returns and Risks:
##   mean    Cov   CVaR    VaR 
## 0.0007 0.0089 0.0211 0.0142 

Grafico el portafolio eficiente y portafolio tangente:

weightsPie(efPortfolio, col=col )
mtext(text = "Portafolio eficiente", side = 3, line = 1.5,
        font = 2, cex = 0.7, adj = 0)

plot of chunk unnamed-chunk-71

weightsPie(tgPortfolio, col=col)
mtext(text = "Portafolio tangente", side = 3, line = 1.5,
        font = 2, cex = 0.7, adj = 0)

plot of chunk unnamed-chunk-71

Por lo anterior, la cartera o portafolio eficiente estaría conformado por:

  • Acción de AAPL con un peso del 8.1%.
  • Acción de XOM con un peso del 18.78%.
  • Acción de HD con un peso del 16.6%.
  • Acción de JNP con un peso del 56.51%.

Por último, la cartera o portafolio tangente estaría conformado por:

  • Acción de AAPL con un peso del 14.56%.
  • Acción de HD con un peso del 37.17%.
  • Acción de JNP con un peso del 48.27%.
Análisis y optimización de portafolios con R (II)https://i1.wp.com/finanzaszone.com/wp-content/uploads/2019/08/Frontera-eficiente.jpg?fit=690%2C442&ssl=1https://i1.wp.com/finanzaszone.com/wp-content/uploads/2019/08/Frontera-eficiente.jpg?resize=150%2C150&ssl=1Conney Marulanda LópezMercados FinancierosPortafoliosRAdministración de Portafolios,Estructuración de Portafolios de Inversión,Optimización de portafolios,Portafolio Eficiente,RSiguiendo con la entrada anterior Análisis y optimización de portafolios con R (I), ahora calcularé la frontera eficiente, portafolio eficiente y el portafolio tangente u óptimo con R. espcartera<-portfolioSpec() setRiskFreeRate(espcartera)<- -0.001 ##Rentabilidad Activo Libre de Riesgo setNFrontierPoints(espcartera) <- 20 Al no indicar las especificaciones de la cartera, la función portfolioSpec() toma los valores...Finanzas, Economía, Trading y R