In this notebook I simulate the model from Paul Krugman’s “Scale Economies, Product Differentiation, and the Pattern of Trade,” AER, 1980.

Main parameters:

$$\theta$$: from $$U=\sum_i c_i^{\theta}$$, where $$0<\theta<1$$

$$L,L^*$$: population of “home” and “foreign” (*) regions

$$\alpha,\beta$$: fixed and marginal cost parameters from $$l_i=\alpha+\beta*x_i$$

$$g$$: transportation cost, if $$1$$ unit is shipped only $$g$$ arrives in the other country

Wages and prices are not uniquely defined in autarky and in the case of trade only the ratio $$\omega=w/w^*$$ is defined. Therefore I normalize the wage of the home country to $$w=1$$, which will imply the price will be $$p=w*\beta/\theta=\beta/\theta$$ in equilibrium.

Lastly, in all equilibria the number of firms and output of each good is simply a function of the exogenous parameters:

$$x=\frac{\alpha\theta}{\beta(1-\theta)}$$, $$n=\frac{L(1-\theta)}{\alpha}$$ and $$n^*=\frac{L^*(1-\theta)}{\alpha}$$

#Main parameters:
theta=0.75
l.home=900
l.foreign=100
alpha=0.75
beta=0.5
g.transport=0.15
w.home=1
w.foreign=1
#Derived variables
p.home=w.home*(beta/theta)
p.foreign=w.foreign*(beta/theta)
x=(alpha*theta)/(beta*(1-theta))
n.home=l.home*(1-theta)/alpha
n.foreign=l.foreign*(1-theta)/alpha

Functions:

The main function is the balance of payments (equation 14), which Krugman uses to solve for $$\omega=w/w^*$$

$B=\omega L L^*\left[\frac{\sigma^*}{\sigma^*L+L^*}-\frac{\sigma}{L+\sigma L^*}\right]$ The terms $$\sigma$$ and $$\sigma^*$$ are functions of $$\omega$$ and $$g$$. Specifically, $$\sigma=\omega^{\frac{1}{1-\theta}}g^{\frac{\theta}{1-\theta}}$$ and $$\sigma^*=\omega^{\frac{-1}{1-\theta}}g^{\frac{\theta}{1-\theta}}$$

However, I find that this equation does NOT lead to balanced payments. I think that there is actually an error and the true equation should be: $B=\omega L L^*\left[\frac{\sigma^*}{\omega\sigma^*L+L^*}-\frac{\sigma}{\omega L+\sigma L^*}\right]$ This equation also yields the same values as a balance of payments equation I found in slides by Alexander Tarasov: $\omega=\frac{L^*+\omega^{\frac{\theta}{\theta-1}}g^{\frac{\theta}{\theta-1}}L}{L+\omega^{\frac{\theta}{1-\theta}}g^{\frac{\theta}{\theta-1}}L}$

#Balance of Payments using equation 14 from Krugman 1980
BofP<-function(par,theta,l.home,l.foreign,g.transport) {
sigma.home<-(par^(1/(1-theta)))*(g.transport^(theta/(1-theta))) #only defined within function BofT
sigma.foreign<-(par^(-1/(1-theta)))*(g.transport^(theta/(1-theta)))
par*l.home*l.foreign*
((sigma.foreign/(sigma.foreign*l.home+l.foreign))-(sigma.home/(l.home+sigma.home*l.foreign)))
}

#Balance of Payments using my equation
my.bofp2<-function(par,theta,l.home,l.foreign,g.transport) {
sigma.home<-(par^(1/(1-theta)))*(g.transport^(theta/(1-theta))) #only defined within this function
sigma.foreign<-(par^(-1/(1-theta)))*(g.transport^(theta/(1-theta)))
par*l.home*l.foreign*
((sigma.foreign/(par*sigma.foreign*l.home+l.foreign))-(sigma.home/(par*l.home+sigma.home*l.foreign)))
}
#Equation from Alexander Tarasov slides
tarasov.bofp<-function(par,theta,l.home,l.foreign,g.transport) {
tau<-1/g.transport
num<-l.foreign+par^(theta/(theta-1))*l.home*tau^(theta/(1-theta))
denom<-l.home+par^(theta/(1-theta))*l.foreign*tau^(theta/(1-theta))
(num/denom)-par
}

