$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
University of Colorado
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
*       lifetime labor supply:

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