$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