Kiyotaki and Moore (1997): Credit Cycles
In their seminal 1997 paper, Kiyotaki and Moore put forth a model of credit cycles in which movements in asset prices interacts with the real side of the economy and produce amplified and persistent effects of shocks to the economy.
Their original model is relatively simple with risk-neutral agents and one-time unanticipated MIT shocks. Peter Frank Paz, a Ph.D. candidate from New York University proposes a more modern extension of the model with risk-averse agents and recurrent aggregate shocks. The model fits squarely in GDSGE framework and Peter kindly contributed his gmod file below.
As in Kiyotaki and Moore (1997) the economy consists of two production sectors, farming and gathering, with population of each sector normalized to one. The farmers are more productive, but are less patient than the gatherers and thus they tend to borrow from the gatherers in equilibrium.
A farmer solves
subject to the budget constraint:
in which her resource is from production
the value of land holding \(q_{t}k_{t-1}\), and bond holding \(b_{t-1}\). The aggregate TFP shock \(A_{t}\) follows a Markov process. She allocates her resource among consumption \(x_{t}\), as well as land and bond holding into the next period. As in Kiyotaki and Moore (1997), here portion \(c\) of the output is non-tradable and has to be consumed, i.e.,
and only the remaining portion \(a\) is tradable. She is also subject to the following collateral constraint:
in which \(\underline{q}_{t+1}\) is the lowest possible land price in the next period. In Kiyotaki and Moore (1997) \(\theta\) is set at \(1\) but we allow \(\theta\) to be smaller than \(1\) in this extension so that the collateral constraint binds with positive probability in the ergodic distribution of the model dynamics.
Similarly, a gatherer solves
subject to the budget constraint,
in which her production function is concave,
We assume the gatherers’ productivity \(\underline{A}_{t}\) is inferior, and equals to a fixed proportion of \(A_{t}\), i.e., \(\underline{A}_{t}=\delta A_{t}\) with \(\delta<1\).
Let us denote the multipliers on the farmers’ budget constraint (17) as \(\beta^{t}\lambda_{t}\), and on the tradability constraint (18) as \(\beta^{t}\eta_{t}\), and on the collateral constraint (19) as \(\beta^{t}\mu_{t}\). Because the farmers and gatherers’ optimization problems are globall concave maximization problems, the following first order conditions and complementary-slackness conditions are neccessary and sufficient for optimality:
The total land supply is fixed at \(\overline{K}\), and the market clearing conditions are
We define recursive equilibrium over two endogenous state variables. The first-one is the farmers’ land-holding \(k_{t-1}\). The second one is the farmers’ financial wealth share defined as
We use \(\left(k_{t-1},\omega_{t}\right)\) as the endogenous state variables, instead of \(\left(k_{t-1},b_{t-1}\right)\) in order to avoid multiple equilibria problems. (The multiple equilibria problem in a similar setting is studied previously in Cao, Luo and Nie (2019).)
In the numerical exercise, we choose the shock process of TFP \(A_{t}\) to be I.I.D., and \(A_{t}\in\left\{ 0.99,1,1.01\right\}\) with probability \(1/3\) for each possible value. In the ergodic distribution, the probabilities for binding collateral constraint conditional on the three values of \(A_{t}\) are 92%, 80% and 77% respectively. Thus the collateral constraint is more likely to be binding when \(A_{t}\) is low.
The IRFs after positive and negative
1 percent TFP shocks (flipped for negative shocks) are plotted below by averaging the conditional
responses over the ergodic distribution (using the method
from the Guerrieri et al. (2020) example
in the following MATLAB file
).
Although the TFP shocks are symmetric and temporary, the IRFs show that their effects are asymmetric and persistent thanks to market incompleteness and the collateral constraint (19). In a more realistically calibrated model, Cao and Nie (2017) study the importance of market incompleteness and collateral constraints in producing these effects. They found that market incompleteness is relatively more important than collateral constraints.
The gmod File
1%========================================================================================
2% PARAMETERS
3%========================================================================================
4parameters a c alower sigma betaF betaG alpha Kbar theta;
5a = 0.7; % tradable productivity of farmer
6c = 0.3; % nontradable productivity of farmer
7alower=0.9; % tradable productivity of gatherer
8
9% preferences
10sigma=1; % risk aversion coefficient
11betaF=0.95; % discount factor of farmer
12betaG=0.98; % discount factor of gatherer
13
14% technology
15alpha=0.7; % coefficient of gatherer's production
16Kbar=1; % fixed capital stock
17
18% credit
19theta=0.9;
20
21SaveFreq = 200;
22PrintFreq = 50;
23INTERP_ORDER = 2;
24EXTRAP_ORDER = 2;
25SIMU_RESOLVE=0;
26SIMU_INTERP=1; % Use interpolation for fast simulate
27IterSaveAll = 0;
28
29%========================================================================================
30% ENDOGENOUS STATES
31%========================================================================================
32var_state kF omega;
33kFPts=41;
34kFMin=0.02;
35kFMax=0.95;
36drift_K = 0.01;
37kF=linspace(kFMin,kFMax,kFPts);
38
39omegaPts=40;
40omegaMin=0;
41omegaMax=0.2;
42omega=linspace(omegaMin,omegaMax,omegaPts);
43
44%========================================================================================
45% SHOCKS
46%========================================================================================
47
48var_shock A;
49
50shock_num=3;
51A = [0.99 1 1.01];
52shock_trans = ones(shock_num,shock_num)/shock_num;
53
54[KMesh,omegaMesh] = ndgrid(kF,omega);
55
56
57%========================================================================================
58% STATE TRANSITION FUNCTION: INTERPOLATION Variables subset of Endogenous variables
59%========================================================================================
60var_policy_init nxF xG eta kFpol R q nbFpol muF;
61inbound_init nxF 0 10;
62inbound_init xG 0 10;
63inbound_init eta 0 1;
64inbound_init kFpol 0 Kbar;
65inbound_init R 0 10;
66inbound_init q 0 10;
67inbound_init nbFpol 0 10; % Transformaion nbFpol = bFpol + theta*q*kFpol
68inbound_init muF 0 1;
69
70var_aux_init loglambdaF loglambdaG logaux;
71
72% This corresponds to the T-1 problem
73model_init;
74 kG = Kbar-kF; % market clearing for capital state
75
76 % Backout bFpol
77 kGpol = Kbar-kFpol; % market clearing for capital policy
78 bFpol = nbFpol;
79 bGpol = -bFpol; % market clearing
80
81 % Backout xG and marginal utility
82 Y = A*(a+c)*kF + alower*A*kG^alpha; % aggregate output
83 xF = nxF + c*A*kF; % consumption of farmer
84
85 lambdaF = xF^(-sigma)/(1-eta); %multiplier for nontradable is eta*lambda
86 lambdaG = xG^(-sigma);
87 loglambdaF = log(lambdaF);
88 loglambdaG = log(lambdaG);
89 aux = (q+A*(a+c)-c*A*eta)*lambdaF;
90 logaux = log(aux);
91
92 % In the last period, people consume everything, and qT=0
93 xF_next = (a+c)*kFpol + bFpol;
94 xG_next = alower*kGpol^alpha + bGpol;
95 lambdaF_next = xF_next^(-sigma);
96 lambdaG_next = xG_next^(-sigma);
97
98 foc_bondG = 1 - R*betaG*lambdaG_next / lambdaG;
99 foc_kG = q - betaG*lambdaG_next*alower*alpha*kGpol^(alpha-1)/lambdaG;
100
101 foc_bondF = 1 - R*betaF*lambdaF_next / lambdaF - muF;
102 foc_kF = q - betaF*(a+c)*lambdaF_next/lambdaF;
103 slack_bF = muF*nbFpol;
104 slack_xF = eta*nxF;
105 budgetF = q*kFpol +bFpol/R + xF - A*(a+c)*kF - omega*q*Kbar;
106 MC_Y = Y - xF - xG;
107
108 equations;
109 foc_bondG;
110 foc_kG;
111 foc_bondF;
112 foc_kF;
113 slack_bF;
114 slack_xF;
115 budgetF;
116 MC_Y;
117 end;
118end;
119
120var_interp loglambdaF_interp loglambdaG_interp logaux_interp q_interp;
121%Time iteration update: update of the transition function after a time iterarion step need to be specified.
122loglambdaF_interp = loglambdaF;
123loglambdaG_interp = loglambdaG;
124logaux_interp = logaux;
125q_interp = q;
126
127initial loglambdaF_interp loglambdaF;
128initial loglambdaG_interp loglambdaG;
129initial logaux_interp logaux;
130initial q_interp q;
131
132%========================================================================================
133% Endogenous variables or policy variables: name, and bounds
134%========================================================================================
135var_policy nxF xG eta kFpol R q nbFpol muF omega_next[3];
136inbound nxF 0 2;
137inbound xG 0 2;
138inbound eta 0 1;
139inbound kFpol 0 Kbar;
140inbound R 0 1.5 adaptive(1.5);
141inbound q 0 10 adaptive(1.5);
142inbound nbFpol 0 10 adaptive(1.5); % Transformaion nbFpol = bFpol + theta*q*kFpol
143inbound muF 0 1;
144inbound omega_next 0 1;
145
146%====================================================
147% Other equilibrium variables
148%====================================================
149var_aux xF loglambdaF loglambdaG logaux bFpol Y bF; %qlow_next
150var_output xF xG Y q R eta muF kFpol omega_next bF;
151
152%====================================================
153% MODEL
154%====================================================
155model;
156kG = Kbar-kF; % market clearing for capital state
157Y = A*(a+c)*kF + alower*A*kG^alpha; % aggregate output
158
159bF = q*omega*Kbar - q*kF;
160
161[loglambdaF_next', loglambdaG_next', logaux_next', q_next']=GDSGE_INTERP_VEC'(kFpol,omega_next');
162lambdaF_next' = exp(loglambdaF_next');
163lambdaG_next' = exp(loglambdaG_next');
164aux_next' = exp(logaux_next');
165
166% Backout bFpol
167kGpol = Kbar-kFpol; % market clearing for capital policy
168quse = GDSGE_MIN{q_next'};
169
170bFpol = nbFpol - theta*quse*kFpol;
171bGpol = -bFpol; % market clearing
172
173% Backout xG and marginal utility
174xF = nxF + c*A*kF; % consumption of farmer
175lambdaF = xF^(-sigma)/(1-eta);
176lambdaG = xG^(-sigma);
177loglambdaF = log(lambdaF);
178loglambdaG = log(lambdaG);
179aux = (q+A*(a+c)-c*A*eta)*lambdaF;
180logaux = log(aux);
181
182mpk_nextplusq'= (alower*A')*alpha*kGpol^(alpha-1)+q_next';
183%Aplusqnext' = A'*(a+c)+q_next';
184
185%====================================================
186% calculate the residual equations: 8 equation (= 7+ 1 consistency) and 8 unknown
187%====================================================
188foc_bondG = 1 - R*(betaG*GDSGE_EXPECT{lambdaG_next'}) / lambdaG;
189foc_kG = q - betaG*GDSGE_EXPECT{lambdaG_next'*mpk_nextplusq'}/lambdaG;
190
191foc_bondF = 1 - R*(betaF*GDSGE_EXPECT{lambdaF_next'}) / lambdaF - muF;
192foc_kF = q - betaF*GDSGE_EXPECT{aux_next'} /lambdaF - theta*quse*muF/R;
193slack_bF = muF*nbFpol;
194slack_xF = eta*nxF;
195budgetF = q*kFpol +bFpol/R + xF - A*(a+c)*kF - omega*q*Kbar;
196MC_Y = Y - xG - xF;
197
198consis_omega_next' = (q_next'*kFpol + bFpol) - q_next'*omega_next'*Kbar;
199
200 equations;
201 foc_bondG;
202 foc_kG;
203 foc_bondF;
204 foc_kF;
205 slack_bF;
206 slack_xF;
207 budgetF;
208 MC_Y;
209 consis_omega_next';
210 end;
211end;
212
213simulate;
214 num_periods = 1000;
215 num_samples = 100;
216 initial kF 0.05;%Kbar - (a/(alower*betaG*alpha))^(1/(alpha-1));
217 initial omega 0.01;
218 initial shock 2;
219
220 var_simu xF xG Y q R eta muF bF; % some variables
221 kF'=kFpol;
222 omega' = omega_next';
223end;