Autarky In autarky there is no trade. Normalize wage in each country to 1: $$w=1$$, $$w^*=1$$.

Home Foreign
number of firms $$n$$: 300 number of firms $$n^*$$: 33.3333333
domestic price $$p$$: 0.6666667 domestic price $$p^*$$: 0.6666667
output per firm $$x$$: 4.5 output per firm $$x$$: 4.5

With Trade and Positive Transportation Costs Balance of payments graph:

curve(my.bofp2(x,theta,l.home,l.foreign,g.transport),from=0.25,to=2,
xlab="Ratio of home-to-foreign wages: omega",ylab="balance of payments",
main="Balance of payments versus home-to-foreign wage ratio")
abline(h=0)

I graph the balance of payments against $$\omega$$ using Krugman’s equation 14 in black and my equation in red:

curve(BofP(x,theta,l.home,l.foreign,g.transport),from=0.25,to=2,
xlab="Ratio of home-to-foreign wages: omega",ylab="balance of payments",
main="Balance of payments versus home-to-foreign wage ratio")
curve(my.bofp2(x,theta,l.home,l.foreign,g.transport),from=0.25,to=2,add=TRUE,col="red")
abline(h=0)

Interestingly, these are not the same, and further they have different solutions. To find the solutions I use the uniroot() function, which allows me to find when the balance of payments is zero, or a value $$\omega^*$$ such that $$B(\omega^*)=0$$.

#Solve for value of omega that sets balance of trade equal to zero
omega.root.krug<-uniroot(BofP,c(0.00001,2),g.transport=g.transport,theta=theta,l.home=l.home,l.foreign=l.foreign)
omega.root.ns<-uniroot(my.bofp2,c(0.00001,2),g.transport=g.transport,theta=theta,l.home=l.home,l.foreign=l.foreign)
omega.root.tarasov<-uniroot(my.bofp2,c(0.00001,2),g.transport=g.transport,theta=theta,l.home=l.home,l.foreign=l.foreign)
omega.star.krug<-as.numeric(omega.root.krug[1])
omega.star.ns<-as.numeric(omega.root.ns[1])

These are close, but not the same. The Krugman balance of payments is zero when $$\omega=$$ 1.3145932 but my equation is zero when $$\omega=$$ 1.3666145. To check these, I now see which value leads to prices where demand is equal to supply. The number of firms in each country is always fixed, with $$n$$=300 and $$n^*$$=33.3333333, and the output per firm in both region is always $$x$$=4.5. Therefore total output in the home country is $$nx$$=1350 and total output in the foreign country is $$n^*x$$=150. Let $$c_i$$ be the consumption of a typical foreign good, by an individual in the home country, and $$c^*_i$$ be the consumption of a typical home-country good, by an individual in the foreign country. Then the total output of the home country should be equal to the consumption by consumers in the home country, $$c$$, and consumers in the foreign country, multiplied by the shipping cost: $$nx=n(Lc+L^*c^*_i/g)$$, or at the firm level: $$x=Lc+L^*c^*_i/g$$. Similarly, it should be that $$x=L^*c^*+Lc_i/g$$.

To do so, first I need to calculate demand. Define the price index as: $P=\left[\displaystyle\sum_{i=1}^n p_i^{\frac{\theta}{\theta-1}}\right]^{\frac{\theta-1}{\theta}}$ Then demand for good $$i$$ in any country can be written as: $c_i=\frac{w p_i^{\frac{1}{\theta-1}}}{\displaystyle\sum_{i=1}^n p_i^{\frac{\theta}{\theta-1}}}=\left(\frac{p_i}{P}\right)^{\frac{1}{\theta-1}}\frac{w}{P}$ Now I calculate variables using the two roots.

