Page 1 of 1

Neokeynesian model for a small open economy

PostPosted: Sat Aug 09, 2014 11:15 pm
by camara_cmb
Hi everyone!

i am running a nk model for a small open economy using this cod


%----------------------------------------------------------------
% 0. Housekeeping (close all graphic windows)
%----------------------------------------------------------------

close all;

%----------------------------------------------------------------
% 1. Defining variables
%----------------------------------------------------------------

// Endogenous variables (31)

var la cc ppi pis ch pf cf ph mch f1h f2h pih pmh yh w RW RE dM dE tb rer chE yE m h R e_m stb z piE;


// Exogenous variables (3)
varexo u_e_m u_e_RW u_e_yE;

// Parameters (20)
parameters BETA SIGMA PHI OMEGA NU FI;
parameters EPSIh TITAh PSI XI ETA D ETAE;
parameters ALPHA_ppi ALPHA_y ALPHA_R;
parameters RHO_RW RHO_yE RHO_m SIGMA_RW SIGMA_yE SIGMA_m;
parameters ppi_ss vel_ss R_ss yh_ss h_ss RW_ss yE_ss stb_ss;

%----------------------------------------------------------------
% 2. Calibration
%----------------------------------------------------------------

// Calibarted parameteres (BETA, VARPHI, NU are determined in the calibration)
SIGMA=1;
OMEGA=0.65;
NU=1.5;
EPSILON=11;
TITAh=0.7;
ETA=1.5;
ETAh=1.5;
PHI=0.0001;
FI=1;

ALPHA_ppi=1.5;
ALPHA_y=0.2;
ALPHA_R=0.7;

RHO_RW=0.9;
SIGMA_RW=0.01;
RHO_m=0;
SIGMA_m=0.01;
RHO_yE=0.9;
SIGMA_yE=0.01;
BETA=.99;
XI=10;

// Targeted steady state values
piE_ss=1;
ppi_ss=1.0075;
vel_ss=3;
h_ss=1/3;
ph_ss=1;
stb_ss=0.05;
z_ss=1;

%----------------------------------------------------------------
% 3. Model (16 equations)
%----------------------------------------------------------------

model;

////////////////////////////HOUSEHOLDS

//la=cc^(-SIGMA);
exp(la)=exp(cc)^(-SIGMA);

//w*la=PSI*h^(FI);
exp(w)*exp(la)=PSI*exp(h)^(FI);

//(1/la)*NU*m^(-XI)=1-(1/R);
exp(1/la)*NU*exp(m)^(-XI)=1-(1/exp(R));

//la=BETA*R*la(+1)/ppi(+1);
exp(la)=BETA*exp(R)*exp(la(+1))/exp(ppi(+1));

//la= BETA*RE*pis(+1)*la(+1)/ppi(+1);
exp(la)=BETA*exp(RE)*exp(pis(+1))*exp(la(+1))/exp(ppi(+1));

////////////////////////////FINAL CONS GDS

//cc=(OMEGA^(1/ETA)*(ch^(1-1/ETA))+((1-OMEGA)^(1/ETA))*(cf^(1-1/ETA)))^(ETA/(ETA-1))
exp(cc)=(OMEGA^(1/ETA)*(exp(ch)^(1-1/ETA))+((1-OMEGA)^(1/ETA))*exp(cf^(1-1/ETA)))^(ETA/(ETA-1));

//cf=(1-OMEGA)*(pf^(-ETA))*cc
exp(cf)=(1-OMEGA)*(exp(pf)^(-ETA))*exp(cc);

//ch=OMEGA*(ph^(-ETA))*cc
exp(ch)=OMEGA*(exp(ph)^(-ETA))*exp(cc);

////////////////////////////VARIETIES OF H GDS

//ph*mch*z=w
exp(ph)*exp(mch)*exp(z)=exp(w);

