# Guerrieri et al. (2020): Negative Supply Shocks That Cause Demand Shortages¶

## The Model¶

In this timely and important contribution, Guerrieri, Lorenzoni, Straub, and Werning (2020) analyze the effects of supply shocks such as shutdowns, layoffs, and firm exits due to COVID-19. They show that in a two-sector model, these supply shocks can trigger changes in aggregate demand larger than the shocks themselves. This is the case when the elasticity of substitution across sectors is not too large and the inter-temporal elasticity of substitution is sufficiently high.

Their model is deterministic and the supply shock is unexpected. They also assume maximally tight borrowing constraint. We extend their model to allow for stochastic, recurrent shocks and more relaxed borrowing constraint. This extension can be solved easily using our toolbox.

We follow closely the notation in Guerrieri et al. (2020). The total population is normalized to one, with a fraction \(\phi\) of agents working in sector 1 and the remaining fraction \(1-\phi\) of agents working in section 2. We assume that workers are perfectly specialized in their sector. Sector 1 is the contact-intensive sector that is directly affected by the supply shock.

The labor endowment of workers in sector 2 is constant and is set to \(\bar{n}\), while the labor endowment of workers in sector 1 follows a two-point Markov process with state in \(\{1,2\}\), where \(1\) corresponds to normal times and \(2\) corresponds to pandemics. During normal times, their labor endowment is \(n_1=\bar{n}\), while when a supply shock hits, their labor endowment drops to \(n_1=\delta\bar{n}\) with \(\delta<1\). In the COVID-19 example, as sector 1 is contact-intensive and a fraction \(\delta\) of its production is shut down when the pandemic hits. On the other hand, sector 2 is unaffected. The transition matrix between these two states is

in which \(1-\pi_{1}\) is a small probability for the economy to enter the supply-driven crisis, and \(\pi_{2}\) is the probability for the crisis to last for one more period.

The production technology is linear in both sectors:

for \(j=1,2\). Competitive firms in each sector \(j\) hire workers at wage \(W_{jt}\) and sell their products at price \(P_{jt}\). Prices are flexible, and given the market structure we have \(P_{jt}=W_{jt}\). The consumer’s utility function is

in which

which features constant elasticity of subsitution \(1/\rho\) between the two goods and constant intertemporal elasticity of substitution \(1/\sigma\).

As in Guerrieri et al. (2020), here we set good 2 to be the numeraire, i.e., \(P_{2t}\equiv1\). Workers in sector \(j\) maximize (9) subject to

where they allocate their labor income and bond holding from the previous period, \(a_{t}^{j}\) among consumption goods produced in the two sectors and bond holding into the next period. Interest rate \(r_{t}\) is determined competitively.

In addition, we assume that the workers are subject to the following borrowing constraint:

Denote sector \(j\) workers’ Lagrangian multiplier for the budget constraint (10) as \(\beta^{t}\lambda_{t}^{j}\), and the multiplier for the borrowing constraint as \(\beta^{t}\mu_{t}^{j}\). The first-order conditions for the workers’ optimal decision are:

And we also have the market clearing conditions for bond and consumption good 2:

and the market clearing conditions of consumption good 1 is implied by Walras’ law.

We use \(a^1_t\) as the endogenous state variable and look for a recursive equilibrium as a mapping from \(\left(z_t,a^1_t\right)\) to the allocation and prices that satisfies the first-order conditions and market clearing conditions above.

Notice that by the pricing equation (12),

which means the consumption shares of workers in sector 1 are the same between these two consumption goods. Denote the consumption share of workers in sector 1 as \(\tilde{c}_{1t}\), then

which leads to

where \(Y_{t}=\left[\phi n_{1t}^{1-\rho}+\left(1-\phi\right)\bar{n}^{1-\rho}\right]^{\frac{1}{1-\rho}}\), and

In total, for each \(z_t\) and \(a^1_t\), the minimal equilibrium system can be represented by 5 unknowns: \(\left\{ \tilde{c}_{1t},a_{t+1}^{1},\mu_{t}^{1},\mu_{t}^{2},r_{t+1}\right\}\), and can be solved by a system of 5 equations: the budget of workers in sector 1, equation (10), and the FOC in equation (13), and slackness condition in equation (14) for \(j=1,2\).

### Calibration¶

We use quarters for model periods and standard parameters in the literature. For preferences, we use \(\beta = 0.99\) as the quarterly discount factor. The inverse inter-temporal elasticity of substitution is set at \(\sigma = 0.5\) (strictly less than \(1\) as required by the analytical results Guerrieri et al. (2020) for supply shocks to trigger larger aggregate demand responses). We vary the inverse intra-temporal elasticity of substitution \(\rho\) between \(0.1\) and \(0.9\).

