2 votos

¿Cómo calcular la cartera de varianza mínima global en R?

Estoy intentando utilizar el globalMin.portfolio para calcular la cartera de varianza mínima global en RStudio. Mi código es el siguiente (nótese que se han incluido varias librerías que pueden no ser necesarias, ya que no tengo claro cuáles son necesarias para realizar las funciones):

#Libraries
library(corpcor)
library(tseries)
library(fPortfolio)
library(quadprog)
library(SharpeR)
library(PortfolioAnalytics)
library(zoo)
library(plotly)
library(portfolio.r)
library(portfolio_noshorts.r)

rk.free=0.005

rm( list=ls() )
portfolio <- read.csv2("File Directory/Document.csv")
T <- nrow(portfolio)
portfolio <- portfolio[ seq(T,1,-1) , ]
stock1_r<- diff(log(portfolio$stock1))*100
stock2_r <- diff(log(portfolio$stock2))*100
stock3_r<- diff(log(portfolio$stock3))*100
stock4_r    <- diff(log(portfolio$stock4))*100
stock5_r    <- diff(log(portfolio$stock5))*100
stock6_r<- diff(log(portfolio$stock6))*100
stock7_r<- diff(log(portfolio$stock7))*100
stock8_r<- diff(log(portfolio$t))*100
stock9_r<- diff(log(portfolio$stock9))*100
stock10_r<- diff(log(portfolio$stock10))*100

portfolio_r <- data.frame(stock1_r, stock2_r, stock3_r, stock4_r, stock5_r, stock6_r, stock7_r, stock8_r, stock9_r, stock10_r)
er1=c(mean(stock1_r), mean(stock2_r), mean(stock3_r), mean(stock4_r), mean(stock5_r), mean(stock6_r), mean(stock7_r), mean(stock8_r), mean(stock9_r), mean(stock10_r))

#Covariance Matrix
covmat1<-cov(portfolio_r)

#Shrinkage estimate of covariance
cov.shrink(portfolio_r)

#Transform covariance to correlation matrix
cov2cor(covmat1)
ew1=rep(1,10)/10
er1
covmat1
ew1

#Compute global minimum variance portfolio
gmin.port = globalMin.portfolio(er1, covmat1)
attributes(gmin.port)
print(gmin.port)
summary(gmin.port, rk.free=r.free)
plot(gmin.port, col="blue")

Sin embargo, cuando intento calcular la cartera de varianza mínima global, simplemente recibo el mensaje de error; "Error: could not find function "globalMin.portfolio" . Esto ocurre aunque la rentabilidad esperada ( er1 ) y la matriz de covarianza ( covmat1 ) se calculan y la salida se muestra cuando se ejecuta el programa. Agradecería cualquier ayuda.

0 votos

Tengo el mismo problema, ¿cómo has conseguido que la función funcione? Gracias.

0 votos

Por favor, no elimine el contacto de las preguntas. Este sitio web es colaborativo, por lo que cualquier pregunta formulada aquí está destinada a permanecer disponible con su contenido completo.

2voto

Toby Allen Puntos 260

Las 2 últimas llamadas deben ser cambiadas de

library(portfolio.r) 

library(portfolio_noshorts.r)

a

source(portfolio.r)

source(portfolio_noshorts.r)

Los archivos correctos deben estar disponibles en http://faculty.washington.edu/ezivot/econ424/ .

0 votos

Eso no funcionó. No parece ser un problema con la biblioteca ya que el código funciona al ejecutar este ejemplo: faculty.washington.edu/ezivot/econ424/testport.r

0 votos

Testport.r es la fuente de portfolio_noshorts.r al principio

0 votos

Ha funcionado. Tuve que hacer algunas modificaciones en el código.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X