Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save timelyportfolio/3308304 to your computer and use it in GitHub Desktop.
Save timelyportfolio/3308304 to your computer and use it in GitHub Desktop.
horizon plot of 48 industries with dendrogram order
#my.url will be the location of the zip file with the data
#this will be the temp file set up for the zip file
#my.usefile is the name of the txt file with the data
download.file(my.url, my.tempfile, method="auto",
quiet = FALSE, mode = "wb",cacheOK = TRUE)
#read space delimited text file extracted from zip
french_industry <- read.table(file=my.usefile,
header = TRUE, sep = "", = TRUE,
skip = 9, nrows=12211)
#get dates ready for xts index
datestoformat <- rownames(french_industry)
datestoformat <- paste(substr(datestoformat,1,4),
#get xts for analysis
french_industry_xts <- as.xts(french_industry[,1:NCOL(french_industry)],
#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 price series or cumulative growth of 1
french_industry_price <- cumprod(french_industry_xts+1)
#get 250 day rate of change or feel free to change to something other than 250
roc <- french_industry_price
#split into groups so do not run out of memory
for (i in seq(12,48,by=12)) {
roc[,((i-11):(i))] <- ROC(french_industry_price[,((i-11):(i))],n=250,type="discrete")
roc[1:250,] <- 0
# try to do
# was much easier to use latticeExtra
# get dendrogram data from hclust
# backward and repetitive but it works
t <- assetsDendrogramPlot(as.timeSeries(french_industry_xts))
# thanks to the latticeExtra example
dd.row <- as.dendrogram(t$hclust)
row.ord <- order.dendrogram(dd.row)
layout=c(1,48), ylim=c(0,0.25),
scales = list(tck = c(1,0), y = list(draw = FALSE,relation = "same")),
origin = 0,
colorkey = TRUE,
#since so many industries, we will comment out grid
panel = function(x,y,...) {
panel.horizonplot(x,y,...) #feel free to change to whatever you would like)
# panel.grid(h=3, v=0,col = "white", lwd=1,lty = 3)
ylab = list(rev(colnames(roc[,row.ord])), rot = 0, cex = 0.7, pos = 3),
xlab = NULL,
par.settings=theEconomist.theme(box = "gray70"),
#use ylab above for labelling so we can specify FALSE for strip and strip.left
strip = FALSE,
strip.left = FALSE,
main = "French Daily 48 Industry (Dendrogram Ordered) 1963-2011\n source:",
legend =
list(right =
list(fun = dendrogramGrob,
args =
list(x = dd.row, ord = row.ord,
side = "right",
size = 10))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment