[This article was first published on R and Trading, and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
library(quantmod)Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
library(PerformanceAnalytics)
library(tseries)
# initial value
stockRatio <- .5
interRatio <- .15
# rebalancing period
# prd <- ‘yearly’
prd <- ‘monthly’
# prd <- ‘daily’
# symbols used
# VUSTX govvies
# VWESX IG bonds
# VTSMX stocks
# VWEHX junk
# VGTSX international stocks ex US
# VTRIX international value
# get the data
getSymbols(c(‘VTSMX’,’VWESX’, ‘VUSTX’, ‘VWEHX’, ‘VGTSX’), from=’1900-07-28′)
# ———this section is the base portfolio analysis————
m=merge(Ad(VTSMX),Ad(VUSTX), all=F)
s=periodReturn(m[,1], period = prd)
b=periodReturn(m[,2], period = prd)
# create the portfolios
p1 <- stockRatio * s + (1-stockRatio) * b
# first plot
plot(cumprod(1+p1), main= ‘Total Returns, Base Port, Yearly Rebal’, log=’y’)
grid(lwd=3, equilogs = F)
# ———this section is the IG corporate portfolio analysis————
m=merge(Ad(VTSMX),Ad(VWESX), all=F)
s=periodReturn(m[,1], period = prd)
b=periodReturn(m[,2], period = prd)
# create the portfolios
p1 <- stockRatio * s + (1-stockRatio) * b
# first plot
plot(cumprod(1+p1), main= ‘Total Returns, IG Corp Port, Yearly Rebal’, log=’y’)
# plot last year
plot(tail(cumprod(1+p1),255), main= ‘Total Returns, Base Port, Yearly Rebal’, log=’y’)
# ———this section is the high yield analysis————
m=merge(Ad(VTSMX),Ad(VWEHX),Ad(VUSTX), all=F)
s=periodReturn(m[,1], period = prd)
j=periodReturn(m[,2], period = prd)
b=periodReturn(m[,3], period = prd)
# create the portfolios
p1 <- stockRatio * s + (1-stockRatio) * b
p2 <- stockRatio * s + (1-stockRatio) * j
# first plot
plot(cumprod(1+s), main= ‘Total Returns’)
lines(cumprod(1+j), col=’red’)
lines(cumprod(1+b), col=’green’)
grid(lwd = 3)
legend(‘topleft’, c(‘Stocks’,’High Yield’,’Gov Bonds’), fill = c(‘black’,’red’,’green’))
# second plot
plot(cumprod(1+p1), ylim=c(1,10), log=’y’, main=’Portfolio Growth of $1′)
lines(cumprod(1+p2), col=’red’)
grid(lwd = 3, equilogs = F)
legend(‘topleft’, c(‘Govern Bonds’,’High Yield’), fill = c(‘black’,’red’))
# get the drawdowns, use daily data
prd <- ‘daily’
s=periodReturn(m[,1], period = prd)
j=periodReturn(m[,2], period = prd)
b=periodReturn(m[,3], period = prd)
# create the portfolios
p1 <- stockRatio * s + (1-stockRatio) * b
p2 <- stockRatio * s + (1-stockRatio) * j
table.Drawdowns(p1)
table.Drawdowns(p2)
# not used here
# pDum <- portfolio.optim(mm, pm=.07)
# pdum$pw
# ———this section is the international stock analysis————
m <- merge(Ad(VTSMX), Ad(VGTSX), Ad(VUSTX), all=F)
# p3 is US stocks/bonds since 1996
# p4 is US + internat / bonds
s <- periodReturn(m[,1])
i <- periodReturn(m[,2])
b <- periodReturn(m[,3])
p3 <- (s + b) /2
p4 <- (.35 *s + .15 * i + .5 * b)
plot(cumprod(1+p3), log=’y’, main = ‘With/Without International Stocks’)
lines(cumprod(1+p4), col=’red’)
grid(lwd = 3)
legend(‘topleft’, c(‘US Stocks only’,’Incl Intern Stocks’), fill = c(‘black’,’red’), bty = ‘n’,cex = 2)
To leave a comment for the author, please follow the link and comment on their blog: R and Trading.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.