# 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

$\max_{\{x_t,k_t,b_t\}}\mathbb{E}_{0}\left[\sum_{t}\beta^{t}\frac{\left(x_{t}\right)^{1-\sigma}}{1-\sigma}\right],$

subject to the budget constraint:

(17)$x_{t}+q_{t}k_{t}+\frac{b_{t}}{R_{t}}=y_{t}+q_{t}k_{t-1}+b_{t-1},$

in which her resource is from production

$y_{t}=A_{t}\left(a+c\right)k_{t-1},$

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.,

(18)$x_{t}\geq A_{t}ck_{t-1},$

and only the remaining portion $$a$$ is tradable. She is also subject to the following collateral constraint:

(19)$b_{t}+\theta\underline{q}_{t+1}k_{t}\geq0.$

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

$\max_{\{x_{t}^{\prime},k_{t}^{\prime},b_{t}^{\prime}\}}\mathbb{E}_{0}\left[\sum_{t}\left(\beta^{\prime}\right)^{t}\frac{\left(x_{t}^{\prime}\right)^{1-\sigma}}{1-\sigma}\right],$

subject to the budget constraint,

(20)$x_{t}^{\prime}+q_{t}k_{t}^{\prime}+\frac{b_{t}^{\prime}}{R_{t}}=y_{t}^{\prime}+q_{t}k_{t-1}^{\prime}+b_{t-1}^{\prime},$

in which her production function is concave,

$y_{t}^{\prime}=\underline{A}_{t}\left(k_{t-1}^{\prime}\right)^{\alpha}.$

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:

$\begin{split}\left(x_{t}\right)^{-\sigma}-\lambda_{t}+\eta_{t} & =0,\\ \eta_{t}\left(x_{t}-ck_{t-1}\right) & =0,\\ -q_{t}\lambda_{t}+\theta\underline{q}_{t+1}\mu_{t}+\beta\mathbb{E}_{t}\left[ \left(q_{t+1}+a+c\right)\lambda_{t+1}-c\eta_{t+1}\right]&=0,\\ -\frac{1}{R_{t}}\lambda_{t}+\mu_{t}+\beta\mathbb{E}_{t}\left[ \lambda_{t+1}\right]&=0,\\ \mu_{t}\left(\theta\underline{q}_{t+1}k_{t}+b_{t}\right)&=0,\\ \beta^{\prime}\mathbb{E}_{t}\left[ \left(\frac{q_{t+1}+\alpha\left(k_{t}^{\prime}\right)^{\alpha-1}}{q_{t}}\right)\left(\frac{x_{t+1}^{\prime}}{x_{t}^{\prime}}\right)^{-\sigma}\right]&=1,\\ \beta^{\prime}R_{t}\mathbb{E}_{t}\left[ \left(\frac{x_{t+1}^{\prime}}{x_{t}^{\prime}}\right)^{-\sigma}\right]&=1.\end{split}$

The total land supply is fixed at $$\overline{K}$$, and the market clearing conditions are

$\begin{split}b_{t}+b_{t}^{\prime} & =0,\\ k_{t}+k_{t}^{\prime} & = \overline{K},\\ x_{t}+x_{t}^{\prime} & = Y_t = A_{t}\left(a+c\right)k_{t-1}+\underline{A}_{t}\left(k_{t-1}^{\prime}\right)^{\alpha}.\end{split}$

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

$\omega_{t}=\frac{q_{t}k_{t-1}+b_{t-1}}{q_{t}\overline{K}}.$

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

KM1997.gmod

  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;
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;