ft.com/alphaville All times are London time
News
On Thursday we wrote about the San Fran Fed’s commodities vs global demand chart. Just so you don’t have to go back, here it is again:
We were unsure how to reconcile that chart to another, earlier chart provided by John Kemp of Reuters, from which the columnist scrutinised the relationship between QE2 and its impact a number of variables.
Well, Kemp spotted the San Fran Fed’s chart too, and his column this morning includes a devastating critique of the way it was constructed.
We quote liberally:
FedViews presents a graph entitled "Commodity prices track world demand". It uses a measure of world industrial production from the Netherlands Bureau for Economic Policy Analysis (CPB) and non-energy commodity prices from the Commodity Research Bureau (CRB). …
FedViews concludes "Global commodity prices have followed global economic activity as measured by world industrial production "¦ Commodity price swings have a direct impact on headline inflation "¦ [but] have had only a small effect on underlying inflation".
Unfortunately, the chart is profoundly misleading. Its use of different scales on the vertical axes and decision to show changes only since 2000 gives a grossly distorted view of co-movements in commodity prices and industrial output.
I have attempted to reproduce the FedViews chart (Chart 1). It is not clear what time series the Fed used for "non-energy commodity prices". I have used the Thomson Reuters/Jeffries CRB Non-Energy Total Return Index <.TRJCRBNETR>.
This is not quite the right the measurement of commodity prices since it is based on futures prices rather than cash commodities and includes an impact from roll returns which are not relevant in this context. But it produces the same shape as the original (http://graphics.thomsonreuters.com/ce/CORRECTED-CHARTS.xls).
In the Fed's illustration, commodity prices appear to move closely in line with world industrial production. Both vary by about the same amount. If anything non-energy commodity prices have risen slightly less than would be expected given the big increase in industrial production between 2000 and H1 2008, and then again since 2009.
But that is an illusion produced by the choice of different scales for the two series, which produces a pleasing graph but grossly distorts reality. If the graph is corrected to show both series on the same scale it is immediately apparent commodity prices have been far more volatile than industrial production and consumption (Chart 2).
World production rose 18.5 percent between January 2009 and January 2011, according to the CPB measure. But non-energy commodity prices soared 72 percent over the same period, according to the CRB total return index.
FedViews is taking a short-term view of commodity prices and production that fails to account for longer-term trends. If the graph is corrected to show longer time series for both production and prices it becomes apparent there is no close correlation. Between January 1994 and July 2008, world industrial production rose 72 percent but commodity prices increased 176 percent (Chart 3).
Quite a difference.
Problems with the sample size and scaling in the original chart — points also noted by some of our commenters, and which Kemp has helpfully fleshed out.
And he’s not finished:
PROTESTING TOO MUCH
There is a relationship between industrial production, but it is not linear, and industrial production is not the only or even the predominant influence on prices.
Researchers at the European Central Bank and International Monetary Fund have shown co-movements among commodity prices, as well as with industrial production, and measures of global liquidity (monetary policy). Supply-side variables such as investment, spare capacity and inventories are crucially important in explaining non-linearity.
Strong demand in emerging markets is clearly playing a central role in pushing up prices for a whole range of fuel and non-fuel commodities. But in its rush to downplay the inflation threat and exculpate the Federal Reserve from charges it is responsible for rising raw material prices, the SF Fed and other policymakers, including Bernanke, are presenting an oversimplified and potentially misleading view of how commodity prices behave. …
In contrast to FedViews, there are strong and credible arguments linking rising commodity prices in part to cheap money policies favoured by the Fed (through a combination of excess liquidity, impact on expectations, and the export of excessively loose monetary policy to emerging markets via the system of fixed exchange rates).
Global commodity inflation may or may not feed through into consumer prices (the degree of pass through has surprised Britain's central bank but seems modest in the United States, at least so far). Some degree of commodity-driven inflation may be beneficial, according to those who worry more about deflation and unemployment.
There are legitimate discussions to be held about pass-through rates and the nature of output gaps. But the question of commodity prices and monetary policy needs to be discussed with much more frankness than the Fed has managed so far. Charts with misleading scales do not help.
We remain completely in the dark about whether those “strong and credible arguments” referenced above are actually right. But whatever your views on the efficacy of QE2, Kemp is absolutely right about the importance of methodological soundness in arguing one way or the other.
As you were, then — this one’s a knockout for Kemp. (And your humble FT Alphaville correspondent will now eat a bit of crow for having passed along the original chart without being more critical…)
Related link: More on that commodities vs global demand chart – FT Alphaville
WP Cumulus Flash tag cloud by Roy Tanck and Luke Morton requires Flash Player 9 or better.
Or select a previous briefing:
© The financial Times Ltd 2011 FT and 'Financial Times' are trademarks of The Financial Times Ltd.
var oob = new Advert(AD_OOB);oob.init(); var adPop = new Advert(AD_CORPPOP);adPop.init(); var adRefresh = new Advert(AD_REFRESH);adRefresh.init(); clientAds.fetch(AD_MACROAD); clientAds.render(AD_MACROAD); clientAds.fetch(AD_MARKETINGRIB); clientAds.render(AD_MARKETINGRIB); clientAds.fetch(AD_TLBXRIB); clientAds.render(AD_TLBXRIB); clientAds.fetch(AD_DOUBLET); clientAds.render(AD_DOUBLET); clientAds.fetch(AD_INTRO); clientAds.render(AD_INTRO); clientAds.fetch(AD_HLFMPU); clientAds.render(AD_HLFMPU); clientAds.fetch(AD_HMMPU); clientAds.render(AD_HMMPU); clientAds.fetch(AD_TRADCENT); clientAds.render(AD_TRADCENT); clientAds.fetch(AD_MARKETING); clientAds.render(AD_MARKETING); clientAds.fetch(AD_BANLB); clientAds.render(AD_BANLB); clientAds.fetch(AD_MPUSKY); clientAds.render(AD_MPUSKY); clientAds.fetch(AD_MPU); clientAds.render(AD_MPU); clientAds.fetch(AD_WDESKY); clientAds.render(AD_WDESKY); clientAds.fetch(AD_NRWSKY); clientAds.render(AD_NRWSKY); clientAds.fetch(AD_ARTBOX); clientAds.render(AD_ARTBOX); clientAds.fetch(AD_FTHBOX); clientAds.render(AD_FTHBOX); clientAds.fetch(AD_TLBX); clientAds.render(AD_TLBX); clientAds.fetch(AD_FMBUT2); clientAds.render(AD_FMBUT2); clientAds.fetch(AD_LHN); clientAds.render(AD_LHN); clientAds.fetch(AD_MKTBX); clientAds.render(AD_MKTBX); clientAds.fetch(AD_OOB); clientAds.render(AD_OOB); clientAds.fetch(AD_POP); clientAds.render(AD_POP); clientAds.fetch(AD_BXBAR); clientAds.render(AD_BXBAR); clientAds.fetch(AD_DKTALRT); clientAds.render(AD_DKTALRT); clientAds.fetch(AD_DSKTICK); clientAds.render(AD_DSKTICK); clientAds.fetch(AD_PRNT); clientAds.render(AD_PRNT); clientAds.fetch(AD_INV); clientAds.render(AD_INV); clientAds.fetch(AD_MBATOP); clientAds.render(AD_MBATOP); clientAds.fetch(AD_MBABOT); clientAds.render(AD_MBABOT); clientAds.fetch(AD_MBALINK); clientAds.render(AD_MBALINK); clientAds.fetch(AD_SBHEAD); clientAds.render(AD_SBHEAD); clientAds.fetch(AD_FTNT); clientAds.render(AD_FTNT); clientAds.fetch(AD_1x1); clientAds.render(AD_1x1); clientAds.fetch(AD_CURRCON); clientAds.render(AD_CURRCON); clientAds.fetch(AD_CURRBOX); clientAds.render(AD_CURRBOX); clientAds.fetch(AD_CORPPOP); clientAds.render(AD_CORPPOP); clientAds.fetch(AD_REFRESH); clientAds.render(AD_REFRESH); clientAds.render(); setCurrentTime(1232358020000) Assanka.wp.processClipThis(); var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); try { var pageTracker = _gat._getTracker("UA-1874623-1"); pageTracker._trackPageview(); } catch(err) {} if (typeof Inferno == 'undefined') { var eid = (document.cookie.match(/EID=(\d+)/)) ? document.cookie.match(/EID=(\d+)/)[1] : 'unknown'; pageTracker._trackEvent('Debug events', 'sr23715', 'Load failure for '+eid); setTimeout(function() { var d = new Date(); document.getElementById('infdebug23715').innerHTML = (''); }, 1000); } Read Full Article »