$TITLE: M11-2.GMS: Infinite horizon dynamic model, MPS/GE formulation $ONTEXT Converts infinite horizon model in to a fixed time horizon MCP Trick is that there is an outside agent "DEITY" who demands terminal period capital in exchange for the good "HEAVEN" Price of HEAVEN relative to terminal capital is set by a tax/subsidy so that the steady-state condition is satisfied in the terminal period $OFFTEXT SETS T time periods /1*25/; PARAMETERS DELTA rate of depreciation RHO rate of time preference PV present value from terminal period to first period TERM number of the terminal period (25) RTERM present value of terminal values at t = 1 INITK initial capital stock R(T) present value of period t values at t = 1 D(T) remaining undepreciated portion of initial K at t PVUTIL present value of the utility path at t = 1 TLAST(T) switch to indicate the terminal (last) period TFIRST(T) switch to indicate the first time period SOLUTION(T,*) stores values of the solution path CONSUME(T) consumption at time t INVEST(T) investment at time t KSTOCK(T) capital stock at time t; RHO = 0.2; DELTA = 0.1; INITK = 90; TERM = CARD(T); RTERM = (1/(1+RHO))**(CARD(T) - 1);; R(T) = (1/(1+RHO))**(ORD(T)-1); D(T) = (1-DELTA)**(ORD(T) - 1); PV = 200*SUM(T, R(T)) + 90*(4*RTERM/(1+RHO)); TLAST(T) = 0; TLAST('25') = 1; TFIRST('1') = 1; $ONTEXT $MODEL: BASIC $SECTORS: X(T) ! production at time t I(T) ! production of new capital (investment) at time t K(T) ! capital stock at time t U ! present value of utility $COMMODITIES: CX(T) ! present value price of output at t CR(T) ! present value rental rate for capital at time t CK(T) ! present value price of capital (cost of production) at t CL(T) ! present value price of labor at time t CKT ! terminal period present value price of capital CU ! price of utility (intertemporal consummer price index) HEAVEN ! price of heaven $CONSUMERS: CONS ! representative consumer DEITY ! deity who demand terminal capital stock and sells heaven $AUXILIARY: TRANS ! endogenous tax or subsidy achieves steady-state at TLAST $PROD:K(T) O:CK(T+1) Q:(100*(1-DELTA)) P:(4*R(T+1)) O:CKT$TLAST(T) Q:(100*(1-DELTA)) P:(4*R(T)/(1+RHO)) O:CR(T) Q:100 P:(R(T)) I:CK(T) Q:100 P:(4*R(T)) $PROD:I(T) O:CK(T) Q:10 I:CL(T) Q:40 $PROD:X(T) s:1 O:CX(T) Q:200 I:CL(T) Q:100 I:CR(T) Q:100 $PROD:U s:1 a:2 O:CU Q:PV I:CX(T) Q:200 P:R(T) a: I:HEAVEN Q:90 P:(4*RTERM/(1+RHO)) A:CONS N:TRANS $DEMAND:CONS D:CU Q:PV E:CL(T) Q:140 E:CK(T)$TFIRST(T) Q:INITK $DEMAND:DEITY D:CKT Q:90 E:HEAVEN Q:90 $CONSTRAINT: TRANS CR('25') =E= (1 - (1-DELTA)/(1+RHO))*CL('25')*4; $OFFTEXT $SYSINCLUDE MPSGESET BASIC TRANS.UP = +INF; TRANS.LO = -INF; CX.L(T) = R(T); CL.L(T) = R(T); CR.L(T) = R(T); CK.L(T) = 4*R(T); CKT.L = 4*R('25')/(1+RHO); HEAVEN.L = 4*R('25')/(1+RHO); TRANS.L = 0; *BASIC.ITERLIM = 0; $INCLUDE BASIC.GEN SOLVE BASIC USING MCP; PVUTIL = SUM(T, X.L(T)*R(T)) + (X.L('25')*R('25'))/RHO; DISPLAY PVUTIL; CONSUME(T) = X.L(T); INVEST(T) = I.L(T); KSTOCK(T) = K.L(T); SOLUTION(T,"X") = X.L(T); SOLUTION(T,"I") = I.L(T); SOLUTION(T,"K") = K.L(T); $LIBINCLUDE XLDUMP SOLUTION M11.xls SHEET1!A2 * counterfactual: lower the capital stock below is ss value INITK = 30; $INCLUDE BASIC.GEN SOLVE BASIC USING MCP; PVUTIL = SUM(T, X.L(T)*R(T)) + (X.L('25')*R('25'))/RHO; DISPLAY PVUTIL; CONSUME(T) = X.L(T); INVEST(T) = I.L(T); KSTOCK(T) = K.L(T); SOLUTION(T,"X") = X.L(T); SOLUTION(T,"I") = I.L(T); SOLUTION(T,"K") = K.L(T); $LIBINCLUDE XLDUMP SOLUTION M11.xls SHEET1!F2 * counterfactual: lower the rate of time preference INITK = 90; RHO = 0.1; RTERM = (1/(1+RHO))**(CARD(T) - 1);; R(T) = (1/(1+RHO))**(ORD(T)-1); D(T) = (1-DELTA)**(ORD(T) - 1); PV = 200*SUM(T, R(T)) + 90*(4*RTERM/(1+RHO)); $INCLUDE BASIC.GEN SOLVE BASIC USING MCP; PVUTIL = SUM(T, X.L(T)*R(T)) + (X.L('25')*R('25'))/RHO; DISPLAY PVUTIL; CONSUME(T) = X.L(T); INVEST(T) = I.L(T); KSTOCK(T) = K.L(T); SOLUTION(T,"X") = X.L(T); SOLUTION(T,"I") = I.L(T); SOLUTION(T,"K") = K.L(T); $LIBINCLUDE XLDUMP SOLUTION M11.xls SHEET1!K2