//f1h=(pmh^(1-EPSIh))*yh*(1-1/EPSIh)+TITAh*(BETA*(la(+1)/(la*ppi(+1))))*((pmh*ppi/pmh(+1))^(1-EPSIh))*((pih(+1))^(EPSIh))*f1h(+1)
exp(f1h)=(exp(pmh)^(1-EPSIh))*exp(yh)*(1-1/EPSIh)+TITAh*(BETA*(exp(la(+1))/(exp(la)*exp(ppi(+1))))*((exp(pmh)*exp(ppi)/exp(pmh(+1))^(1-EPSIh))*(exp(pih(+1))^(EPSIh))*exp(f1h(+1))));

//f2h=(pmh^(-EPSIh))*yh*mch+TITAh*(BETA*(la(+1)/(la*ppi(+1))))*((pmh*ppi/pmh(+1))^(-EPSIh))*(pih(+1))^(1+EPSIh)*f2h(+1)
exp(f2h)=(exp(pmh)^(-EPSIh))*exp(yh)*exp(mch)+TITAh*(BETA*(exp(la(+1))/(exp(la)*exp(ppi(+1)))))*((exp(pmh)*exp(ppi)/exp(pmh(+1)))^(-EPSIh))*(exp(pih(+1))^(1+EPSIh))*exp(f2h(+1));

//f1h=f2h
exp(f1h)=exp(f2h);

//1=TITAh*((pih/ppi(-1))^(EPSIh-1))+ (1-TITAh)*(pmh^(1-EPSIh))
1=TITAh*((exp(pih)/exp(ppi(-1)))^(EPSIh-1))+(1-TITAh)*(exp(pmh)^(1-EPSIh));

//RE=RW*exp(PHI*(dE-D))
exp(RE)=exp(RW)*exp(PHI*(dE-D));

//rer=pf
exp(rer)=exp(pf);

//chE=((ph/rer)^(-ETAE))*yE
exp(chE)=((exp(ph)/exp(rer))^(-ETAE))*exp(yE);

////////////////////////////AGREGATION

//yh=ch+chE
exp(yh)=exp(ch)+exp(chE);

//yh=z*h
exp(yh)=exp(z)*exp(h);

//ph/ph(-1)=pih/ppi
exp(ph)/exp(ph(-1))=exp(pih)/exp(ppi);

//rer/rer(-1)=pis*piE/ppi
exp(rer)/exp(rer(-1))=exp(pis)*exp(piE)/exp(ppi);

//rer*dE+pih*ph*chE-rer*cf=rer*dE(-1)*RE(-1)/ppi
exp(rer)*exp(dE)+exp(pih)*exp(ph)*exp(chE)-exp(rer)*exp(cf)=exp(rer)*dE(-1)*exp(RE(-1))/exp(ppi);

//tb=ph*chE-rer*cf
tb=exp(ph)*exp(chE)-exp(rer)*exp(cf);

//dM=m*ppi/m(-1)
exp(dM)=exp(m)/exp(m(-1))*exp(ppi);

//stb=tb/(ph*yh)
stb=tb/(exp(ph)*exp(yh));

// Monetary policy
//(R/R_ss)=(R(-1)/R_ss)^(ALPHA_R)*((ppi/ppi_ss)^ALPHA_ppi*(yh/yh_ss)^ALPHA_y)^(1-ALPHA_R)*e_m;
(exp(R)/R_ss)=(exp(R(-1))/R_ss)^(ALPHA_R)*((exp(ppi)/ppi_ss)^ALPHA_ppi*(exp(yh)/yh_ss)^ALPHA_y)^(1-ALPHA_R)*exp(e_m);

// Exogenous
//log(e_m)=RHO_m*log(e_m(-1))+u_m; // CAMBIO: antes 'u_m', ahora 'u_e_m'
log(exp(e_m))=RHO_m*log(exp(e_m(-1)))+u_e_m; // CAMBIO: antes 'u_m', ahora 'u_e_m'

//log(RW/RW_ss)=RHO_RW*log(RW(-1)/RW_ss)+u_e_RW
log(exp(RW)/exp(RW_ss))=RHO_RW*log(exp(RW(-1))/exp(RW_ss))+u_e_RW;

