INTRODUCCIÓN

1. Optimización de carteras según el modelo de Markovitz

El modelo de Markowitz, desarrollado por el economista Harry Markowitz en 1952, proporciona un enfoque sistemático para la selección óptima de activos en una cartera, teniendo en cuenta tanto el rendimiento esperado como el riesgo asociado a esos activos.

En la base se encuentra la idea de que los inversores deben buscar no solo maximizar el rendimiento de su cartera, sino también minimizar el riesgo. Esto se logra mediante la construcción de carteras que combinen activos de manera que la variabilidad del rendimiento total de la cartera sea menor que la variabilidad de los rendimientos individuales de los activos que la componen. En otras palabras, el objetivo es encontrar una combinación de activos que ofrezca el mejor rendimiento esperado dado un nivel de riesgo aceptable.

Para lograr esto, el modelo de Markowitz utiliza la teoría de la cartera eficiente, que describe cómo los inversores pueden construir carteras que maximicen el rendimiento esperado para un nivel dado de riesgo o minimicen el riesgo para un nivel dado de rendimiento esperado. Esta teoría se basa en dos conceptos clave: la esperanza matemática del rendimiento y la varianza (o desviación estándar) del rendimiento.

La esperanza matemática del rendimiento es el rendimiento promedio que se espera de un activo en el futuro. La varianza (o desviación estándar) del rendimiento mide la dispersión de los rendimientos en torno a su valor esperado. En el contexto del modelo de Markowitz, la varianza se utiliza como medida de riesgo, ya que captura la volatilidad de los rendimientos de un activo.

El proceso de optimización de la cartera según el modelo de Markowitz implica varios pasos:

Los pasos del Modelo de Markowitz se pueden desglosar en los siguientes puntos:

  1. *Recopilación de datos**: se recopilan los datos históricos de rendimiento de los activos considerados para la inversión.

  2. Cálculo de la esperanza matemática del rendimiento y la varianza: se calcula la esperanza matemática del rendimiento y la varianza de cada activo individual. La esperanza matemática del rendimiento es el rendimiento promedio esperado en el futuro, mientras que la varianza mide la dispersión de los rendimientos en torno a su valor esperado.

  3. Determinación de la matriz de covarianza: mediante el calculo de las correlaciones entre los rendimientos de los diferentes activos, que se utilizan para construir una matriz de covarianza. Esta matriz describe cómo los rendimientos de los activos se mueven juntos en el tiempo y es fundamental para la optimización de la cartera.

  4. Definición de las restricciones y objetivos de la cartera: se establecen las restricciones y objetivos de la cartera, como el horizonte temporal, el nivel de riesgo tolerado y el rendimiento esperado deseado. Estas restricciones y objetivos guiarán el proceso de optimización de la cartera.

  5. Aplicación de la teoría de la cartera eficiente: se utiliza la teoría de la cartera eficiente para determinar la combinación óptima de activos que maximiza el rendimiento esperado para un nivel de riesgo dado o minimiza el riesgo para un nivel de rendimiento esperado dado.

  6. Construcción de la cartera óptima: se construye la cartera óptima que se encuentra en la “frontera eficiente”, es decir, la cartera que ofrece el mejor rendimiento esperado para cada nivel de riesgo.

  7. Monitoreo y ajuste continuo: una vez construida la cartera óptima, se monitorea continuamente su rendimiento y se realizan ajustes según sea necesario para mantenerla alineada con los objetivos y restricciones de la cartera a lo largo del tiempo.

Los principios fundamentales del Modelo de Markowitz se pueden resumir en los siguientes puntos:

  1. Diversificación: El modelo enfatiza la importancia de la diversificación de la cartera para reducir el riesgo. Al invertir en una variedad de activos con diferentes comportamientos de rendimiento, se puede mitigar el riesgo inherente a cualquier activo individual.

  2. Rendimiento esperado: Considera el rendimiento esperado de cada activo como una medida central en la toma de decisiones de inversión. El objetivo es maximizar el rendimiento total de la cartera, teniendo en cuenta las expectativas de rendimiento de cada activo.

  3. Riesgo: El riesgo se define en términos de la varianza (o desviación estándar) de los rendimientos de los activos. El modelo busca minimizar el riesgo total de la cartera al equilibrar cuidadosamente los activos con diferentes niveles de riesgo.

  4. Correlación: La correlación entre los rendimientos de los activos es un factor clave en la gestión del riesgo de la cartera. El modelo considera cómo los activos se mueven juntos en el tiempo y busca construir carteras que aprovechen la diversificación a través de correlaciones bajas o negativas entre activos.

  5. Frontera eficiente: El modelo identifica la “frontera eficiente”, que representa todas las combinaciones posibles de activos que ofrecen el mayor rendimiento esperado para un nivel dado de riesgo o el menor riesgo para un nivel dado de rendimiento esperado. La cartera óptima se encuentra en esta frontera eficiente.


