Introducción

En el campo de la teoría de selección de carteras, ocupa un lugar destacado Harry Markowitz, que en 1952 publicó en la revista Journal of Finance un artículo basado en su tesis doctoral y titulado «Portfolio Selection».

En dicho artículo planteaba un modelo de conducta racional del decisor para la selección de carteras de títulos-valores con liquidez inmediata2. Posteriormente, en 1959, publicó su libro Portfolio Selection, Efficient Diversification of Investments, en el que expone y desarrolla con mayor detalle su teoría.

Desde su aparición, el modelo de Markowitz ha conseguido un gran éxito a nivel teórico, dando lugar a múltiples desarrollos y derivaciones, e incluso sentando las bases de diversas teorías de equilibrio en el mercado de activos financieros. Sin embargo, su utilización en la práctica entre gestores de carteras y analistas de inversiones no ha sido tan extensa como podría suponerse de su éxito teórico.

Normalmente, la inclusión de cualquier restricción adicional en el modelo genera una frontera de carteras eficientes que es dominada por la que resulta cuando no se tienen en cuenta las restricciones mencionadas. Es decir, dichas carteras no son tan eficientes como debieran (Haugen, 1993 y Fisher y Statman, 1997).

Modelo de Markowitz

Markowitz desarrolla su modelo sobre la base del comportamiento racional del inversor. Es decir, el inversor desea la rentabilidad y rechaza el riesgo. Por lo tanto, para él una cartera será eficiente si proporciona la máxima rentabilidad posible para un riesgo dado, o de forma equivalente, si presenta el menor riesgo posible para un nivel determinado de rentabilidad. El conjunto de carteras eficientes puede calcularse resolviendo el siguiente programa cuadrático paramétrico:

\[\operatorname{Min} \quad \sigma^{2}\left(R_{p}\right)=\sum_{i=1}^{n} \sum_{j=1}^{n} x_{i} \cdot x_{j} \sigma_{i j}\] \[s.a\]

\[ E\left(R_{p}\right)=\sum_{i=1}^{n} x_{i} \cdot E\left(R_{i}\right)=V^{*}\] \[\sum_{i=1}^{n} x_{i}=1\]

Donde \(x_i\) es la proporción del presupuesto del inversor destinado al activo financiero \(i\) e incógnita del programa, \(\sigma(R_p)^{2}\), la varianza de la cartera \(p\), y \(\sigma_{ij}\), la covarianza entre los rendimientos de los valores \(i\) y \(j\). \(E(R_p)\), es la rentabilidad o rendimiento esperado de la cartera p, de tal forma que al variar el parámetro \(V^{*}\) obtendremos en cada caso, al resolver el programa, el conjunto de proporciones xi que minimizan el riesgo de la cartera, así como su valor correspondiente. El conjunto de pares \([E(R_p), \sigma(R_p)^{2}]\)o combinaciones rentabilidad-riesgo de todas las carteras eficientes es denominado «frontera eficiente». Una vez conocida ésta, el inversor, de acuerdo con sus preferencias, elegirá su cartera óptima.

Aplicación

Seleccionamos un conjunto de activos, que por ahora no obtaré por una diversificacion a partir de un método sofisticado como la tecnica de clusters, esta cartera estara compuesta de un indice y 5 activos.

Se elige el precio de cierre pues este ya contiene las penalizaciones y cobros de impuestos a los que las acciones estan sugetas en un dia normal de operación en bolsa. Ademas se calcula los rendimientos en un data frame.

library(tseries)
library(fPortfolio)

## Índice S&P 500
Indice<- get.hist.quote(instrument = "^GSPC", 
                        start=as.Date("2010-01-04"), 
                        end=as.Date("2019-07-31"), quote = "AdjClose")
## time series ends   2019-07-30
## Activo 1: APPLE Inc. 
AAPL<- get.hist.quote(instrument = "AAPL", 
                      start=as.Date("2010-01-04"), 
                      end=as.Date("2019-07-31"), quote = "AdjClose")
## time series ends   2019-07-30
## Activo 2: Exxon Mobil Corporation 
XOM<- get.hist.quote(instrument = "XOM", 
                     start=as.Date("2010-01-04"), 
                     end=as.Date("2019-07-31"), quote = "AdjClose")
## time series ends   2019-07-30
## Activo 3: The Home Depot, Inc
HD<- get.hist.quote(instrument = "HD", 
                    start=as.Date("2010-01-04"), 
                    end=as.Date("2019-07-31"), quote = "AdjClose")
## time series ends   2019-07-30
## Activo 4: JP Morgan Chase & Co
JPM <- get.hist.quote(instrument = "JPM", 
                      start=as.Date("2010-01-04"), 
                      end=as.Date("2019-07-31"), quote = "AdjClose")
## time series ends   2019-07-30
## Activo 5: Johnson & Johnson 
JNJ <- get.hist.quote(instrument = "JNJ", 
                      start=as.Date("2010-01-04"), 
                      end=as.Date("2019-07-31"), quote = "AdjClose")
## time series ends   2019-07-30
Cartera <- merge(AAPL,XOM,HD,JPM,JNJ, all = FALSE) 
names(Cartera)<-c("AAPL", "XOM", "HD", "JPM", "JNJ")
Rendimientos<-diff(log(Cartera))

Posteriormente configuramos nuestra cartera de activos con los datos de mercado. En este caso si deseamos agregar una porcion de unactivo libre de riesgo tenemos que declararlo en setRiskFreeRate(espcartera) que corresponde a la tasa de dicho activo.

Ademas pedimos que la cartera este en un posicion larga constraints.

Se usa tgPortfolio para calcular la linea de tangencia.

Para simular las carteras factibles que no pertenecen a la frontera eficiente se usa simulación de montecarlo.

espcartera<-portfolioSpec()

setRiskFreeRate(espcartera)<- -0.0014 ##tasa del  Activo Libre de Riesgo
setNFrontierPoints(espcartera) <- 20
constraints="LongOnly" # Posiciones largas.

Frontera <- portfolioFrontier(as.timeSeries(Rendimientos),spec=espcartera,constraints )
frontierPlot(Frontera,col = rep('blue', 2), pch = 19)
# Objetos de añadidura 
minvariancePoints(Frontera,col="red",pch=20)
cmlPoints(Frontera,col="green",pch=20)
tangencyPoints(Frontera,col="yellow",pch=4)
tangencyLines(Frontera ,col="yellow")
sharpeRatioLines(Frontera ,col="purple",lwd=2)
# Relleno 
monteCarloPoints(Frontera, mCsteps=500, col="black", cex=0.001)
grid()

tgPortfolio <- tangencyPortfolio(as.timeSeries(Rendimientos),
                                 espcartera,constraints)
efPortfolio <- efficientPortfolio(as.timeSeries(Rendimientos),
                                  espcartera,constraints)