output.home<-n.home*x
output.foreign<-n.foreign*x
#Krugman root
w.foreign.k=w.home/omega.star.krug
p.foreign.k<-beta/(omega.star.krug*theta)
p.home.import.k<-p.foreign.k/g.transport
p.foreign.import.k<-p.home/g.transport
pricesum.home.k<-n.home*(p.home^(theta/(theta-1)))+n.foreign*(p.home.import.k^(theta/(theta-1)))
pricesum.foreign.k<-n.home*(p.foreign.import.k^(theta/(theta-1)))+n.foreign*(p.foreign.k^(theta/(theta-1)))
pindex.home.k=(n.home*(p.home^(theta/(theta-1)))+n.foreign*(p.home.import.k^(theta/(theta-1))))^((theta-1)/theta)
pindex.foreign.k=(n.home*(p.foreign.import.k^(theta/(theta-1)))+n.foreign*(p.foreign.k^(theta/(theta-1))))^((theta-1)/theta)
c.h.h.k=w.home*p.home^(1/(theta-1))/pricesum.home.k
c.h.f.k=w.home*p.home.import.k^(1/(theta-1))/pricesum.home.k
c.f.f.k=w.foreign.k*p.foreign.k^(1/(theta-1))/pricesum.foreign.k
c.f.h.k=w.foreign.k*p.foreign.import.k^(1/(theta-1))/pricesum.foreign.k
#u.home=n.home*(c.h.h^theta)+n.foreign*(c.h.f^theta)
#u.foreign=n.home*(c.f.h^theta)+n.foreign*(c.f.f^theta)
home.demand.k<-(c.h.h.k*n.home*l.home+c.f.h.k*n.home*l.foreign*(1/g.transport))
foreign.demand.k<-n.foreign*(c.f.f.k*l.foreign+c.h.f.k*(1/g.transport)*l.home)

#Using my root------------------------------------------------
w.foreign.ns=w.home/omega.star.ns
p.foreign.ns<-beta/(omega.star.ns*theta)
p.home.import.ns<-p.foreign.ns/g.transport
p.foreign.import.ns<-p.home/g.transport
pricesum.home.ns<-n.home*(p.home^(theta/(theta-1)))+n.foreign*(p.home.import.ns^(theta/(theta-1)))
pricesum.foreign.ns<-n.home*(p.foreign.import.ns^(theta/(theta-1)))+n.foreign*(p.foreign.ns^(theta/(theta-1)))
pindex.home.ns=(n.home*(p.home^(theta/(theta-1)))+n.foreign*(p.home.import.ns^(theta/(theta-1))))^((theta-1)/theta)
pindex.foreign.ns=(n.home*(p.foreign.import.ns^(theta/(theta-1)))+n.foreign*(p.foreign.ns^(theta/(theta-1))))^((theta-1)/theta)
c.h.h.ns=w.home*p.home^(1/(theta-1))/pricesum.home.ns
c.h.f.ns=w.home*p.home.import.ns^(1/(theta-1))/pricesum.home.ns
c.f.f.ns=w.foreign.ns*p.foreign.ns^(1/(theta-1))/pricesum.foreign.ns
c.f.h.ns=w.foreign.ns*p.foreign.import.ns^(1/(theta-1))/pricesum.foreign.ns
#u.home=n.home*(c.h.h^theta)+n.foreign*(c.h.f^theta)
#u.foreign=n.home*(c.f.h^theta)+n.foreign*(c.f.f^theta)
home.demand.ns<-(c.h.h.ns*n.home*l.home+c.f.h.ns*n.home*l.foreign*(1/g.transport))
foreign.demand.ns<-n.foreign*(c.f.f.ns*l.foreign+c.h.f.ns*(1/g.transport)*l.home)
Krugman BofP My BofP
home wage $$w$$: 1 home wage $$w$$: 1
foreign wage $$w$$: 0.7606916 foreign wage $$w$$: 0.7317352
home output $$nx$$: 1350 home output $$nx$$: 1350
home good demand $$nx=n(Lc+L^*c^*_i/g)$$: 1350.3563456 home good demand $$nx=n(Lc+L^*c^*_i/g)$$: 1349.9999934
foreign output $$n^*x$$: 150 home output $$nx$$: 150
foreign good demand $$n^*x=n^*(L^*c^*+Lc_i/g)$$: 149.5315505 foreign good demand $$n^*x=n^*(L^*c^*+Lc_i/g)$$: 150.000009
home import demand $$c_i$$: 7.5531954^{-6} home import demand $$c_i$$: 8.8207131^{-6}
foreign import demand $$c^*_i$$: 7.5273803^{-6} foreign import demand $$c^*_i$$: 6.4543938^{-6}