Notes On Neoclassical Growth Model
Notes On Neoclassical Growth Model
We’ve looked at simple models thus far, two period models with a single agent, a two period
model with heterogeneous agents in the overlapping generations (“OLG”) model, and also the
Solow model. The Solow model is interesting in the sense that it can be looked at over many
periods, but modern macroeconomic models have microeconomic foundations and optimizing
agents within them and the Solow model fails that test. In order to be able to work with a truly
modern macro model, we will have to have agents who choose their optimal demand as we did
in the two period model.
Let’s first consider what we did in the two period model. In the simple version we used, agents
were endowed with a certain amount of income in each period and they had to determine how
much to save (as this choice simultaneously determined how much they would consume in
each of the two periods). Although a very short model, it at least has microeconomic
foundations. In the Solow model, the choice of savings was simply given to us as an exogenous
variable.
If our preferences were represented by 𝑙𝑛(𝑐% ) + 𝛽ln (𝑐, ) and the budget constraints were
𝑐% + 𝑠% ≤ 𝑦% , and we were able to combine the two budget constraints into one and use our
Euler equation between the two periods to allow us to solve for 𝑐% and 𝑐, . If we had a three
period model, we would have 𝑠% and 𝑠, and could use those to make one combined budget
constraint. We could also have two Euler equations that would show the optimal ratio of
consumption choices between consecutive periods (periods 0 and 1 as well as between periods
1 and 2). For example, the model might look like the following:
The first order conditions (FOCs) for the optimal demand are the following:
1
𝑐% : − 𝜆% = 0
𝑐%
𝛽
𝑐, : − 𝜆, = 0
𝑐,
𝛽9
𝑐9 : − 𝜆9 = 0
𝑐9
𝑠% : − 𝜆% + 𝜆, (1 + 𝑟% ) = 0
𝑠, : − 𝜆, + 𝜆9 (1 + 𝑟, ) = 0
36 E37 3
E34
= (1 + 𝑟% ) and E7 36
= E37 = (1 + 𝑟, )
6
With these two Euler equations and the one combined lifetime BC, we have a system of three
equations and three unknowns, allowing us to solve for 𝑐% , 𝑐, , and 𝑐9 . This might take a bit of
work, but it is clearly possible to do by hand. As we move on to a model of an economy with
infinite periods, it’s easy to see that you can’t solve something like that by hand. Let’s start with
what a version of the model, the Neoclassical Growth Model (NGM hereafter, and essentially
the Solow growth model from before, but with optimizing agents):
∞
What happens in this model? There are a few things, in addition to there being an infinite
number of periods. One is that agents are choosing their savings, rather than it being given as in
the Solow model. A second is that there is no endowment of income and the agents invest
directly in capital and the stock of capital can continue to grow and/or evolve over time. Lastly,
the initial value for 𝑘% is given, which is not that different from the Solow model, but is required
for solving the model.
Let’s first write out the Lagrangian for this problem (which we can do since the marginal utility
of consumption in any period is strictly positive) to see what choices the household faces.
ℒ = 𝑙𝑛(𝑐% ) + 𝛽 ln(𝑐, ) + β9 ln(𝑐9 ) + ⋯ + 𝜆% (𝐴𝑘%Q + (1 − 𝛿 )𝑘% − 𝑐% − 𝑘, )
+ 𝜆, (𝐴𝑘,Q + (1 − 𝛿 )𝑘, − 𝑐, − 𝑘9 ) + 𝜆9 (𝐴𝑘9Q + (1 − 𝛿 )𝑘9 − 𝑐9 − 𝑘W ) + ⋯
Notice the continuation “…” here, since there are infinite periods and infinite constraints. We
could write this a different and equivalent way to reflect arbitrary periods t, t+1, and t+2 in the
middle of utility function and in the sequence of constraints.
In each period t, the household chooses 𝑘IO, , so let’s look at the first order conditions (FOCs)
for optimality for 𝑘IO, 𝑎𝑛𝑑 𝑘IO9 . We’ll also look at optimal choices for 𝑐I , 𝑐IO, , 𝑎𝑛𝑑 𝑐IO9 .
𝛽I
𝑐I : − 𝜆I = 0
𝑐I
𝛽 IO,
𝑐IO, : − 𝜆IO, = 0
𝑐IO,
𝛽 IO9
𝑐IO9 : − 𝜆IO9 = 0
𝑐IO9
Q\,
𝑘IO, : − 𝜆I + 𝜆IO, [𝛼𝐴𝑘IO, + (1 − 𝛿 )] = 0
Q\,
𝑘IO9 : − 𝜆IO, + 𝜆IO9 [𝛼𝐴𝑘IO9 + (1 − 𝛿 )] = 0
𝑐IO, Q\,
= 𝛼𝐴𝑘IO, + (1 − 𝛿 )
𝛽𝑐I
𝑐IO9 Q\,
= 𝛼𝐴𝑘IO9 + (1 − 𝛿 )
𝛽𝑐IO,
Since the marginal utility of consumption in each period is strictly positive, our BC (𝑐I + 𝑘IO, ≤
𝐴𝑘IQ + (1 − 𝛿 )𝑘I ) will hold with equality.
As such, we know that 𝑐I = 𝑘IO, 𝐴𝑘IQ + (1 − 𝛿 )𝑘I − 𝑘IO, and can substitute this into our Euler
equations, which become:
Q
𝐴𝑘IO, + (1 − 𝛿 )𝑘IO, − 𝑘IO9 Q\,
Q = 𝛼𝐴𝑘IO, + (1 − 𝛿 )
𝛽(𝐴𝑘I + (1 − 𝛿 )𝑘I − 𝑘IO, )
Q
𝐴𝑘IO9 + (1 − 𝛿 )𝑘IO9 − 𝑘IOW Q\,
Q = 𝛼𝐴𝑘IO9 + (1 − 𝛿 )
( )
𝛽(𝐴𝑘IO, + 1 − 𝛿 𝑘IO, − 𝑘IO9 )
In reality, although we are just looking at these two equations and four unknowns, we actually
have an infinite number of equations. This is why we will need to know 𝑘% , which is given to us,
but we will also have to have a terminal value, which will will call 𝑘 ^ . Next we will discuss how
to go about finding this value. Once we do though, we will have a system of 𝑇 + 1 unknowns
{𝑘% , … , 𝑘 ^ } and 𝑇 − 1 Euler equations that we can use to solve for those, since two of the
“unknowns” will actually be known by us, 𝑘% given and 𝑘 ^ we will discuss next.
At this point, you don’t have any tools that would allow you to solve a problem that has an
infinite number of variables by hand, so what can we do? Well, fortunately for us, the decision
that the household faces in this problem in period 𝑡 is exactly the same as the one the
household faces in period 𝑡 + 1. Once we understand that decision, if we have a terminal value
for 𝑘 (meaning a value at some distant point in the future, let’s say period 𝑇), we can work by
hand or with a computer to solve for the path of optimal variables between 𝑘% and 𝑘 ^ .
But what is a reasonable value to choose for 𝑘 ^ , our terminal value for 𝑘? You may have
noticed some of the similarities between this model and the basic Solow model. In both cases, a
certain amount each period is invested and added to tomorrow’s capital stock and this is
partially (or fully, in steady state) balanced out by the amount of capital that is depreciating in a
given period. When there is no exogenous growth (similar to our initial Solow model economy
with no labor augmenting technology), the economy eventually converges to a steady state
level of capital per capita. 𝑘88 seems like a reasonable choice to set for 𝑘 ^ , and then to get to
work on finding 𝑘% , 𝑘, , 𝑘9 , … , 𝑘 ^\, , 𝑘 ^ (with the endpoints known and the others to be solved
for).
The only problem with setting 𝑘 ^ = 𝑘88 is that it in reality unless 𝑘% = 𝑘88 , it takes an infinite
number of periods to converge from 𝑘% to 𝑘88 . In fact, let’s suppose for a moment that
𝑘% = 100 and 𝑘88 = 50 (supposed we have solved for the latter). Even if we set 𝑘 ^ = 50.05, it
would still take an infinite number of periods to converge from 𝑘 ^ 𝑡𝑜 𝑘88 . We will choose the
value 𝑇 arbitrarily to be the number of periods we are looking to estimate the path between 𝑘%
and 𝑘88 . (In the Excel example below, it will be 𝑇 = 10, meaning an 11 period problem.) In
setting our value for 𝑘 ^ , we will use the following steps:
1.) Solve for 𝑘88 .
2.) Compare 𝑘88 and 𝑘% to see which is bigger.
3.) For some (extremely small) 𝜖 > 0, set 𝑘 ^ according to one of the following:
a. 𝑘 ^ = 𝑘88 + ϵ (if 𝑘88 > 𝑘% )
b. 𝑘 ^ = 𝑘88 − ϵ (if 𝑘88 < 𝑘% )
Why do we do all of this and what are we hoping to be able to do? In the Solow model, savings
was fixed at a constant fraction 𝑠 of income, but that won’t be the case in the NGM as the
fraction that is saved depends on the current level of capital, current income, preferences, etc.
As such, when it comes to investment, we will only be able to solve for the optimal choice for
investment as a function of 𝑘I , but that will be an interesting feature since we can test it
against what we observe in per capita data in the investment behavior of different countries at
different stages of development. The same can be done to create a function for consumption.
We will solve this model using Solver in Excel (which may require downloading the Analysis
Toolpak for Excel). There are a couple of ways this can be done, but we will do the following
Write all of the Euler equations as constraints. All values will be moved to one side (after
multiplying both sides by the denominator on the left hand side so Excel never has to
encounter a fraction with a zero in the denominator) so that each of them is equal to zero. We
will know 𝑘% 𝑎𝑛𝑑 𝑘 ^ and with all Euler equations holding with equality we would be able to
determine the rest of the values for 𝑘I in between. This requires all Euler equations holding
with equality (or all of them being equal to zero after we move everything to one side). So we
will do a couple of things.
1.) Square all of the values for the Euler equations after moving everything to one side of
the equation. In the end these should be zero, but from our initial guesses for
{𝑘% , … , 𝑘 ^ } they likely will not be. We will then create another cell on Excel and make it
be the sum of all of those squared values. This will be our objective function and we will
ask Excel to minimize that (since we want all of the Euler equations to hold with
equality, this minimized distance should be very close to zero. Some of you will notice
the minimization of the sum of squared distances as being very similar to Ordinary Least
Squares from an introductory regression analysis course.
2.) Another step we will add in is to take the entire column of Euler equations (which, as
we’ve said, have been written as equal to zero) and add constraints so that each of
them should be set equal to zero by Solver. This may be overkill, but we really want to
emphasize that the Euler equations should hold with equality and that is what our
actual solution would get. Excel is giving us a very close approximation to this (and the
larger the integer we use for 𝑇, the better the approximation will be).
We will actually be using Excel to solve this system of equations and since we are not
maximizing or minimizing a function, we will have to use Solver in a different way. The
intertemporal Euler equations were already derived from optimality conditions. Solver also has
the ability to solve for a specific value, in addition to the options for maximize and minimize,
and that is what we will do here. So, we will rewrite our series of Euler equations so that each
equation is equal to zero, then we can use Solver to solve it for us.
As such, we will rewrite the two Euler equations in the following way:
Q
𝐴𝑘IO, + (1 − 𝛿 )𝑘IO, − 𝑘IO9 Q\,
− [𝛼𝐴𝑘IO, + (1 − 𝛿 )] = 0
𝛽(𝐴𝑘IQ + (1 − 𝛿 )𝑘I − 𝑘IO, )
Q
𝐴𝑘IO9 + (1 − 𝛿 )𝑘IO9 − 𝑘IOW Q\,
Q − [ 𝛼𝐴𝑘IO9 + (1 − 𝛿 )] = 0
𝛽(𝐴𝑘IO, + (1 − 𝛿 )𝑘IO, − 𝑘IO9 )
In fact, you can think of these as two functions, in the following way:
If we were to write these out a different way, we could think of the system of equations going
from period t=0 until t=T.
This would leave us with a system of T-1 equations and T+1 unknowns. Fortunately, we will be
able to identify 𝑘% (it will be given to us in the problem) and 𝑘 ^ (it will be very near to 𝑘88 ).
Since 𝑘% is given, in order to solve this system of T-1 equations, we will have to solve for 𝑘88
(and we will then set 𝑘 ^ near 𝑘88 ), which we will then use solver to solve for the T+1 unknowns
(two of which, 𝑘% and 𝑘 ^ , will actually be known). We’ll proceed by solving for 𝑘88 .
When the economy converges to 𝑘88 , we know from our earlier work in the Solow model that
the economy will converge to a point where 𝑘I = 𝑘IO, = 𝑘88 and 𝑐I = 𝑐IO, = 𝑐88 . Thus, in
steady state, the Euler equation
𝑐IO, Q\,
= 𝛼𝐴𝑘IO, + (1 − 𝛿 )
𝛽𝑐I
1 Q\,
− (1 − 𝛿 ) = 𝛼𝐴𝑘88
𝛽
1 − (1 − 𝛿 )𝛽 1 − 𝛽 + 𝛿𝛽 Q\,
= = 𝛼𝐴𝑘88
𝛽 𝛽
1 − 𝛽 + 𝛿𝛽 Q\,
= 𝑘88
𝛽𝛼𝐴
6 6
,\EOkE no6 EQl 6on
j m = 𝑘88 or j,\EOkEm = 𝑘88
EQl
Let’s revisit the discussion of what our relationship is between 𝑘88 and 𝑘 ^ so we fully
understand what we do with our value for 𝑘88 to “convert” it to 𝑘 ^ , so we can use it in Solver
for Excel. We know that the level of capital (per person) will converge from 𝑘% to 𝑘88 , but once
it has converged to 𝑘88 (which would take an infinite number of periods to actually converge,
but it would get very close after a reasonable number of periods). After it has converged to 𝑘88 ,
every value of 𝑘I would be equal to 𝑘88 unless some other parameter changes (and for this
exercise, we will keep the parameters (𝛼, 𝐴, 𝛽, 𝛿) fixed in the following cases). Essentially, we
have two cases to consider:
Case 1 (Initial level of capital is greater than the steady state level of capital) (𝑘% > 𝑘88 ) :
In this case, 𝑘% > 𝑘, > ⋯ > 𝑘88 . What we would like to do is to set 𝑘 ^ in this sequence
relatively close to 𝑘88 , but before 𝑘88 . In other words, the sequence would be
{𝑘% , 𝑘, , … , 𝑘 ^\, , 𝑘 ^ , … , 𝑘88 }. To understand the reason we do this, imagine that the level of
capital converged to steady state in period 100, that would mean that 𝑘,%% = 𝑘88 . This also
means that 𝑘9%% = 𝑘88 . If we set 𝑘 ^ = 𝑘88 , it could be difficult for Solver to use the Euler
equations to determine the difference between where on the timeline 𝑘 ^ is. There is not a hard
and fast rule to setting 𝑘 ^ , but for consistency, we will use 𝑘 ^ = 1.001𝑘88 for these cases (as
long as this value is not larger than 𝑘% ). From there, we will use Solver to approximate
{𝑘% , 𝑘, , … , 𝑘 ^\, , 𝑘 ^ }.
Case 2 (Initial level of capital is greater than the steady state level of capital) (𝑘% < 𝑘88 ) :
In this case, 𝑘% < 𝑘, < ⋯ < 𝑘88 . What we would like to do is to set 𝑘 ^ in this sequence
relatively close to 𝑘88 , but before 𝑘88 . In other words, the sequence would be
{𝑘% , 𝑘, , … , 𝑘 ^\, , 𝑘 ^ , … , 𝑘88 }. To understand the reason we do this, imagine that the level of
capital converged to steady state in period 100, that would mean that 𝑘,%% = 𝑘88 . This also
means that 𝑘9%% = 𝑘88 . If we set 𝑘 ^ = 𝑘88 , it could be difficult for Solver to use the Euler
equations to determine the difference between where on the timeline 𝑘 ^ is. There is not a hard
and fast rule to setting 𝑘 ^ , but for consistency, we will use 𝑘 ^ = 0.999𝑘88 for these cases (as
long as this value is not smaller than 𝑘% ). From there, we will use Solver to approximate
{𝑘% , 𝑘, , … , 𝑘 ^\, , 𝑘 ^ }.
One thing to keep in mind with Solver is that it is approximating a solution, in this case a
sequence of solutions. There are computational methods that it uses to arrive at these
solutions. In fact, it is quite possible to create a program using a program like Matlab or a
language like Python to do something similar to what Excel does with Solver to approximate
this solution.
First, we will do an example with the following set of parameters (𝛼 = 0.3, 𝐴 = 1.0, 𝛽 =
0.9, 𝛿 = 0.1). In order to approximate our sequence of values for 𝑘I , we will need to first find
𝑘88 so that we can set a value for 𝑘 ^ . We will use the equation we solve for to get 𝑘88 .
6
EQl 6on
j m = 𝑘88
,\EOkE
After solving for 𝑘88 , we will next need to determine if it is greater than or less than 𝑘% .
In this case, 𝑘88 = 1.652 …, and since 𝑘% > 𝑘88 , we will set 𝑘 ^ = 1.001(𝑘88 ) = 16537.
Now we’re ready to approximate the remainder of the values between 𝑘% and 𝑘 ^ .
First of all, notice how the Euler equation is written below in the equation bar. Near the bottom
of the image you can see the Euler equation written as equal to zero. Since that has a fraction
and I want to avoid having a zero in the denominator when using Solver, I multiplied everything
through by that denominator and the second typed equation you see in the image below is the
same one typed into the equation bar at the top of the image (which we will later constrain to
be equal to zero).
In the next two images you can see the value for 𝑘88 and 𝑘 ^ . Since 𝑘% > 𝑘88 , in this case we set
𝑘 ^ just above 𝑘88 . In fact, we set 𝑘 ^ = 1.001𝑘88 .
Recall that we want all of the Euler equations to be equal to zero (since we’ve moved
everything to one side). As such, we want all of their squared values to be as close to zero as
possible as well. So although there are other ways to approach this problem, I am squaring each
of the Euler equations and calling those squared differences (difference from zero).
Since we want each of those to be zero, we of course want their sum to be equal to zero (or as
close to it as our approximation can get), we then sum those squared Euler equation values.
Now we’re finally ready to open up Solver in Excel by going to the Data tab (assuming you’ve
installed the Data Analysis Toolpak in Solver). A couple of things to notice here including the
choice of minimization (although you can play around with other variations and see what
happens and think about why it might/might not work) and our initial guesses for {𝑘, , … , 𝑘 ^\, }
are highlighted as values we are allowing Excel to change and solve for, since 𝑘% and 𝑘 ^ are
already known at this point.
Next, we will add the constraints. They could be added one by one, but since the Euler
equations are in one column (a row would work too), after clicking in the Cell Reference box,
you can highlight G9:G16 and select “=” and then just type 0 into the Constraint box.
After clicking OK, you will see that set of constraints appear and now you are ready to click
Solve.
Now we have arrived at our solution. We should do some checking to make sure it looks okay.
The values for 𝑘I have decreased from 𝑘% to 𝑘 ^ (the reverse should have been true if
𝑘% < 𝑘88 ) and more quickly at first. We also see the constraints (Euler equations for us) and
their squared values are all extremely close to zero, so we feel pretty good about this
approximation of our sequence of values for 𝑘I .