For labor market parameters, we normalize \(\bar{n}\) at \(1\). The share of the contact-intensive sector \(\phi\) is set at \(0.2\). We assume that when the pandemic shocks hit, labor supply in the contact-intensive sector declines by \(50\%\) (roughly consistent with the increase in unemployment claims in the U.S. during the pandemics). We assume that the pandemics last for 2 quarters on average, so \(\pi_2 = 0.5\) and \(\pi_1\) is chosen so that the economy stays in pandemics in around \(0.5\%\) of the times (consistent with historical frequency). Borrowing limit \(\bar{A}\) is set at \(30\%\) of the wage in normal times. For the benchmark results, we use \(\rho = 0.75>\sigma = 0.5\).

## The gmod File and Results¶

The model can be solved with the following gmod file (`GLSW`

).

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | ```
% Created: April-9-2020
% This model generalizes the two-period model in Guerrieri et.al (2020) studying the macro effect of COVID-19 with recurrent shocks to labor supply
% Parameters
parameters beta rho sigma phi nbar delta Abar;
beta = 0.99; % discount factor
rho = 0.75; % 1/rho intratemporal elasticity
sigma = 0.5; % 1/sigma intertemporal elasticity
phi = 0.2; % share of sector 1
nbar = 1; % normal labor endowment
delta = 0.5; % fraction of labor endowment during crisis
Abar = 0.3; % borrowing limit
TolEq = 1e-8; % Solve with high adccuracy
% Shocks
var_shock n1;
shock_num = 2;
pi2 = 0.5; % the pandemic lasts for 2 quarters
freq = 0.005; % frequency of pandemic: 0.5 percent of the time.
pi1 = 1 - (freq/(1-freq))*(1-pi2);
shock_trans = [pi1,1-pi1;
1-pi2,pi2];
n1 = [nbar,delta*nbar];
% Endogenous States
var_state a1;
Ngrid = 301;
a1_lb = -Abar;
a1_ub = (1-phi)*Abar/phi;
a1 = linspace(a1_lb,a1_ub,Ngrid);
% Last period
var_policy_init c1_shr;
inbound_init c1_shr 0 1;
var_aux_init P1 log_lambda1 log_lambda2;
model_init;
c1_1 = c1_shr*(phi*n1)/phi;
c2_1 = (1-c1_shr)*(phi*n1)/(1-phi);
c1_2 = c1_shr*((1-phi)*nbar)/phi;
c2_2 = (1-c1_shr)*((1-phi)*nbar)/(1-phi);
Y = (phi*n1^(1-rho) + (1-phi)*nbar^(1-rho))^(1/(1-rho));
lambda1 = (c1_shr/phi*Y)^(-sigma)*(Y/nbar)^rho;
lambda2 = ((1-c1_shr)/(1-phi)*Y)^(-sigma)*(Y/nbar)^rho;
log_lambda1 = log(lambda1);
log_lambda2 = log(lambda2);
% price of good 1
P1 = ((c1_1/phi)/(c1_2/(1-phi)))^(-rho);
% wage of sector 1
W1 = P1;
budget1_resid = P1*c1_1 + c1_2 - W1*n1 - a1;
equations;
budget1_resid;
end;
end;
var_interp log_lambda1_interp log_lambda2_interp;
initial log_lambda1_interp log_lambda1;
initial log_lambda2_interp log_lambda2;
% Updates
log_lambda1_interp = log_lambda1;
log_lambda2_interp = log_lambda2;
% Endogenous variables, bounds, and initial values
var_policy c1_shr a1n mu1 mu2 r;
inbound c1_shr 0 1;
inbound a1n -Abar (1-phi)*Abar/phi;
inbound mu1 0 1;
inbound mu2 0 1;
inbound r -0.5 0.5;
% Other equilibrium variables
var_aux a2 P1 log_lambda1 log_lambda2;
model;
a2 = -a1*phi/(1-phi);
c1_1 = c1_shr*(phi*n1)/phi;
c2_1 = (1-c1_shr)*(phi*n1)/(1-phi);
c1_2 = c1_shr*((1-phi)*nbar)/phi;
c2_2 = (1-c1_shr)*((1-phi)*nbar)/(1-phi);
Y = (phi*n1^(1-rho) + (1-phi)*nbar^(1-rho))^(1/(1-rho));
lambda1 = (c1_shr/phi*Y)^(-sigma)*(Y/nbar)^rho;
lambda2 = ((1-c1_shr)/(1-phi)*Y)^(-sigma)*(Y/nbar)^rho;
log_lambda1 = log(lambda1);
log_lambda2 = log(lambda2);
% price of good 1
P1 = ((c1_1/phi)/(c1_2/(1-phi)))^(-rho);
% wage of sector 1
W1 = P1;
log_lambda1Future' = log_lambda1_interp'(a1n);
log_lambda2Future' = log_lambda2_interp'(a1n);
lambda1Future' = exp(log_lambda1Future');
lambda2Future' = exp(log_lambda2Future');
budget1_resid = P1*c1_1 + c1_2 + a1n/(1+r) - W1*n1 - a1;
euler_residual = 1 - beta*(1+r) * GDSGE_EXPECT{lambda1Future'}/lambda1 - mu1;
euler_residua2 = 1 - beta*(1+r) * GDSGE_EXPECT{lambda2Future'}/lambda2 - mu2;
a2n = -a1n*phi/(1-phi);
slackness1 = mu1*(a1n + Abar);
slackness2 = mu2*(a2n + Abar);
equations;
budget1_resid;
euler_residual;
euler_residua2;
slackness1;
slackness2;
end;
end;
simulate;
num_periods = 10000;
num_samples = 20;
initial a1 0;
initial shock 1;
var_simu a2 P1 r c1_shr;
a1' = a1n;
end;
``` |