2. Planteamiento del proyecto

Para este proyecto se ha contado con una serie de empresas de Renta variable estadounidense. Con el objetivo de diversificar la cartera (dado que no se hace geográficamente), se han seleccionado cinco sectores diferentes, dentro de cada uno de los cuales se incluirán dos de las empresas más importantes.

La cartera quedaría así:

Categoría Empresa
TECNOLÓGICAS Apple
Microsoft Corporation
CONSUMO Walmart Inc.
Costco Wholesale Corporation
SALUD Pfizer Inc.
Johnson & Johnson
BANCA JPMorgan Chase & Co.
Bank of America Corporation
ENERGÉTICO Galp Energia
Shell PLC
————- —————————–

El perido temporal de la extracción de datos es desde el 1 de enero de 2019 hasta el 1 de febrero de 2024.



1º) CARGAR BIBLIOTECAS

options(scipen=999)#Desactiva la notación científica

packages <- c('tseries', 'knitr', 'kableExtra', 'fPortfolio', 'timeSeries', 'quantmod', 'dplyr', 'PerformanceAnalytics', 'ggplot2', 'dplyr', 'MarkowitzR','gplots')

installed_packages <- packages %in% rownames(installed.packages())
if (any(installed_packages == FALSE)) {
  install.packages(packages[!installed_packages])
}

invisible(lapply(packages, library, character.only = TRUE))

2º) EXTRACCIÓN DE DATOS

Extracción de datos de Yahoo Finance del índice SP500, desde el 1 de enero de 2019 hasta el 1 de febrero de 2024, para ver cómo ha evolucionado la economía en los últimos 5 años

