```
\$title Intertemporal Consumption Choice with an Exogenous Interest Rate

\$ontext

This program is a reply to the following question:

> I am an MA student in economics, finalizing my dissertation soon. I am
> constructing a 2 period savings model in gams and calibrating it using
> MPSGE and the MILES solver. I need to enter current and future
> prices(different from unity) in the MPSGE demand block, but reference
> prices cannot be entered directly. How do I scale prices for the
> calibration and scenario simulation stages,such that the price in period 2
> is P2= P1/(1+r)? I have attached my input file for completeness.

I am skeptical about two-period models.  I find that in such models
the terminal adjustment rule can dominate the equilibrium response,
so I much prefer to use multi-period models with 1, 5 or 10 year time
periods.

I have written a paper which
provides a comprehensive introduction to the Ramsey model with
endogenous interest rate and capital formation.  In thinking about
this student's question, however, I realized that our paper did not
indicate how to build and analyze a model with an exogenous interest
rate.

The model I have written up here can be solved analytically. A
suggested exercise: produce a closed-form solution for c(t) and
compare it with the solution values returned in c.l(t).

Thomas F. Rutherford
August, 1998

\$offtext

set     t       Time period (year)      / 1*60 /,
td      Time periods to display /10,20,30,40,50/;

alias (t,tt);

scalar
r               Interest rate (exogenous)               /0.05/,
delta           Discount rate                           /0.02/,
sigma           Elasticity of interemporal substitution /0.5/,
wealth          Present value of income over the life cycle;

parameter
yr(t)           Years elapsed to period t,
pv(t)           Discounted present-value price of a unit of consumption in period t,
l(t)            Labor supply in period t,
alpha(t)        Utility function discount factor;

yr(t) = ord(t);

pv(t) = ( 1/(1+r)**(ord(t)-1) );

*       We use a constant elasticity intertemporal utility function:

*       U(t) = sum(t, alpha(t) * C(t)**rho / (1 - rho) )**(1/rho)

*       where rho = 1 - 1/sigma

alpha(t) = ( 1/(1+delta) )**(ord(t)-1);

*       Generate an earnings profile which increases early in life
*       and decreases toward the end of life.

l(t) = exp(-0.1 * yr(t)) * yr(t)**2;

*       Normalize labor supply to measure it as a fraction of maximum

l(t) = l(t) / smax(tt, l(tt));

parameter       path    Lifecycle Values;

path(t,"l")    = l(t);
path(t,"pv_l") = l(t)*pv(t);

wealth = sum(t, l(t) * pv(t));

\$ontext

\$model:lifecycle

\$sectors:
c(t)    ! consumption activity

\$commodities:
p(t)    ! output price
p0      ! market for period 0 output (wealth)

\$consumers:
ra      ! representative agent

*       The consumption activities transform wealth
*       into consumption over the life cycle:

\$prod:c(t)
o:p(t)  q:1
i:p0    q:pv(t)

*       The demand function is CES over the lifecycle.
*       The reference price-quantity profile reflects the
*       fact that if prices decline with the discount factor
*       the consumption profile is constant:

\$demand:ra   s:sigma
e:p0    q:wealth
d:p(t)  q:1     p:alpha(t)

\$offtext

\$sysinclude mpsgeset lifecycle

\$include lifecycle.gen
solve lifecycle using mcp;

path(t,"c") = c.l(t);
path(t,"assets") = sum(tt\$(ord(tt) le ord(t)), pv(tt)*(l(tt)-c.l(tt)));

\$setglobal gp_xl td
\$setglobal gp_term gif
\$libinclude gnuplot path

```