With the generated files returned by the online compiler, we can run the *iter_GLSW* procedure to solve the policy iterations,
and then pass the converged solutions to the *simulate_GLSW* procedure to simulate the ergodic set of the model.

We first solve the policy iterations by calling *iter_GLSW* in MATLAB, which produces

```
>> IterRslt = iter_GLSW;
Iter:10, Metric:0.00484804, maxF:8.57919e-09
Elapsed time is 0.170275 seconds.
...
Iter:1289, Metric:8.94807e-09, maxF:9.65947e-09
Elapsed time is 0.079467 seconds.
```

Then we pass the converged solutions to *simulate_GLSW*, which produces
(depending on your random seed; set rng(0823) to produce the exact results below)

```
>> SimuRslt = simulate_GLSW(IterRslt);
Periods: 1000
shock a1 a2 P1 r c1_shr
1 0.3994-0.09985 1 0.01018 0.2006
Elapsed time is 0.653297 seconds.
...
Periods: 10000
shock a1 a2 P1 r c1_shr
1 1.18 -0.2951 1 0.01018 0.2023
Elapsed time is 0.761543 seconds.
```

Then we can inspect the policy functions for interest rate and the stationary distribution of workers 1’s bond holding

```
>> figure; plot(IterRslt.var_state.a1,IterRslt.var_policy.r);
figure; histogram(SimuRslt.a1);
```

With some cosmetic modifications we get the following figure.

The upper panel in the figure shows the interest rate as a function of the endogenous state variable \(a^1_t\) in normal times (\(z=1\)) and during pandemics (\(z=2\)). Interest rate is lower during pandemics, which reflects that the aggregate demand response outweighs the supply shock, a result emphasized in Guerrieri et al. (2020). In addition, the figure also shows that the effect is stronger when the net worth of workers in the contact-intensive sector is low. The lower panel plots the ergodic distribution of bond holding of workers in the contact_intensive sector. The possibility of pandemics leads these workers to do precautionary saving, sometimes up to the borrowing limit of workers in sector 2. However, the precautionary saving does not undo the results in Guerrieri et al. (2020).

Starting from the model’s ergodic set, we can simulate the *generalized impulse response functions* by comparing two sets of sample paths drawn from the model’s ergodic set: one benchmark,
the other with the *pandemic* shock hitting at the first period and the transition of the exogenous shock turned on. Download the MATLAB script file that calls the toolbox codes to simulate the
*generalized impulse response functions* `main_simulate_irf.m`

.

As shown, while interest rate reverts relatively quickly to the pre-pandemic level after the shock, workers in sector 1 suffer from a persistent, long-lasting wealth lost.

To further investigate the robustness of the results, the following figure plots the average interest rate before and after the pandemic shocks hit the economy as we vary \(\rho\). The figure shows that when \(\rho>\sigma\) (more precisely \(1/\rho<1/\sigma\)), interest rate drops when the pandemic shock hits, while it rises when \(\rho<\sigma\) (\(1/\rho>1/\sigma\)). This is exactly the result discussed in Guerrieri et al. (2020).