Estoy tratando de calcular la frontera eficiente (y la cartera óptima en la relación de Sharpe) dados dos vectores para una cartera: (1) rendimientos esperados y (2) desviaciones estándar históricas. Me gustaría ser capaz de calcular esto en R. Usando el portfolioFrontier()
función del fPortfolio
en R, he calculado con éxito la frontera eficiente y la asignación óptima de la cartera en la relación de Sharpe utilizando una serie temporal de rendimientos históricos. Sin embargo, el fPortfolio
parece que sólo permite realizar pruebas retrospectivas en una serie temporal. Me gustaría calcular la frontera eficiente y la cartera óptima en la relación de Sharpe para rendimientos futuros (es decir, esperados). ¿Cómo puedo hacerlo?
Lo ideal sería implementar esto con una función en R. El recurso más cercano que pude encontrar fue de este sitio web utilizando el código de Octave. He traducido con éxito el código a R, pero la frontera eficiente no parece coincidir (o ser tan precisa) como la del paquete R.
Aquí está mi intento en R (traduciendo el código de Octave del sitio web anterior):
expectedReturns <- c(4, 2, 13, 10)
covarianceMatrix <- matrix(c(185, 86.5, 80, 20, 86.5, 196, 76, 13.5, 80, 76, 411, -19, 20, 13.5, -19, 25), nrow=4, ncol=4, byrow=TRUE)
# Calculate Efficient Frontier
unity <- rep(1, length(expectedReturns))
A <- unity %*% solve(covarianceMatrix) %*% unity
B <- unity %*% solve(covarianceMatrix) %*% expectedReturns
C <- expectedReturns %*% solve(covarianceMatrix) %*% expectedReturns
D <- A*C-B^2
mu = seq(0, 30, by=.1)
minVar = ((A*mu^2)-2*B*mu+C)/D
minSD = sqrt(minVar)
plot(minSD, mu)
0 votos
Tal vez esto pueda ayudarte: quant.stackexchange.com/questions/21464/
0 votos
Dice que sólo quiere introducir las desviaciones estándar, pero ¿qué pasa con las correlaciones?
0 votos
Tal vez la función
mvFrontier
en la versión devel del paqueteNMOF
hace lo que tú quieres: github.com/enricoschumann/NMOF/blob/master/R/ En cuanto a las entradas,m
son los rendimientos esperados yvar
es la matriz de covarianza.0 votos
¿Es necesaria una matriz de covarianza? Si es así, no sería capaz de producir buenas estimaciones de las covarianzas esperadas aparte de utilizar las históricas. Pero si es necesario, siéntase libre de proporcionar una solución que tiene las siguientes entradas: 1) vector de rendimientos esperados, y 2) una matriz de covarianzas (que subsuma el vector de varianzas). Gracias.
0 votos
No creo que haya nada malo en tu código, utiliza las fórmulas bien conocidas para A, B, C, D, etc que están en todos los libros de texto, así como en el enlace que has publicado. ¿Por qué dices que los resultados no son precisos?