Quick Update on the Components of Bond Returns
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
In Real Squeeze, -1% Guaranteed Real Real Return! Yummy??, and Historical Sources of Bond Returns, I offer some historical perspective on the only sources of bond returns: inflation, real returns, and credit. Assuming no credit risk in US Treasuries (probably not a good assumption given this Bloomberg quote on CDS on US Treasuries), the formula is fixed, and all inputs except inflation are provided ex-ante. While bond prices can fluctuate wildly (Extreme Bond Returns), the experience over the life of a bond and a bond index is predetermined by the yield to maturity. Unfortunately, that guaranteed experience in inflation or deflation is not so pleasant.
While everyone should know R, I understand that some readers would prefer an easier route. FRED as usual comes to the rescue. Unfortunately though, labeling is not allowed. The codes can be translated as follows:
- DBAA = total return on BAA
- DBAA – (DGS10 – DFII10) = credit return
- DGS10 – DFII10 = inflation (expected)
- DGS10 = real return
In the spirit of continuous improvement, here is the chart now using lattice and latticeExtra.
![]() |
From TimelyPortfolio |
require(quantmod) | |
require(PerformanceAnalytics) | |
require(lattice) | |
require(latticeExtra) | |
getSymbols("GS10",src="FRED") #load 10yTreasury | |
getSymbols("BAA",src="FRED") #load Corporate for credit | |
getSymbols("CPIAUCSL",src="FRED") #load CPI for inflation | |
bondReturnSources<-na.omit(merge(ROC(CPIAUCSL,12,type="discrete")*100, | |
BAA-GS10,GS10-ROC(CPIAUCSL,12,type="discrete")*100)) | |
bondReturnSources<-merge(bondReturnSources, | |
bondReturnSources[,1]+bondReturnSources[,2]+bondReturnSources[,3]) #add for total | |
colnames(bondReturnSources)<-c("Inflation","Credit","Real","Total") | |
chart.TimeSeries(bondReturnSources,legend.loc="bottom", | |
main="Historical Sources of Bond Returns", | |
ylab="Yield as %", | |
colorset=c("darkolivegreen3","cadetblue","goldenrod","gray70")) | |
xyplot(bondReturnSources, | |
col = c("darkolivegreen3","cadetblue","goldenrod","gray70"), | |
lwd = 3, | |
par.settings = theEconomist.theme(box = "transparent"), | |
lattice.options = theEconomist.opts(), | |
main = "Sources of US Bond Returns") |
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.