Remove Q3_steadystate routine, use steady_state_model block instead.

Also remove the (useless) initval block.

=> Faster evaluation of the likelihood.
master
Stéphane Adjemian (Argos) 2023-10-12 18:28:27 +02:00
parent c378472dca
commit a260f9af17
Signed by: stepan
GPG Key ID: A6D44CB9C64CE77B
2 changed files with 161 additions and 310 deletions

269
Q3.mod
View File

@ -503,119 +503,172 @@ E_LWS = E_LL-E_LYWR;
end;
initval;
E_BGYN = 2.4000;
E_BWRY = 0;
E_CLCSN = 0.3862;
E_DBGYN = 0;
E_LER = 0;
E_ETA = 0.9000;
E_GC = 0.0030;
E_GCL = 0.0041;
E_GCLC = 0.0030;
E_GCNLC = 0.0030;
E_GE = 0;
E_GEX = 0.0030;
E_GEXL = 0.0115;
E_GG = 0.0030;
E_GGL = 0.0041;
E_GI = 0.0030;
E_GIG = 0.0030;
E_GIL = 0.0041;
E_GIM = 0.0030;
E_GIML = 0.0115;
E_GK = 0.0030;
E_GKG = 0.0030;
E_GL = 0;
E_GSN = 0.2030;
E_GTAX = 0.0080;
E_GTFP =0.0024;
E_GTFPUCAP = 0.0013;
E_GTR = 0.0030;
E_GUC = 0;
E_GUCAP = 0;
E_GWRY = 0;
E_GY = 0.0030;
E_GYL = 0.0041;
E_GYPOT = 0.0030;
E_GYW = 0.0030;
E_INOM = 0.0090;
E_INOMW = 0.0090;
E_LL = -0.4308;
E_LL0 = -0.4308;
E_LBGYN = 0.8755;
E_LCSN = -0.5381;
E_LCLCSN = -0.9514;
E_LCNLCSN = -0.3702;
E_LEXYN = -1.9576;
E_LGSN = -1.5945;
E_LIGSN = -3.6889;
E_LIMYN = -1.9576;
E_LIK = -3.5359;
E_LIKG = -4.0963;
E_LISN = -1.6706;
E_LOL =0;
E_LPCP =0 ;
E_LPMP =0;
E_LPXP = 0;
E_LTRYN = -1.7809;
E_LUCYN = 4.9955;
E_LUCLCYN = 3.9815;
E_LYGAP = 0;
E_LYKPPI = -1.8653;
E_LYWR = 0.3285;
E_LYWY = 0;
E_MRY = 0.9964;
E_PHI = 0.0050;
E_PHIC = 0.0050;
E_PHIPI = 0;
E_PHIM = 0.0050;
E_PHIML = 0.0010;
E_PHIW = 0.0050;
E_PHIX = 0.0050;
E_PHIXL = 0.0010;
E_Q = 1.0000;
E_R = 0.0040;
E_TAXYN = -0.0142;
E_TBYN = 0;
E_TRTAXYN = 0.1827;
E_TRW = 0.3600;
E_TRYN = 0.1685;
E_TW = 0.2000;
E_UCAP = 1.0000;
E_UCAP0 = 1.0000;
E_VL = 19.0679;
E_VLLC = 8.8600;
E_WPHI = 0.0080;
E_WRPHI = 0.0030;
E_WS = 0.4680;
E_WSW = 0.2808;
E_ZEPS_C =0;
E_ZEPS_ETA =0;
E_ZEPS_ETAM =0;
E_ZEPS_ETAX =0;
E_ZEPS_EX =0;
E_ZEPS_G =0;
E_ZEPS_IG =0;
E_ZEPS_L =0;
E_ZEPS_M =0;
E_ZEPS_PPI =0;
E_ZEPS_RPREME=0;
E_ZEPS_RPREMK=0;
E_ZEPS_TR =0;
E_ZEPS_W =0;
E_ZPHIT =0.0050;
E_LCY =-0.5381;
E_LGY =-1.5945;
E_LWS =-0.7593;
interest = 0;
inflation = 0;
outputgap =0;
steady_state_model;
E_EX_RW = E_EX_INOMW - GPW0;
E_EX_R = 1/BETAE-1;
E_EX_RW = E_EX_R;
E_EX_INOMW = E_EX_RW + GPW0;
GTFP0 = (ALPHAE+ALPHAGE-1)/ALPHAE*GY0-(2-ALPHAE-ALPHAGE)/ALPHAE*GPCPI0;
GYW0 = GY0;
DELTAKE = (DELTAE+GPOP0);
DELTAKGE = (DELTAGE+GPOP0);
SWE = SE;
E_ETA =(1-TAUE);
E_GC = GY0;
E_GCL = GY0+GPOP0;
E_GCLC = GY0;
E_GCNLC = GY0;
E_GE = GP0 - GPW0;
E_GER =0;
E_GEX=GY0;
E_GEXL = GY0+GPOP0+DGEX;
E_GG = GY0;
E_GGL = GY0+GPOP0;
E_GI = GY0+GPCPI0;
E_GIG = E_GI;
E_GIL = GY0+GPCPI0+GPOP0;
E_GIM = GY0;
E_GIML = GY0+GPOP0+DGIM;
E_GK = E_GI;
E_GKG = E_GI;
E_GL = 0;
E_GPOPA = GPOP0;
E_GTFP = (ALPHAE+ALPHAGE-1)/ALPHAE*GY0-(2-ALPHAE-ALPHAGE)/ALPHAE*GPCPI0;
E_GTFPUCAP = ALPHAE*E_GTFP;
E_GUC = 0;
E_GUCAP = 0;
E_GWRY = 0;
E_GY = GY0;
E_GYL = GY0+GPOP0;
E_GTAX = GY0+GP0;
E_GTR = GY0;
E_GYPOT = GY0;
E_GYW = GYW0;
E_INOM = E_EX_R+GP0;
E_INOMW = E_EX_INOMW;
E_LOL = 0;
E_BWRY = (E_EX_RW - E_EX_R)/RPREME;
TBYN = (-E_INOM+GPOP0+GP0+GY0)*E_BWRY;
E_TBYN = TBYN;
E_LYWY = LYWY0;
YWY = exp(LYWY0);
E_LIK = log(DELTAKE+GY0+GPCPI0);
E_LIKG = log(DELTAKGE+GY0+GPCPI0);
IK = (DELTAKE+GY0+GPCPI0);
YKN = (E_EX_R+RPREMK+DELTAE)/(1-TP)/(1-TAUE)/(1-ALPHAE);
E_LYKPPI = log(YKN);
ISN = IK/YKN;
E_L = L0;
E_LL = log(L0);
E_LL0 = log(L0);
LER0 = 0;
E_ER = exp(LER0);
E_LER = LER0;
PMP = (E_ER^ALPHAX);
E_LPMP = log(PMP);
PCP = (SE+(1-SE)*PMP^(1-SIGIME))^(1/(1-SIGIME));
E_LPCP = log(PCP);
E_LPCPM0 = E_LPCP-E_LPMP;
PXP = 1;
E_LPXP = 0;
IMYN = (1-SE)*exp(E_LPCP-E_LPMP)^(SIGIME-1)*(1-TBYN);
E_LIMYN = log(IMYN);
EXYN = (1-SE)*exp(E_LER*(ALPHAX*SE))^SIGEXE*exp(E_LYWY)^ALPHAX;
E_LEXYN = log(EXYN);
E_LIGSN = log(IGSN);
E_ZEPS_IG = 0;
E_LGSN = log(GSN);
E_LISN = log(ISN);
CSN = 1-(IGSN+GSN+ISN+TBYN);
E_LCSN = log(CSN);
E_LBGYN=log(BGTAR);
YWR = 1/((1-TAUE)*ALPHAE/L0*(1+E_LOL));
E_LYWR = log(YWR);
E_LWPTU = 0;
E_TW = 0.2;
E_TRW = TRSN;
E_WS = exp(E_LL-E_LYWR);
E_TAXYN = (E_INOM-GP0-GY0-GPOP0)*BGTAR+IGSN+GSN+TRSN*E_WS-(E_TW+SSC)*E_L/YWR -TP*(1-E_L/YWR)-TVAT*CSN;
CLCSN = ((1-E_TW-SSC)*E_L/YWR + TRSN*E_WS - E_TAXYN)/(1+TVAT);
E_LCLCSN = log(CLCSN);
CNLCSN = (CSN-CLCSN*SLC*SLCFLAG)/(1-SLC*SLCFLAG);
E_LCNLCSN = log(CNLCSN);
UCTERM = ((1-SLCFLAG*SLC)*(CNLCSN*(1-HABE))^(-SIGC)+SLCFLAG*SLC*CLCSN^(-SIGC))/((1-SLCFLAG*SLC)*(CNLCSN*(1-HABE))^(1-SIGC)+SLCFLAG*SLC*CLCSN^(1-SIGC));
A = (THETAE-1)/THETAE*(1-E_TW-SSC)/(1+TVAT)*E_WS*UCTERM/L0;
OMEGE = A/(KAPPAE*(L0*(1-HABLE))^(KAPPAE-1)+A*(L0*(1-HABLE))^KAPPAE);
UCYN = (CNLCSN*(1-HABE))^(-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(1-SIGC);
E_LUCYN = log(UCYN);
UCLCYN = (CLCSN)^(-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(1-SIGC);
E_LUCLCYN = log(UCLCYN);
E_VL = (CNLCSN*(1-HABE))^(1-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(-SIGC)*KAPPAE*OMEGE*(L0*(1-HABLE))^(KAPPAE-1);
E_VLLC = (CLCSN)^(1-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(-SIGC)*KAPPAE*OMEGE*(L0*(1-HABLE))^(KAPPAE-1);
E_LYGAP = 0 ;
E_LYGAP1 = 0 ;
E_LCY = E_LCSN-E_LPCP;
E_LGY = E_LGSN-E_LPCP;
E_LWS = log(E_WS);
E_CLCSN = exp(E_LCLCSN);
E_TRYN = E_TRW*exp(E_LL-E_LYWR);
E_LTRYN = log(E_TRYN);
E_TRTAXYN = E_TRW*exp(E_LL-E_LYWR) - E_TAXYN;
E_BGYN = exp(E_LBGYN);
E_GSN = exp(E_LGSN);
E_WSW = (1-E_TW-SSC)*E_WS;
E_MRY = (1+E_INOM)^(-ZETE);
E_PHI = GP0;
E_PHIC = GP0;
E_PHIPI = GPCPI0;
E_PHIM = GP0;
E_PHIML = GP0+DGPM;
E_PHIW = GPW0;
E_PHIX = GP0;
E_PHIXL = GP0+DGPX;
E_Q = 1;
E_R = E_EX_R;
E_TI = 0;
E_UCAP = UCAP0;
E_UCAP0 = UCAP0;
E_WPHI = GP0+GY0;
E_WRPHI = GY0;
E_ZEPS_C = 0;
E_ZEPS_CLC = 0;
E_ZEPS_EQ = 0;
E_ZEPS_ETA = 0;
E_ZEPS_ETAM = 0;
E_ZEPS_ETAX = 0;
E_ZEPS_EX = 0;
E_ZEPS_G = 0;
E_ZEPS_I = 0;
E_ZEPS_IM = 0;
E_ZEPS_L = 0;
E_ZEPS_M = 0;
E_ZEPS_PC = 0;
E_ZEPS_PPI = 0;
E_ZEPS_POP = 0;
E_ZEPS_PX = 0;
E_ZEPS_RPREME = 0;
E_ZEPS_RPREMK = 0;
E_ZEPS_SLC = 0;
E_ZEPS_TFP = 0;
E_ZEPS_TR = 0;
E_ZEPS_W = 0;
E_ZEPS_Y = 0;
E_ZEPS_YW = 0;
E_DBGYN = 0;
E_ZEPS_YGAP = 0;
E_ZPHIT = GP0;
interest = ((E_INOM+1)^4-interestq_exog^4)/interestq_exog^4;
inflationq = (4*E_PHIC+1-inflationannual_exog)/inflationannual_exog;
inflation = (1/4)*(inflationq+inflationq+inflationq+inflationq);
outputgap = E_LYGAP;
A1E = (1-TAUE)*(1-ALPHAE)*exp(E_LYKPPI)/UCAP0;
end;
steady;
check;
// set exogenous shocks NOT jointly estimated with the DSGE model
shocks;
var E_EPS_INOMW;

View File

@ -1,202 +0,0 @@
function [ys,params,check1] = Q3_steadystate(junk, exs, M_, options_)
for j=1:size(M_.param_names,1)
eval([M_.param_names{j},' = M_.params(j);'])
end
check1=0;
E_EX_RW = E_EX_INOMW - GPW0;
E_EX_R = 1/BETAE-1;
E_EX_RW = E_EX_R;
E_EX_INOMW = E_EX_RW + GPW0;
GTFP0 = (ALPHAE+ALPHAGE-1)/ALPHAE*GY0-(2-ALPHAE-ALPHAGE)/ALPHAE*GPCPI0;
GYW0 = GY0;
DELTAKE = (DELTAE+GPOP0);
DELTAKGE = (DELTAGE+GPOP0);
M_.params(strcmp('E_EX_RW', M_.param_names)) = E_EX_RW;
M_.params(strcmp('GYW0', M_.param_names)) = GYW0;
M_.params(strcmp('GTFP0', M_.param_names)) = GTFP0;
SWE=SE;
E_ETA =(1-TAUE);
E_GC = GY0;
E_GCL = GY0+GPOP0;
E_GCLC = GY0;
E_GCNLC = GY0;
E_GE = GP0 - GPW0;
E_GER =0;
E_GEX=GY0;
E_GEXL = GY0+GPOP0+DGEX;
E_GG =GY0;
E_GGL =GY0+GPOP0;
E_GI =GY0+GPCPI0;
E_GIG = E_GI;
E_GIL =GY0+GPCPI0+GPOP0;
E_GIM=GY0;
E_GIML = GY0+GPOP0+DGIM;
E_GK =E_GI;
E_GKG =E_GI;
E_GL =0;
E_GPOPA = GPOP0;
E_GTFP = (ALPHAE+ALPHAGE-1)/ALPHAE*GY0-(2-ALPHAE-ALPHAGE)/ALPHAE*GPCPI0;
E_GTFPUCAP = ALPHAE*E_GTFP;
E_GUC = 0;
E_GUCAP = 0;
E_GWRY = 0;
E_GY=GY0;
E_GYL=GY0+GPOP0;
E_GTAX = GY0+GP0;
E_GTR = GY0;
E_GYPOT=GY0;
E_GYW=GYW0;
E_INOM = E_EX_R+GP0;
E_INOMW =E_EX_INOMW;
E_LOL = 0;
E_BWRY = (E_EX_RW - E_EX_R)/RPREME;
TBYN = (-E_INOM+GPOP0+GP0+GY0)*E_BWRY;
E_TBYN=TBYN;
E_LYWY = LYWY0;
M_.params(strcmp('LYWY0', M_.param_names)) = LYWY0;
YWY = exp(LYWY0);
E_LIK = log(DELTAKE+GY0+GPCPI0);
E_LIKG = log(DELTAKGE+GY0+GPCPI0);
IK = (DELTAKE+GY0+GPCPI0);
YKN = (E_EX_R+RPREMK+DELTAE)/(1-TP)/(1-TAUE)/(1-ALPHAE);
E_LYKPPI=log(YKN);
ISN=IK/YKN;
M_.params(strcmp('ISN', M_.param_names)) = ISN;
E_L =L0;
E_LL =log(L0);
E_LL0 =log(L0);
LER0=0;
E_ER=exp(LER0);
E_LER = LER0;
PMP = (E_ER^ALPHAX);
E_LPMP = log(PMP);
PCP = (SE+(1-SE)*PMP^(1-SIGIME))^(1/(1-SIGIME));
E_LPCP= log(PCP);
E_LPCPM0 = E_LPCP-E_LPMP;
PXP = 1; %PCP^(S0*(1-SXDE));
E_LPXP = 0; %(1-SXDE)*S0*E_LPCP;
IMYN = (1-SE)*exp(E_LPCP-E_LPMP)^(SIGIME-1)*(1-TBYN);
E_LIMYN = log(IMYN);
EXYN = (1-SE)*exp(E_LER*(ALPHAX*SE))^SIGEXE*exp(E_LYWY)^ALPHAX;
E_LEXYN = log(EXYN);
E_LIGSN = log(IGSN);
E_ZEPS_IG = 0;
E_LGSN = log(GSN);
E_LISN = log(ISN);
CSN = 1-(IGSN+GSN+ISN+TBYN);
M_.params(strcmp('CSN', M_.param_names)) = CSN;
E_LCSN = log(CSN);
E_LBGYN=log(BGTAR);
YWR = 1/((1-TAUE)*ALPHAE/L0*(1+E_LOL)) ;
E_LYWR = log(YWR) ;
E_LWPTU = 0;
E_TW = 0.2;
M_.params(strcmp('TW0', M_.param_names)) = TW0;
E_TRW = TRSN;
E_WS = exp(E_LL-E_LYWR);
E_TAXYN = (E_INOM-GP0-GY0-GPOP0)*BGTAR+IGSN+GSN+TRSN*E_WS ...
-(E_TW+SSC)*E_L/YWR -TP*(1-E_L/YWR) -TVAT*CSN;
CLCSN = ((1-E_TW-SSC)*E_L/YWR + TRSN*E_WS - E_TAXYN)/(1+TVAT);
E_LCLCSN = log(CLCSN);
CNLCSN = (CSN-CLCSN*SLC*SLCFLAG)/(1-SLC*SLCFLAG);
E_LCNLCSN = log(CNLCSN);
UCTERM = ((1-SLCFLAG*SLC)*(CNLCSN*(1-HABE))^(-SIGC)+SLCFLAG*SLC*CLCSN^(-SIGC))/((1-SLCFLAG*SLC)*(CNLCSN*(1-HABE))^(1-SIGC)+SLCFLAG*SLC*CLCSN^(1-SIGC));
A = (THETAE-1)/THETAE*(1-E_TW-SSC)/(1+TVAT)*E_WS*UCTERM/L0;
OMEGE = A/(KAPPAE*(L0*(1-HABLE))^(KAPPAE-1)+A*(L0*(1-HABLE))^KAPPAE);
UCYN = (CNLCSN*(1-HABE))^(-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(1-SIGC);
E_LUCYN = log(UCYN);
UCLCYN = (CLCSN)^(-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(1-SIGC);
E_LUCLCYN = log(UCLCYN);
E_VL = (CNLCSN*(1-HABE))^(1-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(-SIGC)*KAPPAE*OMEGE*(L0*(1-HABLE))^(KAPPAE-1);
E_VLLC = (CLCSN)^(1-SIGC)*(1-OMEGE*(L0*(1-HABLE))^KAPPAE)^(-SIGC)*KAPPAE*OMEGE*(L0*(1-HABLE))^(KAPPAE-1);
E_LYGAP = 0 ;
E_LYGAP1 = 0 ;
E_LCY = E_LCSN-E_LPCP;
E_LGY = E_LGSN-E_LPCP;
E_LWS = log(E_WS);
E_CLCSN = exp(E_LCLCSN);
E_TRYN = E_TRW*exp(E_LL-E_LYWR) ;
E_LTRYN = log(E_TRYN);
E_TRTAXYN = E_TRW*exp(E_LL-E_LYWR) - E_TAXYN;
E_BGYN = exp(E_LBGYN);
E_GSN = exp(E_LGSN);
E_WSW = (1-E_TW-SSC)*E_WS;
E_MRY = (1+E_INOM)^(-ZETE);
E_PHI=GP0;
E_PHIC=GP0;
E_PHIPI=GPCPI0;
E_PHIM=GP0;
E_PHIML=GP0+DGPM;
E_PHIW=GPW0;
E_PHIX=GP0;
E_PHIXL=GP0+DGPX;
E_Q = 1 ;
E_R = E_EX_R;
E_TI = 0;
E_UCAP =UCAP0;
E_UCAP0 =UCAP0;
E_WPHI = GP0+GY0;
E_WRPHI = GY0;
E_ZEPS_C = 0;
E_ZEPS_CLC = 0;
E_ZEPS_EQ = 0;
E_ZEPS_ETA = 0;
E_ZEPS_ETAM = 0;
E_ZEPS_ETAX = 0;
E_ZEPS_EX = 0;
E_ZEPS_G = 0;
E_ZEPS_I = 0;
E_ZEPS_IM = 0;
E_ZEPS_L = 0;
E_ZEPS_M = 0;
E_ZEPS_PC = 0;
E_ZEPS_PPI = 0;
E_ZEPS_POP = 0;
E_ZEPS_PX = 0;
E_ZEPS_RPREME = 0;
E_ZEPS_RPREMK = 0;
E_ZEPS_SLC = 0;
E_ZEPS_TFP = 0;
E_ZEPS_TR = 0;
E_ZEPS_W = 0;
E_ZEPS_Y = 0;
E_ZEPS_YW = 0;
E_DBGYN = 0;
E_ZEPS_YGAP = 0;
E_ZPHIT = GP0;
% modelbase variables
interest = ((E_INOM+1)^4-interestq_exog^4)/interestq_exog^4;
inflationq = (4*E_PHIC+1-inflationannual_exog)/inflationannual_exog;
inflation = (1/4)*(inflationq+inflationq+inflationq+inflationq);
outputgap = E_LYGAP;
ys=zeros(M_.orig_endo_nbr,1);
for k=1:M_.orig_endo_nbr
ys(k,1)=eval(M_.endo_names{k});
end
A1E = (1-TAUE)*(1-ALPHAE)*exp(E_LYKPPI)/UCAP0;
M_.params(strcmp('A1E', M_.param_names)) = A1E;
M_.params(strcmp('OMEGE', M_.param_names)) = OMEGE;
params = M_.params;