Monitoring Sources of Bond Returns with ML/BAC Corporate OAS and CPI
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
In response to the nice comment requesting an update to Monitoring Sources of Bond Return and also longer history, I thought I would update the original and then rerun with CPI to give a longer time series. For even longer history back to 1919, see Historical Sources of Bond Returns with Shiller Data 1919-2011. Below are the results, and real returns are negative again.
How in the world can this quote in Institutional Investor Endowments Are Shifting To Fixed Income be valid (fixed income is not defensive)?
“With the problems of equity markets volatility and unpredictability, the case for increasing the allocation to fixed income is greater than ever, notes Michael Purves, chief market strategist and head of global derivatives research at BGC Financial in New York. But if fixed income assets were once seen as low risk, low reward instruments, they now are seen as assets with the potential to deliver real returns, says Purves.
Also, the availability of fixed assets in the emerging markets offers investors safety as well as growth, Purves notes. Not only has the number of opportunities increased, they also offer greater rewards relative to similar products in the developed markets. “The move to fixed income is not a defensive strategy any more,” says New York’s Andrew Lawrence. “In today’s market conditions they offer relatively outsized returns.”
Expecting real returns here is a bet on prolonged deflation, and if deflation is so certain, go short the instruments that most suffer from deflation. Please do not treat this as investment advice; I just cannot restrain my opinion that bonds guarantee failure in most cases with 3-4% 10 year total returns. If your long-term target growth is 3-4%, then enjoy your bonds.
I will consider myself a complete failure as a money manager if I can only return 3-4% over the next 10-30 years.
From TimelyPortfolio |
From TimelyPortfolio |
#just an update as requested to #http://timelyportfolio.blogspot.com/2011/04/monitoring-sources-of-bond-return.html?showComment=1309270268204#c6728361948693873056 require(quantmod) require(PerformanceAnalytics) require(reshape2) require(ggplot2) getSymbols("WGS10YR",src="FRED") #load 10yTreasury getSymbols("WFII10",src="FRED") #load 10yTIP for real return getSymbols("BAMLC0A0CM",src="FRED") #load Corporate for credit getSymbols("CPIAUCSL",src="FRED") #load Corporate for credit bondReturnSources<-na.omit(merge(WGS10YR-WFII10,WFII10,to.weekly(BAMLC0A0CM)[,4])["2003::"]) colnames(bondReturnSources)<-c("10yTreasury","10yTIPReal","Credit") bondReturnSourcesToGraph<-data.frame(cbind(as.Date(index(bondReturnSources)),coredata(bondReturnSources))) colnames(bondReturnSourcesToGraph)<-c("Date","InflationBreakEven","10yTIPReal","Credit") bondReturnSourcesToGraph<-melt(bondReturnSourcesToGraph,id.vars=1) colnames(bondReturnSourcesToGraph)<-c("Date","ReturnSource","Yield") rownames(bondReturnSourcesToGraph)<-c(1:NROW(bondReturnSourcesToGraph)) ggplot(bondReturnSourcesToGraph, stat="identity", aes(x=Date,y=Yield,fill=ReturnSource,group=ReturnSource)) + geom_area() +scale_x_date(format = "%Y") + opts(title = "Sources of Bond Return") #let's do it all over again with CPI instead of TIP breakeven getSymbols("GS10",src="FRED") #load 10yTreasury getSymbols("BAMLC0A0CM",src="FRED") #load Corporate for credit getSymbols("CPIAUCSL",src="FRED") #load CPI BAMLC0A0CM <- to.monthly(BAMLC0A0CM)[,4] index(BAMLC0A0CM) <- as.Date(index(BAMLC0A0CM)) bondReturnSources<-na.omit(merge(GS10/100-ROC(CPIAUCSL,n=12,type="discrete"), ROC(CPIAUCSL,n=12,type="discrete"),BAMLC0A0CM/100)) colnames(bondReturnSources)<-c("10yTreasury","Inflation","Credit") bondReturnSourcesToGraph<-data.frame(cbind(as.Date(index(bondReturnSources)),coredata(bondReturnSources))) colnames(bondReturnSourcesToGraph)<-c("Date","RealReturn","Inflation","Credit") bondReturnSourcesToGraph<-melt(bondReturnSourcesToGraph,id.vars=1) colnames(bondReturnSourcesToGraph)<-c("Date","ReturnSource","Yield") rownames(bondReturnSourcesToGraph)<-c(1:NROW(bondReturnSourcesToGraph)) #do line instead to handle the negative inflation and negative real returns ggplot(bondReturnSourcesToGraph, stat="identity", aes(x=Date,y=Yield)) + geom_line(aes(colour=ReturnSource)) + scale_x_date(format = "%Y") + opts(title = "Sources of Bond Return")
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.