Path: blob/master/sandbox/paper_analysis/R_interpretation/old/stackedweightriskcontributionplot_Oct.R
1433 views
#################################################################################1# Create stacked weights and risk contributions plot2#################################################################################34# ! Set your working directory (folder containing the subfolders R_allocation, R_interpretation, data, weights, etc)56setwd("c:/Documents and Settings/Administrator/Desktop/risk budget programs")789# Options:10################1112# specify the number of years used for the estimation13estyears = 8;1415# Load programs1617source("R_interpretation/chart.StackedBar.R");18library(zoo); library(PerformanceAnalytics)1920# number of risky assets21firstyear = 1976 ; firstquarter = 1; lastyear = 2009; lastquarter = 4;22cAssets = 42324names = c( "EqualWeight" , "EqualRisk" ,25"MinRisk" , "MinRisk_PositionLimit" , "MinRisk_RiskLimit" , "MinRisk_ReturnTarget",26"MinRiskConc" , "MinRiskConc_PositionLimit" , "MinRiskConc_ReturnTarget")2728namelabels = c( "Equal Weight" , "Equal Risk" ,29"Min CVaR" , "Min CVaR + Position Limit" , "Min CVaR + CVaR Alloc Limit" , "Min CVaR + Return Target" ,30"Min CVaR Conc" , "Min CVaR Conc + Position Limit" , "Min CVaR Conc + Return Target" )3132# frequency of rebalancing: yearly of quarterly33frequency = "quarterly"34# Load portfolio weights:35weightsS1 = read.csv( file = paste("weights/", names[1], ".csv" , sep="") );36weightsS2 = read.csv( file = paste("weights/", names[2], ".csv" , sep="") );37weightsS3 = read.csv( file = paste("weights/", names[3], ".csv" , sep="") );38weightsS4 = read.csv( file = paste("weights/", names[4], ".csv" , sep="") );39weightsS5 = read.csv( file = paste("weights/", names[5], ".csv" , sep="") );40weightsS6 = read.csv( file = paste("weights/", names[6], ".csv" , sep="") );41weightsS7 = read.csv( file = paste("weights/", names[7], ".csv" , sep="") );42weightsS8 = read.csv( file = paste("weights/", names[8], ".csv" , sep="") );43weightsS9 = read.csv( file = paste("weights/", names[9], ".csv" , sep="") );444546# Load percentage risk contributions:47riskcontS1 = read.csv( file = paste("riskcont/", names[1], ".csv" , sep="") );48riskcontS2 = read.csv( file = paste("riskcont/", names[2], ".csv" , sep="") );49riskcontS3 = read.csv( file = paste("riskcont/", names[3], ".csv" , sep="") );50riskcontS4 = read.csv( file = paste("riskcont/", names[4], ".csv" , sep="") );51riskcontS5 = read.csv( file = paste("riskcont/", names[5], ".csv" , sep="") );52riskcontS6 = read.csv( file = paste("riskcont/", names[6], ".csv" , sep="") );53riskcontS7 = read.csv( file = paste("riskcont/", names[7], ".csv" , sep="") );54riskcontS8 = read.csv( file = paste("riskcont/", names[8], ".csv" , sep="") );55riskcontS9 = read.csv( file = paste("riskcont/", names[9], ".csv" , sep="") );565758# Relabel rownames in the plots5960if(frequency=="yearly"){61names = seq( (firstyear+estyears),lastyear+1,1)62}else{63names = paste(rep( seq( (firstyear+estyears),lastyear,1) , each=4),c("Q1","Q2","Q3","Q4"),sep="")64names = c( names , paste( lastyear+1, "Q1" , sep="" ) )65names = names[firstquarter:(length(names)-4+lastquarter)]66}676869rownames(weightsS1) = rownames(weightsS2) = rownames(weightsS3) = rownames(weightsS4) = rownames(weightsS5) = names;70rownames(weightsS6) = rownames(weightsS7) = rownames(weightsS8) = rownames(weightsS9) = names;71rownames(riskcontS1) = rownames(riskcontS2) = rownames(riskcontS3) = rownames(riskcontS4) = rownames(riskcontS5) = names;72rownames(riskcontS6) = rownames(riskcontS7) = rownames(riskcontS8) = rownames(riskcontS9) = names;7374colorset = gray( seq(0,(cAssets-1),1)/cAssets ) ;75#due to rounding, the sum of the risk contributions is sometimes 1 + epsilon: avoid this in plot7677riskcontS1 = riskcontS1/rowSums(riskcontS1); riskcontS2 = riskcontS2/rowSums(riskcontS2);78riskcontS3 = riskcontS3/rowSums(riskcontS3); riskcontS4 = riskcontS4/rowSums(riskcontS4);79riskcontS5 = riskcontS5/rowSums(riskcontS5); riskcontS6 = riskcontS6/rowSums(riskcontS6);80riskcontS7 = riskcontS7/rowSums(riskcontS7); riskcontS8 = riskcontS8/rowSums(riskcontS8);81riskcontS9 = riskcontS9/rowSums(riskcontS9);82w.names = c( "US bond" , "S&P 500", "EAFE" , "GSCI" )83l = 284mar1 =c(2,l,2,1.1)85mar2 =c(0,l,2,1)86mar3 = c(3,l+1,3,0.1)8788# Stacked weights plot:89postscript('stackedweights.eps')90layout( matrix( c(1,2,3,4,5,6,7,4,8,9,10,4), ncol = 3 ) , height= c(1.5,1.5,1.5,0.7), width=1)9192par(mar=mar3 , cex.main=1)93chart.StackedBar2(weightsS1,col=colorset,space=0, main = namelabels[1] , ylab="", las=1, l=2.5, r=0.4, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T, legend.loc = NULL,ylim=c(0,1),border = F )9495chart.StackedBar2(weightsS2,col=colorset,space=0, main = namelabels[2], ylab="", las=1, l=2.5, r=0.4, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )9697chart.StackedBar2(weightsS3,col=colorset,space=0, main = namelabels[3], ylab="", las=1, l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )9899par(mar=mar1 , cex.main=1)100plot.new()101legend("center",legend=w.names,fill=colorset,cex=1,ncol=4)102par(mar=mar3 , cex.main=1)103104chart.StackedBar2(weightsS4,col=colorset,space=0, main = namelabels[4], ylab="", las=1, l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )105chart.StackedBar2(weightsS5,col=colorset,space=0, main = namelabels[5], ylab="", las=1,l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )106chart.StackedBar2(weightsS6,col=colorset,space=0, main = namelabels[6], ylab="", las=1,l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )107108chart.StackedBar2(weightsS7,col=colorset,space=0, main = namelabels[7], ylab="", las=1,l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )109chart.StackedBar2(weightsS8,col=colorset,space=0, main = namelabels[8], ylab="", las=1, l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )110chart.StackedBar2(weightsS9,col=colorset,space=0, main = namelabels[9], ylab="", las=1,l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )111112dev.off()113114# Stacked percentage CVaR plot:115116postscript('stackedpercCVaR.eps')117118layout( matrix( c(1,2,3,4,5,6,7,4,8,9,10,4), ncol = 3 ) , height= c(1.5,1.5,1.5,0.7), width=1)119120par(mar=mar3 , cex.main=1)121chart.StackedBar2(riskcontS1,col=colorset,space=0, main = namelabels[1] , ylab="", las=1, l=2.5, r=0.4, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T, legend.loc = NULL,ylim=c(0,1),border = F )122123chart.StackedBar2(riskcontS2,col=colorset,space=0, main = namelabels[2], ylab="", las=1, l=2.5, r=0.4, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )124125chart.StackedBar2(riskcontS3,col=colorset,space=0, main = namelabels[3], ylab="", las=1, l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )126127par(mar=mar1 , cex.main=1)128plot.new()129legend("center",legend=w.names,fill=colorset,cex=1,ncol=4)130par(mar=mar3 , cex.main=1)131132chart.StackedBar2(riskcontS4,col=colorset,space=0, main = namelabels[4], ylab="", las=1, l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )133chart.StackedBar2(riskcontS5,col=colorset,space=0, main = namelabels[5], ylab="", las=1,l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )134chart.StackedBar2(riskcontS6,col=colorset,space=0, main = namelabels[6], ylab="", las=1,l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )135136chart.StackedBar2(riskcontS7,col=colorset,space=0, main = namelabels[7], ylab="", las=1, l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )137chart.StackedBar2(riskcontS8,col=colorset,space=0, main = namelabels[8], ylab="", las=1, l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )138chart.StackedBar2(riskcontS9,col=colorset,space=0, main = namelabels[9], ylab="", las=1,l=2.4, r=0.5, cex.axis=1, cex.lab=1, cex.main=1, axisnames=T,legend.loc = NULL,ylim=c(0,1),border = F )139140dev.off()141142143