Monday, November 5, 2007

CRB Core Inflation? Hardly.

Barry Ritholtz uses the CRB "excluding food and energy" in a post today to show how high 'core' inflation is. I found the data in the post's chart at A bit of investigation into the data revealed the "ex food & energy" series to be the CRB Raw Industrials Index.

The Raw Industrials Index is composed of hides, tallow, copper scrap, lead scrap, steel scrap, zinc, tin, burlap, cotton, print cloth, wool tops, rosin, and rubber. All but hides, tallow, rosin, and rubber are contained in two other sub-groups:

  1. The "metals" sub-index (40% of the 'core' index) contains copper scrap, lead scrap, steel scrap, tin, and zinc.
  2. The "textiles and fibers" sub-index (30% of the 'core' index) is comprised of burlap, cotton, print cloth, and wool tops.
Therefore, this 'core' index is mainly composed of 5 metals and 4 textiles. Further, if you decompose the rise in the raw industrials index into its two main components - metals and textiles - you can see that the recent rise in metals prices is the main cause of the rise in its parent index (see chart - click to enlarge).

Barry has presented some good arguments against the use of core inflation in monetary policy. This is not one of them, however.

UPDATE: I should have guessed, Barry intended to be a bit over-the-top in his post...

For those interested, the R code used to create the chart is below.

rawInd <- economagicImport("crb/crb12", freq="monthly")@data[-(1:7),]
rawInd$DATE <- as.Date(rawInd$DATE)
textiles <- economagicImport("crb/crb13", freq="monthly")@data[-(1:7),]
textiles$DATE <- as.Date(textiles$DATE)
metals <- economagicImport("crb/crb14", freq="monthly")@data[-(1:7),]
metals$DATE <- as.Date(metals$DATE)

plot( rawInd$DATE, rawInd$VALUE, type="l",
ylim = range( c( rawInd$VALUE, textiles$VALUE, metals$VALUE ) ),
main = "Selected CRB Indicies",
xlab = "Date", ylab = "Index Value",
lwd = 2 )
lines( textiles$DATE, textiles$VALUE, col="red" , lwd = 2 )
lines( metals$DATE, metals$VALUE, col="blue", lwd = 2 )
legend( "topleft",
legend = c("Raw Industrials","Textiles Sub Index","Metals Sub Index"),
col = c( "black", "red", "blue" ),
lty = c( 1, 1, 1 ),
lwd = c( 2, 2, 2 ),
bty = "n", inset = 0.05 )

savePlot( "Select_CRB_Indicies", type="png" )


Barry Ritholtz said...


We are in total agreement -- but you may be overlooking my main point: Looking at the core (ex-food and energy) is a silly exercise.

It's what I call inflation ex-inflation -- the basket minus the stuff going up the most in price.

But since so many "Core-heads" keep on insisting on using it, I dug up that chart.

But I'm with you -- the way the core is used, it totally misrepresents inflation.

Josh Ulrich said...

I may have missed your main point due to the over-the-top nature of the post. ;-)

I agree that inflation ex-inflation is silly if you intend to represent actual price changes. However, median and trimmed-mean measures of price changes remove some volatility from the headline numbers (which helps gauge the trend in inflation) without excluding specific goods.

If you're looking for the trend - i.e. ignoring levels - in inflation, would you agree that median and trimmed-mean measures are useful in that regard?

Bill said...

I realize this is on an older post but I can't get the economagic command to work. I was having a problem and I ran across your example. When I run your code I have the same problem where there is an error downloading the data. Any ideas? Thanks. Bill

Josh Ulrich said...

Hi Bill,

For some reason, either a change in or Rmetrics, the first 7 observations are missing.

I've updated the post with a (currently) working version of the guilty block of code.