Home
> Uncategorized > Periodic Table of Investment Returns
Periodic Table of Investment Returns
To get a better sense of historical data, I like to examine a Periodic Table of Investment Returns. For an example of a Periodic Table, have a look at the Single Country Index Returns Periodic Table for 2001-2010 published by iShares.
I can easily create a similar table with the following R code, using the historical data from the Black-Litterman Model post.
# load Systematic Investor Toolbox setInternet2(TRUE) source(gzcon(url('https://github.com/systematicinvestor/SIT/raw/master/sit.gz', 'rb'))) #-------------------------------------------------------------------------- # Get Historical Data #-------------------------------------------------------------------------- # Country's IA are based on monthly data ia = aa.test.create.ia.country() hist.returns = ia$hist.returns # convert returns to prices hist.prices = cumprod(1 + hist.returns) # extract annual prices period.ends = endpoints(hist.prices, 'years') hist.prices = hist.prices[period.ends, ] # compute simple returns hist.returns = na.omit( ROC(hist.prices, type = 'discrete') ) hist.returns = hist.returns['2000::2010'] #-------------------------------------------------------------------------- # Create Periodic table #-------------------------------------------------------------------------- # create temp matrix with data you want to plot temp = t(coredata(hist.returns)) colnames(temp) = format(index(hist.returns), '%Y') rownames(temp) = 1:ia$n rownames(temp)[1] = ' Best ' rownames(temp)[ia$n] = ' Worst ' # highlight each column col = plota.colors(ia$n) highlight = apply(temp,2, function(x) col[order(x, decreasing = T)] ) # sort each column temp[] = apply(temp,2, sort, decreasing = T) # format data as percentages temp[] = plota.format(100 * temp, 0, '', '%') # plot temp and legend plot.table(temp, highlight = highlight) plota.legend(ia$symbols,col,cex=1.5)
The Canadian and Australian markets outperformed US and Japanese markets in most years.
Here is a slightly different version of Periodic table:
#-------------------------------------------------------------------------- # Create Periodic table, another version #-------------------------------------------------------------------------- # create temp matrix with data you want to plot temp = t(coredata(hist.returns)) colnames(temp) = format(index(hist.returns), '%Y') # format data as percentages temp[] = plota.format(100 * temp, 0, '', '%') # highlight each column separately highlight = apply(temp,2, function(x) plot.table.helper.color(t(x)) ) # plot temp with colorbar plot.table(temp, highlight = highlight, colorbar = TRUE)
To view the complete source code for this example, please have a look at the aa.periodic.table.test() function in aa.test.r at github.
Categories: Uncategorized
Comments (0)
Trackbacks (0)
Leave a comment
Trackback