Summary and analytical notes on the paper:
Lucas, Robert E. (1990) "Why Doesn't Capital Flow from Rich to Poor Countries?" American Economic Review: 92-96.
Note: To change or interact with the code and figures in this notebook first run the code section below the 'Code Section' below. Then run any code cells above.
in intensive or per-capita form: $$y = A x^\beta$$
where $$y = \frac{Y}{L} \text{ and } x = \frac{X}{L}$$
Marginal Product of Capital is:
$$r = A \beta x^{\beta -1}$$Marginal Product of Capital (MPK) as a function of income per capita:
$$r = \beta A^\frac{1}{\beta} y^\frac{\beta -1}{\beta}$$or
$$r = A \beta \left ( {\frac{y}{A}} \right ) ^\frac{\beta - 1}{\beta}$$Steps:
$$y = A x^\beta $$so $$x = \left ({\frac{y}{A}} \right)^\frac{1}{\beta} $$
substitute this into $r = A \beta x^{\beta -1}$
this implies MPK in India would have to be:
$$\frac{r_{IN}}{r_{US}} = \left [ { \frac{y_{US}}{y_{IN}} } \right] ^ \frac{1-\beta}{\beta} = 58.1$$
times higher in India! Implausibly large.
What differences in capital per worker account for this large a gap?
As $x = \left ({\frac{y}{A}} \right)^\frac{1}{\beta} $ and $\frac{y_{US}}{y_{IN}} = 15$, US workers would have to have this
$$\frac{x_{US}}{x_{IN}} = \left ( {\frac{y_{US}}{y_{IN}}} \right)^\frac{1}{\beta} = 871.4$$
multiple of the amount of capital per worker compared to India:
So if in India the capital-labor ratio is 1 in the USA it must be 871.4 !
In [8]:
print('Return to capital in India relative to USA : {:5.1f}'.format(r(y_IN, A)/r(y_US, A)))
The ratio of capital stock per worker in the USA compared to India that is implied by this difference in incomes per capita is even more unbelievable:
In [9]:
print('Capital per worker in USA relative to India : {:5.1f}'.format(kap(y_US, A)/kap(y_IN, A)))
In [10]:
lucasplot()
Human capital per worker differs substantially between USA and India. Let's adapt the framework to take this into account.
Redefine $y$ and $x$ to be output and capital per effective worker.
$$y = \frac{AX^\beta (E \cdot L)^{(1-\beta)}}{E \cdot L}$$or $$y=Ax^\beta \cdot E ^{-\beta}$$
Lucas' cites evidence from Anne Krueger that leads him to suggest a value of $E =5$, which is to say that for the same technology and capital a US worker produces five times as much as his/her Indian counterpart.
To see this first note that if we take the ratio of US to Indian income per effective worker we get:
$$\frac{y_{US}}{y_{IN}} = \frac{Y_{US}}{E \cdot L_{US}} \cdot \frac{L_{IN}}{Y_{IN}}=\frac{15}{5} = 3$$With this we can easily calculate the implied difference in marginal products of capital:
$$\frac{r(y_{IN})}{r(y_{US})}= \left ( \frac{y_{US}}{y_{IN}} \right )^\frac{1-\beta}{\beta}$$$$=3^{1.5} = 5.2$$So this lowers the factor of proportionality from 58 to 5. As Lucas puts it: "This is a substantial revision but it leaves the original paradox very much alive: a factor of five differnce in rates of return is tstill large enough to lead one to expect capital flows much larger than anything we observe (p. 93)."
We've assumed thus far that the total factor productivity parameter $A$ is the same across countries. This is unlikely. An easy way to resolve the paradox is to simply solve for the level of A{US}/A{IN} that makes he gap dissappear.
In this section Luca isn't quite doing that but he is in effect letting the values of A differ between the two countries. He motivates this with a stripped down version of his own Lucas (1988) paper on external economies, a model where human capital plays a role and where there is a positive external effect in human-capital accumulation in that he assumes that the marginal product of one's human capital is augmented by the average level of human capital in the economy. In this paper he doesn't work out this model in full but uses the story to rewrite the production function as:
$$y=A h^\gamma x^\beta $$and he then gives us some 'guestimates' as to the differences in human capital per worker in each country. As it turns out this is in effect equivalent to sticking to the original model and just assuming that $$\frac{A_{US}}{A_{IN}} = 5$$
A country with a higher level of $A$ will have everywhere higher return on capital. After a little math the adjusted ratio now becomes
$$\frac{r(y_{IN})}{r(y_{US})}= \left ( \frac{y_{US}}{y_{IN}} \right )^\frac{1-\beta}{\beta}$$$$=\frac{3^{1.5}}{5} = 1.04$$This would seem to almost resolve the paradox but Lucas in fact dismisses it as not entirely realistic. It assumes for example that knowledge spillovers across borders are zero.
This is the least often mentioned but possibly the most interesting of Lucas' hypotheses. The hypothesis is that local elites (or 'an imperial power') are able to collude to control the entry of capital into India to drive up captial rents and drive down real wages in such a way that increase firm profits. Implictly the story is that local elites control the organization of production and hence firm profits.
While at first it might seem far-fetched to believe a story like this in modern times (less far-fetched in the time of the East India Company) there is plenty of evidence that capital inflows into India and other developing countries were historicallycontrolled in part to protect the rents of local elites. Rajan and Zingales' (2013) book Saving Capitalism from the Capitalists is full of examples of local elites lobbying government bureaucrats to establish market power.
The elite is assumed to have access to international capital markets where they can borrow capital at the rate $\rho $
If the elite ran the country as a monopoly they would choose the capital-labor ratio (by varying how much capital enters the country) to maximize profits per capita:
$$f(x) - \left [{f(x)-xf'(x)} \right ] -rx$$Here (by Euler's Theorem) $f(x)-xf'(x)$ is the wage.
Implicit in Lucas' formulation is the idea that there is a large monopolist and a 'fringe' of smaller competitive firms, all producing the common output. The competitive fringe hires factors until the marginal value product equals the market factor price. By restricting capital into the economy the monopolists drives up the domestic rental price of capital. With less capital to work with the competitive fringe hires less labor and this drives down the mearket equilibrium real wage. Monopolist profits rise due to this monopsony power effect.
In [11]:
monopolyplot(rho=0.05)
In an open competitive economy all firm profits would be zero and the capital-labor ratio $x$ would be simply set from
$$f'(x) = \rho$$where $\rho$ is the world market price of capital. This implies we can find the capital labor ratio as a function of $\rho$:
Suppose we normalize the world rate or return to capital to $\rho=0.05$. Then equlibrium capital per worker in the competitive economy would be:
In [12]:
rho = 0.05
beta = 0.4
xC, _ = xoptimum(rho, beta)
print('%.1f' % xC)
The monopolist on the other hand sets x to:
$$f'(x) = \rho - xf''(x)$$Note that $f''(x)$ can be written:
$$f''(x) =(\beta -1) \frac{f'(x)}{x}$$which allows us to simplify the monopoly FOC to:
$$f'(x) = \frac{\rho}{\beta}$$Given our assumed value of beta, this means a monopolist might maintain the rate of return on capital $1/ \beta$ times higher than the international market rate $\rho$, and resists capital inflows that might push this rate down.
Solving for $x$ in this monopolized market gives:
$$x = \left ( \frac{\rho}{\beta^2} \right ) ^\frac{1}{\beta - 1}$$
In [13]:
_ , xM = xoptimum(rho, beta)
print('Capital per worker in the market-power distorted equilibrium: {:2.1f}'.format(xM))
print(' {:.0%} of the competitive level'.format(xM/xC))
Indian income per capita will be only
In [14]:
print("{:5.0f} percent".format(100*f(xM)/f(xC)))
as high as in a competitive market without barriers to capital inflows.
This is an inefficient outcome but the elites who capture the profits/rents do pretty well. They earn
In [15]:
print('profits = {:5.2f} or {:.0%} of total output'.format(profit(xM, rho), profit(xM,rho)/f(xM)))
Lucas does not cite their work but models of this sort were explored by trade economists in the 1980s (e.g. Feenstra (1980).
In a model described later, Conning (2006) explores similar factor market power distortions in a model with heterogenous agents to make predictions about the size distribution of firms within each sector.
Let's setup first order condition functions to find the x that sets them to zero.
For the competitive case: $f'(x) - \rho $ For the monopoly case: $f'(x) - \rho -x f''(x)$
In [16]:
def cfoc(x):
return mpx(x) - rho
def mfoc(x):
return mpx(x) - rho + (beta-1)*mpx(x)
and solve for the root:
In [17]:
from scipy.optimize import fsolve, brentq, minimize
xC = fsolve(cfoc, 20)[0]
xC
Out[17]:
Same as the analytical solution of course.
Now let's find the $x$ that maximizes monopoly profits (we need to provide a guess value):
In [18]:
xM = fsolve(mfoc, 5)[0]
xM
Out[18]:
We could have instead directly maximized profits (minimized negative profits) with an optimization routine:
In [19]:
def negprofit(x):
return - profit(x, rho)
res = minimize(negprofit, 5, method='Nelder-Mead')
res.x[0]
Out[19]:
To unclutter the notebook above much of the code has been moved to this section. To re-create or modify any content go to the 'Cell' menu above run all code cells below by choosing 'Run All Below'. Then 'Run all Above' to recreate all output above (or go to the top and step through each code cell manually).
In [1]:
%matplotlib inline
import numpy as np
import matplotlib.pylab as plt
In [2]:
A = 1
rho = 0.05
beta = 0.4
y_US = 15
y_IN = 1
def f(x):
return x**beta
def mpx(x):
return beta*x**(beta-1)
def r(y, A):
return beta * (A**(1-beta)) * y**((beta-1)/beta)
def kap(y, A):
return (y/A)**(1/beta)
In [3]:
def xoptimum(rho, beta):
xC = (rho/beta)**(1/(beta-1))
xM = (rho/beta**2)**(1/(beta-1))
return xC, xM
In [4]:
def lucasplot():
y = np.linspace(0.1,20,100)
plt.figure(figsize=(12, 6))
plt.subplot(2,1,1)
plt.plot(y,kap(y, A))
plt.ylabel("$k$ -- capital per worker")
plt.ylim(0,kap(y_US +1, A))
plt.axvline(y_IN,color='k',ls='dashed')
plt.axvline(y_US,color='k',ls='dashed')
plt.title("capital per worker")
plt.subplot(2,1,2)
plt.plot(y,r(y,A))
plt.xlabel("$y$ -- output per worker")
plt.ylabel("$4$ -- marginal product capital")
plt.title("return to capital")
plt.ylim(0,r(y_IN,A))
plt.axvline(y_IN,color='k',ls='dashed')
plt.axvline(y_US,color='k',ls='dashed')
plt.annotate('India', xy=(y_IN, r(y_IN,A)), xytext=(y_IN +2, r(y_IN,A)*0.75),
arrowprops=dict(facecolor='black', shrink=0.05),)
plt.annotate('USA', xy=(y_US, r(y_US,A)), xytext=(y_US +2, r(y_US,A)+0.1),
arrowprops=dict(facecolor='black', shrink=0.05),);
In [5]:
def profit(x, rho):
return f(x) -(f(x) -mpx(x)*x) - rho*x
In [6]:
x = np.linspace(0.1,40,100)
def monopolyplot(rho):
prf = profit(x, rho)
xC, xM = xoptimum(rho, beta)
fig, ax = plt.subplots(1, 1, figsize=(12, 6))
plt.plot(x,prf)
plt.ylim(0,max(prf)*1.1)
plt.title('Monopoly Profits')
plt.axvline(xC,ls='dashed')
plt.axvline(xM,ls='dashed')
plt.axhline(0,ls='dashed')
plt.xlabel("$x$ -- capital per worker")
plt.annotate('Competitive', xy=(xC, 0), xytext=(xC+3, 0.1),
arrowprops=dict(facecolor='black', shrink=0.05),)
plt.annotate('Market Power', xy=(xM, profit(xM,rho)), xytext=(xM+3, profit(xM,rho)-0.1),
arrowprops=dict(facecolor='black', shrink=0.05),)
plt.show()
In [7]:
monopolyplot(0.05)