If we’re cooking up a bond return, we have access to 3 ingredients: inflation, credit, and real. Historically, the recipe looks like this (as described in Historical Sources of Bond Returns).
0-5 parts inflation
+ 1-2 parts credit
+ 1-3 parts real
and the chart looks like this.
In the good old days credit did not apply to U S Treasuries, but let’s just assume that given the current situation that there is a 1.4% chance of a loss of 50% due to credit (equivalent to the current CDS price on 10y US Treasuries of 0.70%). The inflation component should not include this credit risk compensation, so for US Treasuries with no credit component, this number must be included in the real component. When US 10y TIPS yield 0% but even worse -0.25% last week, that means investors find -1% real real returns a yummy recipe.
I think I need to look elsewhere for opportunity.
Access to the US 10y CDS for everybody is available at Bloomberg.
require(PerformanceAnalytics) 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,
bondReturnSources[,1]+bondReturnSources[,2]+bondReturnSources[,3]) #add for total
main="Historical Sources of Bond Returns",
ylab="Yield as %",