使用一些現成的工具套件,我們很容易做投資組合管理:
options(digits=4, scipen=100)
rm(list=ls(all=T))
Sys.setlocale('LC_ALL', 'C')
## [1] "C"
library(fPortfolio)
library(tseries)
library(quantmod)
library(modopt.matlab)
DJ10 = c('MMM', 'AXP', 'AAPL', 'BA', 'CAT', 'CVX',
'CSCO', 'KO', 'XOM', 'GE')
K = length(DJ10)
dd = as.Date(c('2015-10-01','2017-09-30'))
mx = sapply(DJ10, function(x) {
G = getSymbols(x,from=dd[1],to=dd[2],auto.assign=F)
as.numeric(Delt(G[,6])) })[-1,]
names(mx) = DJ10
ts = as.timeSeries(mx)
cons = c('LongOnly')
spec = portfolioSpec()
setNFrontierPoints(spec) = 25
setSolver(spec) = "solveRquadprog"
frontier = portfolioFrontier(ts, spec, cons)
par(cex=0.7)
tailoredFrontierPlot(frontier)