//log(yE/yE_ss)=RHO_yE*log(yE(-1)/yE)+u_e_yE
log(exp(yE)/exp(yE_ss))=RHO_yE*log(exp(yE(-1))/exp(yE))+u_e_yE;


end;

%----------------------------------------------------------------
% 4. Steady State
%----------------------------------------------------------------

steady_state_model;

// Computing the steady state and calibrated parameters

dE_ss=D;

BETA=ppi_ss/R_ss;

piE_ss=ppi_ss/pis_ss;

RE_ss=R_ss/pis_ss;

RW_ss=RE_ss;

pih_ss=ppi_ss;

vel=yh_ss*ph_ss/m_ss;

pmh_ss=1;

mch_ss=(EPSIh-1)/EPSIh;

yh_ss=z_ss*h_ss;

f1h_ss=(pmh_ss^(-EPSIh)*yh_ss*mch_ss)/(1-BETA*TITAh);

f1h_ss=f2h_ss;

pf_ss=((1-OMEGA*ph^(1-ETA))/(1-OMEGA))^(1/(1-ETA));

tb_ss=stb_ss*ph_ss*yh_ss;

cc_ss=ph_ss*yh_ss-tb_ss;

ch_ss=OMEGA*(ph_ss)^(-ETA)*cc_ss;

cheE=yh_ss-ch_ss;

rer_ss=pf_ss;

yE_ss=chE_ss*(ph_ss/rer_ss)^ETAE;

cf_ss=(1-OMEGA)*(rer_ss)^(-ETA)*cc_ss;

dE=tb_ss(rer_ss*(RE_ss/ppi_ss-1))^(-1);

w_ss=ph_ss*z_ss*mch_ss;

la_ss=cc^(-SIGMA);

PSI=w_ss*(h_ss)^(-FI)*cc_ss^(-SIGMA);

m_ss=yh_ss*ph_ss/vel_ss;

NU=la_ss(1-1/R_ss)*m_ss^(XI);

dM_ss=ppi_ss;

// Initial values for solver
f1h=log(f1h_ss);
f2h=log(f2h_ss);
pmh=log(pmh_ss);
yh=log(yh_ss);
ppi=log(ppi_ss);
cc=log(cc_ss);
la=log(la_ss);
h=log(h_ss);
m=log(m_ss);
w=log(w_ss);
mch=log(mch_ss);
stb=log(stb_ss);
R=log(R_ss);
z=log(z_ss);
dM=log(dM_ss);
e_m=log(1);
pis=log(pis_ss);
ch=log(ch_ss);
pf=log(pf_ss);
cf=log(cf_ss);
ph=log(ph_ss);
pih=log(pìh_ss);
RW=log(RW_ss);
RE=log(RE_ss);
dE=dE_ss;
tb=tb_ss;
rer=log(rer_ss);
chE=log(chE_ss);
yE=log(yE_ss);
piE=log(piE_ss);
yE=log(yE_ss);


end;

%----------------------------------------------------------------
% 4. Computation
%----------------------------------------------------------------

steady;
check;
shocks;
var u_e_m = SIGMA_m^2; // CAMBIO: antes 'u_m', ahora 'u_e_m'
var u_e_RW = SIGMA_RW^2;
var u_e_yE = SIGMA_yE^2;

end;

stoch_simul(periods=0, irf = 50, order = 1, nograph);
save TP3.mat;

but when i run the code it tells me that tb cannot take argument

can anyone please help me?
thank you

Re: Neokeynesian model for a small open economy

PostPosted: Sun Aug 10, 2014 2:57 pm
by jpfeifer
It says
ERROR: line 214, cols 4-33: Symbol tb_ss cannot take arguments.

Looking at line 214
Code: Select all
dE=tb_ss(rer_ss*(RE_ss/ppi_ss-1))^(-1);

you can see that there is a times missing. Dynare thus thinks the expressions in the bracket are function arguments.