Forked from timelyportfolio/french industry animated correlation gif.r
Created
August 16, 2012 15:51
-
-
Save fototo/3371262 to your computer and use it in GitHub Desktop.
french industry animated gif of correlation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#get very helpful Ken French data | |
#for this project we will look at Industry Portfolios | |
#http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/48_Industry_Portfolios_daily.zip | |
require(latticeExtra) | |
require(animation) | |
require(PerformanceAnalytics) | |
require(quantmod) | |
#my.url will be the location of the zip file with the data | |
my.url="http://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/48_Industry_Portfolios_daily.zip" | |
#this will be the temp file set up for the zip file | |
my.tempfile<-paste(tempdir(),"\\frenchindustry.zip",sep="") | |
#my.usefile is the name of the txt file with the data | |
my.usefile<-paste(tempdir(),"\\48_Industry_Portfolios_daily.txt",sep="") | |
download.file(my.url, my.tempfile, method="auto", | |
quiet = FALSE, mode = "wb",cacheOK = TRUE) | |
unzip(my.tempfile,exdir=tempdir(),junkpath=TRUE) | |
#read space delimited text file extracted from zip | |
french_industry <- read.table(file=my.usefile, | |
header = TRUE, sep = "", | |
as.is = TRUE, | |
skip = 9, nrows=12211) | |
#get dates ready for xts index | |
datestoformat <- rownames(french_industry) | |
datestoformat <- paste(substr(datestoformat,1,4), | |
substr(datestoformat,5,6),substr(datestoformat,7,8),sep="-") | |
#get xts for analysis | |
french_industry_xts <- as.xts(french_industry[,1:NCOL(french_industry)], | |
order.by=as.Date(datestoformat)) | |
#divide by 100 to get percent | |
french_industry_xts <- french_industry_xts/100 | |
#delete missing data which is denoted by -0.9999 | |
french_industry_xts[which(french_industry_xts < -0.99,arr.ind=TRUE)[,1], | |
unique(which(french_industry_xts < -0.99,arr.ind=TRUE)[,2])] <- 0 | |
#get a vector of the end of years | |
evaldates <- endpoints(french_industry_xts,"years") | |
saveGIF( | |
for(i in 2:length(evaldates)) { | |
#do correlation table | |
ca <- cor(french_industry_xts[evaldates[i-1]:evaldates[i],]) | |
#replace na with 0 | |
ca[which(is.na(ca),arr.ind=TRUE)[,]] <- 0 | |
#get colors to use for heat map | |
brew <- brewer.pal(name="RdBu",n=5) | |
#get color ramp | |
cc.brew <- colorRampPalette(brew) | |
#apply color ramp | |
cc <- cc.brew(nrow(ca)) | |
#do heatmap and sort by degree of correlation to VFINX (Vanguard S&P 500) | |
#heatmap(ca,symm=TRUE,Rowv=NA,Colv=NA,col=cc,RowSideColors=cc,main="") | |
#title(main=paste("Correlation Table\n",index(french_industry_xts)[evaldates[i]],sep=""),font.main=1,outer=TRUE,line=-2,cex.main=1.3) | |
#do with dendrogram ordering | |
heatmap(ca,symm=TRUE,col=cc,RowSideColors=cc,main="") | |
title(main=paste("Correlation Table (Dendrogram Ordered)\n",index(french_industry_xts)[evaldates[i]],sep=""),font.main=1,outer=TRUE,line=-3,cex.main=1.3,adj=0) | |
} | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment