
Exchange Rate Disorder NEW YORK – Two troubling features of the ongoing economic recovery are the depressed nature of world trade and the early revival of international global payment imbalances . Estimates by the International Monetary Fund and the United Nations indicate that the volume of international trade in 2010 will still be 7 % to 8 % below its 2008 peak , while many or most countries , including industrial nations , are seeking to boost their current accounts . Indeed , if we believe the IMF’s projections , the world economy’s accumulated current-account surpluses would increase by almost $1 trillion between 2009 and 2012 ! This is , of course , impossible , as surpluses and deficits must be in balance for the world economy as a whole . It simply reflects the recessionary ( or deflationary ) force of weak global demand hanging over the world economy . Under these conditions , export-led growth by major economies is a threat to the world economy . This is true for China , Germany ( as French Finance Minister Christine Lagarde has consistently reminded her neighbor ) , Japan , and the United States . Countries running surpluses must adopt expansionary policies and appreciate their currencies . More broadly , to the extent that major emerging-market countries will continue to lead the global recovery , they should reduce their current-account surpluses or even generate deficits to help , through increased imports , spread the benefits of their growth worldwide . But , while that implies that emerging-market currencies must strengthen , disorderly appreciations would do more harm than good . To use an American saying , it might mean throwing out the baby ( economic growth ) with the bathwater ( exchange rate appreciation ) . Consider China , which accounts for the largest share by far of world trade among emerging economies . Real appreciation of the renminbi is necessary for a balanced world economic recovery . But disorderly appreciation may seriously affect China’s economic growth by disrupting its export industries , which would generate major adverse effects on all of East Asia . China needs a major internal restructuring from exports and investments , its two engines of growth in past decades , to personal and government consumption ( education , health , and social protection in the latter case ) . But this restructuring will tend to reduce , not increase , import demand , as exports and investment are much more import-intensive than consumption . Moreover , a sharp appreciation of the renminbi could risk domestic deflation and a financial crisis . Chinese authorities certainly seem to have that interpretation of the roots of Japan’s malaise in mind as they seek to avoid rapid revaluation . The only desirable scenario , therefore , is a Chinese economy that transmits its stimulus to the rest of the world mainly through rising imports generated by rapid economic growth ( i. e. , the income effect on import demand ) , rather than by exchange-rate appreciation ( the substitution effect ) . This requires maintaining rapid growth while undertaking a major but necessarily gradual domestic restructuring , for which a smooth appreciation is much better suited . Now consider other major emerging markets . Here currency appreciation is already taking place , pushed by massive capital inflows since the second quarter of 2009 , and in some cases it can already be said to be excessive ( for example , in Brazil ) . These countries can , of course , resist upward pressure on their currencies by accumulating foreign-exchange reserves , like they did before the global financial crisis . The result is , of course , paradoxical : private funds that flow into these countries are recycled into US Treasury securities via investment of accumulated reserves . Why should emerging-market countries ’ central banks undertake this peculiar financial intermediation , which represents a major cost , as the yield of private funds is higher than that of reserves ? The implication here is that relying on free movement of capital to achieve exchange-rate appreciation and current-account deficits may generate a myriad of problems , including slower economic growth and the threat of asset bubbles and financial crises of their own . So , a more orderly way to induce current-account deficits without risking disruption of emerging economies ’ growth should be considered . One solution ( already advocated by some , including me , and adopted to some extent by a few countries ) is broader use of capital-account regulations . Surprisingly , however , this issue has been entirely absent from current global debates on financial reform . Fortunately , the IMF opened the door to discussion of this issue in a recent staff position paper . Equally important , a desirable global scenario is possibly one in which most developing countries run current-account deficits . But this requires major reforms in the global financial system to reduce the vulnerabilities that such deficits generated in the past , and that were reflected in major financial crises in the developing world . These past crises gave rise to a form of “ self-insurance ” among developing countries through reserve accumulation . This helped many of them weather the recent storm , but it also contributed to global payments imbalances . Recent IMF reforms are just a step in the direction of trying to create better financial instruments to help these countries . It is essential , in particular , to create reliable large-scale financing for developing countries during crises , through a mix of counter-cyclical issuance of SDRs and emergency financing without onerous conditions . 