Consider a small-open economy with two production sectors -- agriculture and manufacturing -- with production in each sector taking place with constant returns to scale production functions. Producers in the agricultural sector maximize profits
maxKA,LApAF(KA,LA)−wLA−rKAAnd producers in manufacturing similarly maximize
maxKM,LMpMG(KM,LM)−wLM−rKMIn equilibrium total factor demands must equal total supplies:
KA+KM=ˉKThe first order necessary conditions for an interior optimum in each sector lead to an equilibrium where the following condition must hold:
FL(KA,LA)FK(KA,LA)=wr=GL(ˉK−KA,ˉL−LA)FK(ˉK−KA,ˉL−LA)Efficiency requires that the marginal rates of technical substitutions (MRTS) be equalized across sectors (and across firms within a sector which is being assumed here). In an Edgeworth box, isoquants from each sector will be tanget to a common wage-rental ratio line.
If we assume Cobb-Douglas forms F(K,L)=KαL1−α and G(K,L)=KβL1−β the efficiency condition can be used to find a closed form solution for KA in terms of LA:
(1−α)αKALA=wr=(1−β)βˉK−KAˉL−LARearranging the expression above we can get a closed-form expression for the efficiency locus KA(LA):
KA(LA)=LA⋅ˉKβ(1−α)α(1−β)(ˉL−LA)+LAWith this we can now plot the efficiency locus curve in an Edgeworth box.
Here is and Edgeworth Box depicting the situation where LA=50 units of labor are allocated to the agricultural sector and all other allocations are efficient (along the efficiency locus).
edgeplot(50)
(LA,KA)=(50.0, 69.2) (QA, QM)=(60.8, 41.2) RTS= 2.1
If you're reading this using a jupyter server you can interact with the following plot, changing the technology parameters and position of the isoquant. If you are not this may appear blank or static.
LA = 50
interact(edgeplot, LA=(10, LBAR-10,1),
Kbar=fixed(KBAR), Lbar=fixed(LBAR),z
alpha=(0.1,0.9,0.1),beta=(0.1,0.9,0.1));
Failed to display Jupyter Widget of type interactive
.
If you're reading this message in the Jupyter Notebook or JupyterLab Notebook, it may mean that the widgets JavaScript is still loading. If this message persists, it likely means that the widgets JavaScript library is either not installed or not enabled. See the Jupyter Widgets Documentation for setup instructions.
If you're reading this message in another frontend (for example, a static rendering on GitHub or NBViewer), it may mean that your frontend doesn't currently support widgets.
The efficiency locus also allows us to trace out the production possibility frontier: by varying LA from 0 to ˉL and, for every LA, calculating KA(LA) and with that efficient production (qA,qB) where qA=F(KA(LA),LA) and qB=F(ˉK−KA(LA),ˉL−LA).
For Cobb-Douglas technologies the PPF will be quite straight unless β and α are very different from each other.
fig, ax = plt.subplots(figsize=(7,6))
ppf(30,alpha =0.8, beta=0.2)
We have a production possibility frontier which also tells us the opportunity cost of producing different amounts of good A in terms of how much of good B (via its slope or the Rate of Product Transformation (RPT) MCAMCB). This is given by the slope of the PPF. The bowed out shape of the PPF tells us that the opportunity cost of producing either good is rising in its quantity.
How much of each good will the economy produce? If this is a competitive small open economy then product prices will be given by world prices. Each firm maximizes profits which leads every firm in the A sector to increase output until MCX(qa)=PA and similarly in the B sector so that in equlibrium we must have
MCAMCB=PAPBand the economy will produce where the slope of the PPF exactly equals the world relative price. This is where national income valued at world prices is maximized, and the country is producing according to comparative advantage.
Consumers take this income as given and maximize utility. If we make heroic assumptions about preferences (preferences are identical and homothetic) then we can represent consumer preferences on the same diagram and we would have consumers choosing a consumption basket somewhere along the consumption possibliity frontier given by the world price line passing thorugh the production point.
If the economy is instead assumed to be closed then product prices must be calculated alongside the resource allocation. The PPF itself becomes the economy's budget constraint and we find an optimum (and equlibrium autarky domestic prices) where the community indifference curve is tangent to the PPF.
As previously noted, given our linear homogenous production technology, profit maximization in agriculture will lead firms to choose inputs to satisfy (1−α)αKALA=wr. This implies a relationship between the optimal production technique or capital-labor intensity KALA in agriculture and the factor price ratio wr:
KALA=α1−αwrand similarly in manufacturing
KMLM=β1−βwrFrom the first order conditions we also have:
PAFL(KA,LA)=w=PMGL(KM,LM)Note this condition states that competition has driven firms to price at marginal cost in each industry or PA=MCA=w1FL and PM=MCM=w1GL which in turn implies that at a market equilibrium optimum
PAPM=GL(KM,LM)FL(KA,LA)This states that the world price line with slope (negative) PAPM will be tangent to the production possibility frontier which as a slope (negative) MCAMCM=PAPM which can also be written as GLFL or equivalently GKFK. The competitive market leads producers to move resources across sectors to maximize the value of GDP at world prices.
With the Cobb Douglas technology we can write:
FL=(1−α)[KALA]αUsing these expressions and the earlier expression relating KALA and KMLM to wr we have:
or
PAPM=Γ[wr]β−αwhere
Solving for wr as a function of the world prices we find an expression for the 'Stolper-Samuelson' (SS) line:
The Stolper Samuelson theorem tells us how changes in the world relative price of products translates into changes in the relative price of factors and therefore in the distribution of income in society.
The theorem states that an increase in the relative price of a good will lead to an increase in both the relative and the real price of the factor used intensively in the production of that good (and conversely to a decline in both the real and the relative price of the other factor).
ssline(a=0.6, b=0.3);
This relationship can be seen from the formula. If agriculture were more labor intensive than manufacturing, so α<β, then an increase in the relative price of agricultural goods creates an incipient excess demand for labor and an excess supply of capital (as firms try to expand production in the now more profitable labor-intensive agricultural sector and cut back production in the now relatively less profitable and capital-intensive manufacturing sector). Equilibrium will only be restored if the equilibrium wage-rental ratio falls which in turn leads firms in both sectors to adopt more capital-intensive techniques. With more capital per worker in each sector output per worker and hence real wages per worker wPa and wPm increase.
To keep the presentation tidy I've put the code that is used in the notebook above at the end of the notebook. Run all code below this cell first. Then return and run all code above.
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from ipywidgets import interact, fixed
ALPHA = 0.6 # capital share in agriculture
BETA = 0.4 #
KBAR = 100
LBAR = 100
p = 1 # =Pa/Pm relative price of ag goods
def F(K,L,alpha=ALPHA):
"""Agriculture Production function"""
return (K**alpha)*(L**(1-alpha))
def G(K,L,beta=BETA):
"""Manufacturing Production function"""
return (K**beta)*(L**(1-beta))
def budgetc(c1, p1, p2, I):
return (I/p2)-(p1/p2)*c1
def isoq(L, Q, mu):
return (Q/(L**(1-mu)))**(1/mu)
def edgeworth(L, Kbar=KBAR, Lbar=LBAR,alpha=ALPHA, beta=BETA):
"""efficiency locus: """
a = (1-alpha)/alpha
b = (1-beta)/beta
return b*L*Kbar/(a*(Lbar-L)+b*L)
def edgeplot(LA, Kbar=KBAR, Lbar=LBAR,alpha=ALPHA,beta=BETA):
"""Draw an edgeworth box
arguments:
LA -- labor allocated to ag, from which calculate QA(Ka(La),La)
"""
KA = edgeworth(LA, Kbar, Lbar,alpha, beta)
RTS = (alpha/(1-alpha))*(KA/LA)
QA = F(KA,LA,alpha)
QM = G(Kbar-KA,Lbar-LA,beta)
print("(LA,KA)=({:4.1f}, {:4.1f}) (QA, QM)=({:4.1f}, {:4.1f}) RTS={:4.1f}"
.format(LA,KA,QA,QM,RTS))
La = np.arange(1,Lbar)
fig, ax = plt.subplots(figsize=(7,6))
ax.set_xlim(0, Lbar)
ax.set_ylim(0, Kbar)
ax.plot(La, edgeworth(La,Kbar,Lbar,alpha,beta),'k-')
#ax.plot(La, La,'k--')
ax.plot(La, isoq(La, QA, alpha))
ax.plot(La, Kbar-isoq(Lbar-La, QM, beta),'g-')
ax.plot(LA, KA,'ob')
ax.vlines(LA,0,KA, linestyles="dashed")
ax.hlines(KA,0,LA, linestyles="dashed")
ax.text(-6,-6,r'$O_A$',fontsize=16)
ax.text(Lbar,Kbar,r'$O_M$',fontsize=16)
ax.set_xlabel(r'$L_A -- Labor$', fontsize=16)
ax.set_ylabel('$K_A - Capital$', fontsize=16)
#plt.show()
def ppf(LA,Kbar=KBAR, Lbar=LBAR,alpha=ALPHA,beta=BETA):
"""Draw a production possibility frontier
arguments:
LA -- labor allocated to ag, from which calculate QA(Ka(La),La)
"""
KA = edgeworth(LA, Kbar, Lbar,alpha, beta)
RTS = (alpha/(1-alpha))*(KA/LA)
QA = F( KA,LA,alpha)
QM = G(Kbar-KA,Lbar-LA,beta)
ax.scatter(QA,QM)
La = np.arange(0,Lbar)
Ka = edgeworth(La, Kbar, Lbar,alpha, beta)
Qa = F(Ka,La,alpha)
Qm = G(Kbar-Ka,Lbar-La,beta)
ax.set_xlim(0, Lbar)
ax.set_ylim(0, Kbar)
ax.plot(Qa, Qm,'k-')
ax.set_xlabel(r'$Q_A$',fontsize=18)
ax.set_ylabel(r'$Q_B$',fontsize=18)
plt.show()
It's interesting to note that for Cobb-Douglas technologies you really need quite a difference in capital-intensities between the two technologies in order to get much curvature to the production function.
fig, ax = plt.subplots(figsize=(7,6))
ppf(20,alpha =0.8, beta=0.2)
def wreq(p,a=ALPHA, b=BETA):
B = ((1-a)/(1-b))*(a/(1-a))**a * ((1-b)/b)**b
return B*p
def ssline(a=ALPHA, b=BETA):
p = np.linspace(0.1,10,100)
plt.title('The Stolper-Samuelson line')
plt.xlabel(r'$p = \frac{P_a}{P_m}$', fontsize=18)
plt.ylabel(r'$ \frac{w}{r}$', fontsize=18)
plt.plot(p,wreq(p, a, b));
ssline()