SP500<- get.hist.quote(instrument = "^GSPC",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(SP500, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de SP500 [2019-2024]")

Extracción de datos de APPLE

APPLE<- get.hist.quote(instrument = "AAPL",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(APPLE, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de APPLE [2019-2024]")

Extracción de datos de MSFT

MSFT <- get.hist.quote(instrument = "MSFT",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(MSFT, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de MSFT [2019-2024]") 

Extracción de datos de Walmart Inc.

Walmart<- get.hist.quote(instrument = "WMT",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(Walmart, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de Walmart [2019-2024]")

Extracción de datos de Costco Wholesale Corporation

Costco<- get.hist.quote(instrument = "COST",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(Costco, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de Costco [2019-2024]")

Extracción de datos de Pfizer Inc.

Pfizer<- get.hist.quote(instrument = "PFE",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(Pfizer, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de Pfizer [2019-2024]")

Extracción de datos de Johnson & Johnson

JNJ<- get.hist.quote(instrument = "JNJ",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(JNJ, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de Johnson & Johnson [2019-2024]")

Extracción de datos de JPMorgan Chase & Co.

JPMorgan<- get.hist.quote(instrument = "JPM",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(JPMorgan, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de JPMorgan Chase [2019-2024]")

Extracción de datos de Bank of America Corporation

BoA<- get.hist.quote(instrument = "BAC",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(BoA, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de Bank of America Corporation [2019-2024]") 

Extracción de datos de Galp Energia

Galp<- get.hist.quote(instrument = "GLPEF",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(Galp, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de Galp Energia [2019-2024]")

Extracción de datos de Shell PLC

Shell<- get.hist.quote(instrument = "SHEL",
                       start=as.Date("2019-01-01"),
                       end=as.Date("2024-02-01"), 
                       quote = "AdjClose",
                       provider = "yahoo",
                       compression = "m")
## time series ends   2024-01-01
plot(Shell, col="deepskyblue", xlab="Fecha", ylab="AdjClose"); title(main="Histórico de Shell PLC [2019-2024]")

Unión de datos de las diez compañías

CarteraInv <- merge(APPLE, MSFT, Walmart, Costco, Pfizer, JNJ, JPMorgan, BoA, Galp, Shell, all = FALSE) 
names(CarteraInv)
##  [1] "Adjusted.APPLE"    "Adjusted.MSFT"     "Adjusted.Walmart" 
##  [4] "Adjusted.Costco"   "Adjusted.Pfizer"   "Adjusted.JNJ"     
##  [7] "Adjusted.JPMorgan" "Adjusted.BoA"      "Adjusted.Galp"    
## [10] "Adjusted.Shell"
names(CarteraInv)<-c('APPLE', 'MSFT', 'Walmart', 'Costco', 'Pfizer', 'JNJ', 'JPMorgan', 'BoA', 'Galp', 'Shell')
plot(CarteraInv, main=" ", col="deepskyblue", xlab="Fecha")
title(main="Histórico de Cartera")


3º) CÁLCULO DE RENDIMIENTOS Y VOLATILIDAD

1. Cálculo de la matriz de rendimientos

RetornoIndice<-diff(log(SP500))
head(RetornoIndice,10)
##               Adjusted
## 2019-02-01  0.02929555
## 2019-03-01  0.01776551
## 2019-04-01  0.03856040
## 2019-05-01 -0.06804089
## 2019-06-01  0.06665830
## 2019-07-01  0.01304272
## 2019-08-01 -0.01825728
## 2019-09-01  0.01703525
## 2019-10-01  0.02022584
## 2019-11-01  0.03348027
matriz.rendimientos<-diff(log(CarteraInv))
head(matriz.rendimientos,10)
##                  APPLE        MSFT       Walmart      Costco       Pfizer
## 2019-02-01  0.03952342  0.07024951  0.0324427279  0.01896839  0.029675469
## 2019-03-01  0.09688231  0.05567108 -0.0148584248  0.10432979 -0.020508800
## 2019-04-01  0.05490071  0.10196300  0.0583805697  0.01390285 -0.044783635
## 2019-05-01 -0.13647573 -0.05444133 -0.0137068802 -0.02453164  0.022161060
## 2019-06-01  0.12652054  0.08353833  0.0907553864  0.10074315  0.051269239
## 2019-07-01  0.07361688  0.01709706 -0.0009960437  0.04212575 -0.109163852
## 2019-08-01 -0.02039042  0.01160006  0.0345476262  0.06710234 -0.088510464
## 2019-09-01  0.07421491  0.01177576  0.0428646337 -0.02060972  0.019944452
## 2019-10-01  0.10497653  0.03073882 -0.0120369578  0.03076001  0.065703175
## 2019-11-01  0.07169601  0.05436460  0.0154859361  0.01121703  0.003901925
##                    JNJ    JPMorgan         BoA        Galp        Shell
## 2019-02-01  0.02639918  0.01636289  0.02119988 -0.02315777  0.007745507
## 2019-03-01  0.02940186 -0.03045128 -0.04750462 -0.05187745  0.021110770
## 2019-04-01  0.01003615  0.13662619  0.10289248  0.03822119  0.014906797
## 2019-05-01 -0.07383573 -0.08333685 -0.13943462  0.00000000 -0.027447106
## 2019-06-01  0.06696363  0.05364997  0.08638438 -0.04322877  0.065997246
## 2019-07-01 -0.06726081  0.03687864  0.06170407  0.04001843 -0.034076403
## 2019-08-01 -0.01438652 -0.04732888 -0.10906131 -0.09081870 -0.123203803
## 2019-09-01  0.01538033  0.06884732  0.05859106  0.06673689  0.073621698
## 2019-10-01  0.02035086  0.05961940  0.07608796  0.03602113 -0.015066144
## 2019-11-01  0.04044652  0.06128739  0.06349845  0.03205404 -0.008314636
summary(matriz.rendimientos)
##      Index                APPLE               MSFT             Walmart        
##  Min.   :2019-02-01   Min.   :-0.13648   Min.   :-0.11359   Min.   :-0.17343  
##  1st Qu.:2020-04-23   1st Qu.:-0.04687   1st Qu.:-0.02147   1st Qu.:-0.01856  
##  Median :2021-07-16   Median : 0.04188   Median : 0.02652   Median : 0.01526  
##  Mean   :2021-07-16   Mean   : 0.02550   Mean   : 0.02314   Mean   : 0.01047  
##  3rd Qu.:2022-10-08   3rd Qu.: 0.09637   3rd Qu.: 0.06670   3rd Qu.: 0.04327  
##  Max.   :2024-01-01   Max.   : 0.19423   Max.   : 0.16237   Max.   : 0.09695  
##      Costco             Pfizer               JNJ               JPMorgan       
##  Min.   :-0.16659   Min.   :-0.148701   Min.   :-0.101658   Min.   :-0.25439  
##  1st Qu.:-0.02001   1st Qu.:-0.051478   1st Qu.:-0.029317   1st Qu.:-0.04015  
##  Median : 0.02762   Median :-0.012708   Median : 0.011053   Median : 0.02362  
##  Mean   : 0.02105   Mean   :-0.003429   Mean   : 0.005211   Mean   : 0.01122  
##  3rd Qu.: 0.06731   3rd Qu.: 0.035644   3rd Qu.: 0.039575   3rd Qu.: 0.06004  
##  Max.   : 0.12169   Max.   : 0.205708   Max.   : 0.134713   Max.   : 0.19353  
##       BoA                 Galp              Shell          
##  Min.   :-0.294489   Min.   :-0.28880   Min.   :-0.214656  
##  1st Qu.:-0.055378   1st Qu.:-0.06495   1st Qu.:-0.034624  
##  Median : 0.018914   Median : 0.01595   Median : 0.010912  
##  Mean   : 0.004992   Mean   : 0.00281   Mean   : 0.003924  
##  3rd Qu.: 0.073847   3rd Qu.: 0.07362   3rd Qu.: 0.046983  
##  Max.   : 0.183355   Max.   : 0.26005   Max.   : 0.281006

Cálculo del rendimiento esperado por cada acción

rendimiento.esperado = colMeans(matriz.rendimientos)
rendimiento.esperado
##        APPLE         MSFT      Walmart       Costco       Pfizer          JNJ 
##  0.025496430  0.023143273  0.010466691  0.021053513 -0.003428852  0.005211070 
##     JPMorgan          BoA         Galp        Shell 
##  0.011220266  0.004991861  0.002810310  0.003923976

Cálculo de los pesos iguales del 5% (todos los fondos tendrían el mismo peso en la cartera)

pesos.iguales = rep(0.05, 10)

Cálculo del rendimiento de todo el portafolio (transpuesta de la matriz de pesos iguales * matriz del rendimiento esperado)

rendimiento.portafolio = t(pesos.iguales)%*%rendimiento.esperado
rendimiento.portafolio
##             [,1]
## [1,] 0.005244427

2. Cálculo del la volatilidad

Cálculo de la matriz de varianza - covarianza

varianza.covarianza = cov(matriz.rendimientos)
View(varianza.covarianza)

Cálculo de la Volatilidad del portafolio (traspuesta del vector de pesos * matriz de varianza.covarianza * matriz de pesos sin trasponer)

varianza.portafolio = t(pesos.iguales)%*%(varianza.covarianza%*%pesos.iguales)
varianza.portafolio
##              [,1]
## [1,] 0.0005703236

Cálculo de la Volatilidad del portafolio

s.d.portafolio = sqrt(varianza.portafolio)
s.d.portafolio
##            [,1]
## [1,] 0.02388145

4º) MAPA DE CALOR

corr <- cor(matriz.rendimientos) * 100
corr
##               APPLE       MSFT    Walmart     Costco     Pfizer       JNJ
## APPLE    100.000000  73.409869  42.834675  58.106528  31.046264  44.61292
## MSFT      73.409869 100.000000  39.413773  53.806387  22.366053  37.51343
## Walmart   42.834675  39.413773 100.000000  61.627606  25.771258  41.83449
## Costco    58.106528  53.806387  61.627606 100.000000  31.034640  26.90866
## Pfizer    31.046264  22.366053  25.771258  31.034640 100.000000  54.03604
## JNJ       44.612924  37.513428  41.834493  26.908660  54.036038 100.00000
## JPMorgan  39.463150  36.031444  17.304030  22.707124  21.841932  35.49346
## BoA       48.669962  38.599242  23.677460  31.420332  18.958770  35.73738
## Galp       2.889964   4.358342   5.070175  -6.554490   5.905581  20.93986
## Shell     20.104989  11.182654   6.190359  -3.445154   4.190713  24.49412
##           JPMorgan       BoA       Galp      Shell
## APPLE     39.46315  48.66996   2.889964  20.104989
## MSFT      36.03144  38.59924   4.358342  11.182654
## Walmart   17.30403  23.67746   5.070175   6.190359
## Costco    22.70712  31.42033  -6.554490  -3.445154
## Pfizer    21.84193  18.95877   5.905581   4.190713
## JNJ       35.49346  35.73738  20.939860  24.494125
## JPMorgan 100.00000  91.40361  52.404291  62.773707
## BoA       91.40361 100.00000  44.670413  58.968968
## Galp      52.40429  44.67041 100.000000  61.621871
## Shell     62.77371  58.96897  61.621871 100.000000
generate_heat_map <- function(corr, title)
{

  heatmap.2(x = corr,    
            cellnote = corr,   
            main = title,           
            symm = TRUE,            
            dendrogram="none",      
            Rowv = FALSE,           
            trace="none",           
            density.info="none",        
            notecol="black")          
}

corr1 <- round(cor(matriz.rendimientos) * 100, 2)
generate_heat_map(corr1,"Mapa de calor: Correlaciones")


5º) ELABORACIÓN DE LA FRONTERA EFICIENTE

Convertir la matriz de rendimientos a una serie de tiempo

matriz.rendimientos = as.timeSeries(matriz.rendimientos)
View(matriz.rendimientos)
PerformanceAnalytics::chart.CumReturns(matriz.rendimientos,legend.loc = "topleft",
                                       main = "Precios de acciones estandarizados ")

Elaborción de la frontera eficiente (calculo la tasa libre de riesgo: setRiskFreeRate)

frontera.eficiente = portfolioFrontier(matriz.rendimientos,
  `setRiskFreeRate<-`(portfolioSpec(), 0.0217/12), 
  constraints = "LongOnly")
frontera.eficiente
## 
## Title:
##  MV Portfolio Frontier 
##  Estimator:         covEstimator 
##  Solver:            solveRquadprog 
##  Optimize:          minRisk 
##  Constraints:       LongOnly 
##  Portfolio Points:  5 of 49 
## 
## Portfolio Weights:
##     APPLE   MSFT Walmart Costco Pfizer    JNJ JPMorgan    BoA   Galp  Shell
## 1  0.0000 0.0000  0.0000 0.0000 0.9059 0.0000   0.0000 0.0000 0.0914 0.0027
## 13 0.0000 0.0000  0.2753 0.0000 0.2411 0.2663   0.0000 0.0000 0.0449 0.1724
## 25 0.0000 0.1708  0.2527 0.1364 0.0206 0.2554   0.0000 0.0000 0.0396 0.1245
## 37 0.0000 0.4417  0.1005 0.3124 0.0000 0.0264   0.0000 0.0000 0.0402 0.0788
## 49 1.0000 0.0000  0.0000 0.0000 0.0000 0.0000   0.0000 0.0000 0.0000 0.0000
## 
## Covariance Risk Budgets:
##     APPLE   MSFT Walmart Costco Pfizer    JNJ JPMorgan    BoA   Galp  Shell
## 1  0.0000 0.0000  0.0000 0.0000 0.9732 0.0000   0.0000 0.0000 0.0264 0.0004
## 13 0.0000 0.0000  0.2084 0.0000 0.3133 0.2563   0.0000 0.0000 0.0474 0.1746
## 25 0.0000 0.1877  0.2509 0.1475 0.0181 0.2423   0.0000 0.0000 0.0368 0.1168
## 37 0.0000 0.5217  0.0699 0.3440 0.0000 0.0131   0.0000 0.0000 0.0162 0.0351
## 49 1.0000 0.0000  0.0000 0.0000 0.0000 0.0000   0.0000 0.0000 0.0000 0.0000
## 
## Target Returns and Risks:
##       mean     Cov    CVaR     VaR
## 1  -0.0028  0.0699  0.1226  0.1042
## 13  0.0042  0.0419  0.0671  0.0487
## 25  0.0113  0.0390  0.0617  0.0474
## 37  0.0184  0.0468  0.0834  0.0749
## 49  0.0255  0.0853  0.1309  0.1276
## 
## Description:
##  Fri Mar  1 15:02:34 2024 by user: adolf
#Tasa libre de riesgo: extraído de https://home.treasury.gov/resource-center/data-chart-center/interest-rates/TextView?type=daily_treasury_yield_curve&field_tdr_date_value_month=202202
frontierPlot(frontera.eficiente,
             col = c("orange","red"),
             pch = 19,
             labels = T)
minvariancePoints(frontera.eficiente,col="black",pch=20)
cmlPoints(frontera.eficiente,col="green",pch=20)
tangencyPoints(frontera.eficiente,col="yellow",pch=4)
tangencyLines(frontera.eficiente ,col="yellow")
sharpeRatioLines(frontera.eficiente,col = "green")
monteCarloPoints(frontera.eficiente,
                 mcSteps = 1000,
                 lwd = 0.75,
                 pch = 1,
                 cex = 0.001)
equalWeightsPoints(frontera.eficiente, col = "blue",pch = 20)

tailoredFrontierPlot(frontera.eficiente)#por default

Frontera Eficiente En el gráfico de las fronteras eficientes se realizaron 1000 simulaciones MonteCarlo que son los pequeños puntos azules diseminados en el área, cada uno representa una cartera de rendimiento para un determinando nivel de riesgo.

En la frontera se encuentran los puntos naranjas, son los portafolios eficientes. El círculo rojo es el portafolio tangente y el círculo azul el portafolio con la mínima varianza global.

Portafolio eficiente: pesos que debería tener nuestro portafolio

markov<-portfolioSpec()
setRiskFreeRate(markov)<- 0.0217/12 #Tasa libre de riesgo
riesgo.rendimiento.frontera = frontierPoints(frontera.eficiente)
constraints="LongOnly"
col <- qualiPalette(ncol(matriz.rendimientos), "Pastel1")
weightsPlot(frontera.eficiente, col=col)

efPortfolio <- efficientPortfolio(as.timeSeries(matriz.rendimientos),markov,constraints)
efPortfolio
## 
## Title:
##  MV Efficient Portfolio 
##  Estimator:         covEstimator 
##  Solver:            solveRquadprog 
##  Optimize:          minRisk 
##  Constraints:       LongOnly 
## 
## Portfolio Weights:
##    APPLE     MSFT  Walmart   Costco   Pfizer      JNJ JPMorgan      BoA 
##   0.0000   0.1250   0.2839   0.0929   0.0602   0.2644   0.0000   0.0000 
##     Galp    Shell 
##   0.0388   0.1347 
## 
## Covariance Risk Budgets:
##    APPLE     MSFT  Walmart   Costco   Pfizer      JNJ JPMorgan      BoA 
##   0.0000   0.1250   0.2839   0.0929   0.0602   0.2644   0.0000   0.0000 
##     Galp    Shell 
##   0.0388   0.1347 
## 
## Target Returns and Risks:
##   mean    Cov   CVaR    VaR 
## 0.0096 0.0387 0.0579 0.0398 
## 
## Description:
##  Fri Mar  1 15:02:35 2024 by user: adolf
weightsPie(efPortfolio, col=col )
mtext(text = "Portafolio eficiente", side = 3, line = 1.5,
        font = 2, cex = 0.7, adj = 0)

Distribución de pesos por empresa (portafolio tangente)

tgPortfolio <- tangencyPortfolio(as.timeSeries(matriz.rendimientos),markov,constraints)
tgPortfolio
## 
## Title:
##  MV Tangency Portfolio 
##  Estimator:         covEstimator 
##  Solver:            solveRquadprog 
##  Optimize:          minRisk 
##  Constraints:       LongOnly 
## 
## Portfolio Weights:
##    APPLE     MSFT  Walmart   Costco   Pfizer      JNJ JPMorgan      BoA 
##   0.0000   0.6034   0.0000   0.3831   0.0000   0.0000   0.0000   0.0000 
##     Galp    Shell 
##   0.0135   0.0000 
## 
## Covariance Risk Budgets:
##    APPLE     MSFT  Walmart   Costco   Pfizer      JNJ JPMorgan      BoA 
##   0.0000   0.6354   0.0000   0.3639   0.0000   0.0000   0.0000   0.0000 
##     Galp    Shell 
##   0.0007   0.0000 
## 
## Target Returns and Risks:
##   mean    Cov   CVaR    VaR 
## 0.0221 0.0547 0.1005 0.0947 
## 
## Description:
##  Fri Mar  1 15:02:35 2024 by user: adolf
weightsPie(tgPortfolio, col=col)
mtext(text = "Portafolio tangente", side = 3, line = 1.5,
        font = 2, cex = 0.7, adj = 0)

6º) CONCLUSIONES

Composición del Portafolio Eficiente

Empresa Rendimiento (%)
Microsoft 12,5
Walmart 28,4
Costco 9,3
Pfizer 6,0
JNJ 26,4
Galp 3,9
Shell 13,5
———– —————–

Composición del Portafolio Tangente

Empresa Rendimiento (%)
Microsoft 60,3
Costco 38,3
Galp 1,4
———– —————–