library("quantmod")
library("fPortfolio")
library("fImport")
library("timeSeries")
library("PortfolioAnalytics")
simbolos=c("IBM","AAPL","AMZN","MSFT")
getSymbols(simbolos,from="2000-1-1", to="2018-12-31")
## [1] "IBM" "AAPL" "AMZN" "MSFT"
precios<- cbind(Ad(IBM),Ad(AAPL),Ad(AMZN),Ad(MSFT))
names(precios)<-c("IBM","AAPL","AMZN","MSFT")
head(precios)
## IBM AAPL AMZN MSFT
## 2000-01-03 79.15391 2.665724 89.3750 42.11531
## 2000-01-04 76.46708 2.440975 81.9375 40.69265
## 2000-01-05 79.15391 2.476697 69.7500 41.12173
## 2000-01-06 77.78920 2.262367 65.5625 39.74422
## 2000-01-07 77.44802 2.369532 69.5625 40.26359
## 2000-01-10 80.51861 2.327857 69.1875 40.55718
precios.ts <- as.timeSeries(precios)
seriesPlot(precios.ts[,"AAPL"])
returnPlot(precios.ts[,"AAPL"])
par(mfcol = c(2, 2))
seriesPlot(precios.ts)
par(mfcol = c(2, 2))
returnPlot(precios.ts)
retornos <- Return.calculate(precios, method = "log")
head(retornos)
## IBM AAPL AMZN MSFT
## 2000-01-03 NA NA NA NA
## 2000-01-04 -0.03453394 -0.08807814 -0.086884239 -0.034364039
## 2000-01-05 0.03453394 0.01452827 -0.161039341 0.010489231
## 2000-01-06 -0.01739164 -0.09051421 -0.061913535 -0.034072273
## 2000-01-07 -0.00439559 0.04628086 0.059221743 0.012983191
## 2000-01-10 0.03888130 -0.01774437 -0.005405419 0.007265244
retornos <- retornos[-1,]
basicStats(retornos)
colMeans(retornos*100)
## IBM AAPL AMZN MSFT
## 0.007215305 0.085128196 0.058731791 0.018094821
covarianza<-cov(retornos)
covarianza
## IBM AAPL AMZN MSFT
## IBM 0.0002647715 0.0001683675 0.0001726466 0.0001537189
## AAPL 0.0001683675 0.0007219236 0.0002929492 0.0002127249
## AMZN 0.0001726466 0.0002929492 0.0010978006 0.0002580928
## MSFT 0.0001537189 0.0002127249 0.0002580928 0.0003725299
portafolio_spec <- portfolio.spec(colnames(retornos))
portafolio_spec <- add.constraint(portfolio = portafolio_spec,
type = "full_investment")
portafolio_spec <- add.constraint(portfolio = portafolio_spec,
type = "long_only")
portafolio_spec <- add.objective(portfolio = portafolio_spec, type = "risk",
name = "StdDev")
Para ejecutar lo anterior es necesario instalar el paquete ROI y sus plugins ROI.plugin.glpk y ROI.plugin.quadprog.
portafolio_opt <- optimize.portfolio(retornos, portfolio =
portafolio_spec,
optimize_method = "ROI")
print(portafolio_opt)
## ***********************************
## PortfolioAnalytics Optimization
## ***********************************
##
## Call:
## optimize.portfolio(R = retornos, portfolio = portafolio_spec,
## optimize_method = "ROI")
##
## Optimal Weights:
## IBM AAPL AMZN MSFT
## 0.6174 0.0724 0.0189 0.2913
##
## Objective Measure:
## StdDev
## 0.01496
portafolio_spec2 <- portfolio.spec(assets = colnames(retornos))
portafolio_spec2 <- add.constraint(portfolio = portafolio_spec2,
type = "full_investment")
portafolio_spec2 <- add.constraint(portfolio = portafolio_spec2,
type = "long_only")
portafolio_spec2 <- add.objective(portfolio = portafolio_spec2,
type = "return", name = "mean")
portafolio_spec2 <- add.objective(portfolio = portafolio_spec2, type = "risk",
name = "var", risk_aversion =10)
portafolio_opt2 <- optimize.portfolio(R = retornos,
portfolio = portafolio_spec2,
optimize_method = "ROI")
print(portafolio_opt2)
## ***********************************
## PortfolioAnalytics Optimization
## ***********************************
##
## Call:
## optimize.portfolio(R = retornos, portfolio = portafolio_spec2,
## optimize_method = "ROI")
##
## Optimal Weights:
## IBM AAPL AMZN MSFT
## 0.5627 0.1319 0.0357 0.2698
##
## Objective Measure:
## mean
## 0.0002226
##
##
## StdDev
## 0.01504