World Since June 2008

[This article was first published on Timely Portfolio, 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.

For a client meeting, I struggled with how best to illustrate world markets since June 2008.  I used R to produce this, but I’m still not completely satisfied. Anyone have suggestions to improve?

From TimelyPortfolio

What I thought was interesting was US equity outperformance and the US 10y yield move through the financial collapse low 2.15% seen in December 2008 and significantly lower than the 2.87% at the S&P low March 2009.  I think both can be explained by an illusion of control assigned to the US.  This illusion begins to unravel if the political process fails and monetary policy has reached its limits.

R code from Gist:

#I very much appreciate Joshua Ulrich's (http://blog.fosstrading.com) forked version
#which offers a much nicer top section of the final graph
#forked version resides here https://gist.github.com/1443358
require(quantmod)
#get index tickers without the ^ which we will add in the getSymbols
tckrs=c("GSPC","TNX","DJUBS","W3DOW","W5DOW")
#name the indexes
names(tckrs) <- c("S&P 500","US 10y Yld","DJ Commodity","Developed","Developing")
#use paste to add the ^ to the index tickers
getSymbols(paste("^",tckrs,sep=""), from="1986-01-01", to=Sys.Date())
#start with 1st; just avoids an if statement in the for loop
#not sure what is best coding practice
indexes <- to.monthly(get(tckrs[1]))[,4]
for (i in 2:length(tckrs)) {
#merge into one big nice xts
indexes <- merge(indexes,to.monthly(get(tckrs[i]))[,4])
}
colnames(indexes) <- names(tckrs)
indexes <- na.omit(indexes)
index(indexes) <- as.Date(index(indexes))
#set start date to 2008-06 but feel free to use any date you like
indexes.roc <- indexes["2008-06::"]/lag(indexes["2008-06::"],k=1)-1
indexes.roc[1,] <- 0
indexes.cumul <- as.xts(apply(1+indexes.roc[,1:5],MARGIN=2,cumprod))
#stuff we re-use
labs=colnames(indexes.cumul)
colors=c("antiquewhite3","grey70","darkolivegreen4","indianred4","cadetblue4")
barInd=c(1,4,5,3,2)
#make plot
layout(matrix(1:2, 2),heights=c(8,5))
par(mar=c(2,4,4,7),oma=c(2,1,2,0))
plot.zoo(indexes.cumul-1,col=colors,lwd=c(3,3,2,2,2),screens=1,xlab=NA,ylab="% Change",las=1)
#this is the primary change Joshua Ulrich made
#to allow a much nicer labelling of points on a right vertical margin
axis(4, coredata(last(indexes.cumul))-1,labels=FALSE)
mtext(labs, 4, at=coredata(last(indexes.cumul))-1,las=1,col=colors,line=1)
title(main="World Equity, Bond, and Commodity Indexes since June 2008",cex.main=1.25)
par(mar=c(4,4,2,3))
barplot(last(indexes.cumul)[,barInd]-1,las=1,beside=TRUE,col=colors[barInd],
names.arg=labs[barInd], ylab="% Change",ylim=c(-0.5,0),cex.names=0.75)

To leave a comment for the author, please follow the link and comment on their blog: Timely Portfolio.

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.

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)