Compare commits

...

4 Commits

2 changed files with 16 additions and 136 deletions

View File

@ -1,28 +0,0 @@
function fmax=Q3_SteadyState_util(x, pname, eq_ind, exs_)
global M_
if nargin==0,
x=[];
end
for j=1:length(x),
set_param_value(pname{j},x(j));
end
ys = quest1_steadystate;
exs = M_.exo_nbr;
ex_ = zeros(1,exs);
yc = quest1_static(ys, ex_, M_.params);
% fmax = yc(10);
if nargin<3,
[fmax, iff] = max(abs(yc));
if length(x)>1,
fmax=log10(fmax);
else
fmax=yc(iff);
end
else
fmax=yc(eq_ind);
end

View File

@ -1,10 +1,8 @@
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);'])
assignin('base',M_.param_names{j},M_.params(j));
eval([M_.param_names{j},' = M_.params(j);'])
end
check1=0;
@ -14,27 +12,18 @@ if isempty(DDYN), DDYN=1; end
E_EX_RW = E_EX_INOMW - GPW0;
E_EX_R = 1/BETAE-1;
% if SIMFLAG==0,
E_EX_RW = E_EX_R;
E_EX_INOMW = E_EX_RW + GPW0;
% end
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)/(1+GPOP0);
% DELTAKGE = (DELTAGE+GPOP0)/(1+GPOP0);
DELTAKE = (DELTAE+GPOP0);
DELTAKGE = (DELTAGE+GPOP0);
M_.params(strmatch('E_EX_RW',M_.param_names,'exact')) = E_EX_RW;
M_.params(strmatch('GYW0',M_.param_names,'exact')) = GYW0;
M_.params(strmatch('GTFP0',M_.param_names,'exact')) = GTFP0;
% end;
%SE=0.5*(SESUM+SEDIFF);
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_DEPRAT = DEPRAT0;
% E_DEPRAT1 = DEPRAT0;
% E_DEPRAT2 = DEPRAT0;
E_GC = GY0;
E_GCL = GY0+GPOP0;
E_GCLC = GY0;
@ -68,17 +57,13 @@ E_GYW=GYW0;
E_INOM = E_EX_R+GP0;
E_INOMW =E_EX_INOMW;
E_LOL = 0;
% E_NPART = NPART0;
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(strmatch('LYWY0',M_.param_names,'exact')) = LYWY0;
M_.params(strcmp('LYWY0', M_.param_names)) = LYWY0;
YWY = exp(LYWY0);
% E_LIK = log(DELTAKE+GY0+GPCPI0)-(GY0+GPCPI0);
% E_LIKG = log(DELTAKGE+GY0+GPCPI0)-(GY0+GPCPI0);
% IK = (DELTAKE+GY0+GPCPI0)/exp(GY0+GPCPI0);
E_LIK = log(DELTAKE+GY0+GPCPI0);
E_LIKG = log(DELTAKGE+GY0+GPCPI0);
IK = (DELTAKE+GY0+GPCPI0);
@ -89,73 +74,25 @@ else
YKN = (E_EX_R+RPREMK+DELTAE)/(1-TP)/(1-TAUE)/(1-ALPHAE);
E_LYKPPI=log(YKN);
ISN=IK/YKN;
M_.params(strmatch('ISN',M_.param_names,'exact')) = ISN;
assignin('base','ISN',ISN);
M_.params(strcmp('ISN', M_.param_names)) = ISN;
end
% if SIMFLAG == 1,
% UCAP0 = (1-TAUE)*(1-ALPHAE)*exp(E_LYKPPI)/A1E;
% set_param_value('UCAP0',UCAP0);
% % assignin('base','UCAP0',UCAP0);
% % M_.params(strmatch('UCAP0',M_.param_names,'exact')) = UCAP0;
% set_param_value('SIMFLAG',-1);
% if abs(E_EX_RW - E_EX_R)<1.e-8,
% pname={'L0'};
% eqind=10;
% % L0 = fzero(@(x) quest1_steadystate_util(x, pname, eqind),L0);
% L0 = fzero(@(x) quest1_steadystate_util(x, pname),L0);
% LER0=0;
% else
% while abs(quest1_steadystate_util)>options_.dynatol,
% pname={'L0'};
% eqind=10;
% L0 = fzero(@(x) quest1_steadystate_util(x, pname, eqind),L0);
% pname={'LER0'};
% eqind=30;
% LER0 = fzero(@(x) quest1_steadystate_util(x, pname, eqind),LER0);
% end
% % if quest1_steadystate_util>options_.dynatol,
% % opt=optimset('fminsearch');
% % % opt.Display='iter';
% % opt.TolX=1.e-4;
% % opt.TolFun=1.e-4;
% % opt.MaxFunEvals=1000;
% % pname={'L0','LER0'};
% % xx = fminsearch(@(x) quest1_steadystate_util(x, pname),[L0; LER0],opt);
% % % xx = dynare_solve('quest1_steadystate_util',[L0 LER0],0,{'L0','LER0'},[10 30]);
% %
% % L0=xx(1);
% % LER0=xx(2);
% % end
% set_param_value('LER0',LER0);
% end
% set_param_value('L0',L0);
% set_param_value('SIMFLAG',1);
%
%
% end
E_L =L0;
E_LL =log(L0);
E_LL0 =log(L0);
% if SIMFLAG==0 | abs(E_EX_RW - E_EX_R)<1.e-8,
LER0=0;
% end
LER0=0;
E_ER=exp(LER0);
E_LER = LER0;
PMP = (E_ER^ALPHAX);
E_LPMP = log(PMP);
%PCP = PMP^(1-SE);
PCP = (SE+(1-SE)*PMP^(1-SIGIME))^(1/(1-SIGIME));
E_LPCP= log(PCP);
%E_LPCP = (1-SE)*E_LPMP - SE*(1-SE)*E_LPMP^2*(SIGIME-1)/2;
%PCP=exp(E_LPCP);
E_LPCPM0 = E_LPCP-E_LPMP;
PXP = 1; %PCP^(S0*(1-SXDE));
E_LPXP = 0; %(1-SXDE)*S0*E_LPCP;
% E_LIMYN = log(1-SE);
% E_LEXYN = log(1-SWE);
IMYN = (1-SE)*exp(E_LPCP-E_LPMP)^(SIGIME-1)*(1-TBYN);
E_LIMYN = log(IMYN);
@ -169,18 +106,15 @@ E_ZEPS_IG = 0;
E_LGSN = log(GSN);
E_LISN = log(ISN);
CSN = 1-(IGSN+GSN+ISN+TBYN);
M_.params(strmatch('CSN',M_.param_names,'exact')) = CSN;
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;
%E_TW=TW0*(E_WPTU)^TW1;
% TW0=E_TW/(E_WPTU)^TW1;
M_.params(strmatch('TW0',M_.param_names,'exact')) = TW0;
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 ...
@ -192,9 +126,7 @@ 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;
% if SIMFLAG==0,
OMEGE = A/(KAPPAE*(L0*(1-HABLE))^(KAPPAE-1)+A*(L0*(1-HABLE))^KAPPAE);
% end
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);
@ -271,36 +203,12 @@ for k=1:M_.orig_endo_nbr
end
A1E = (1-TAUE)*(1-ALPHAE)*exp(E_LYKPPI)/UCAP0;
assignin('base','A1E',A1E);
M_.params(strmatch('A1E',M_.param_names,'exact')) = A1E;
M_.params(strcmp('A1E', M_.param_names)) = A1E;
M_.params(strmatch('OMEGE',M_.param_names,'exact')) = OMEGE;
assignin('base','OMEGE',OMEGE);
M_.params(strcmp('OMEGE', M_.param_names)) = OMEGE;
if DDYN==0
RPREMK = (1-TAUE)*(1-ALPHAE)*(1-TP)*exp(E_LYKPPI) - DELTAE-E_EX_R;
M_.params(strmatch('RPREMK',M_.param_names,'exact')) = RPREMK;
assignin('base','RPREMK',RPREMK);
M_.params(strcmp('RPREMK', M_.param_names)) = RPREMK;
end
params = M_.params;
%PAR1 = 1/((1-TP)*(1/exp(E_LISN)-(1/exp(E_LISN))*(1/exp(E_LYWR))- SHCRED*E_INOM*exp(E_LIK)));
%PAR1 = exp(E_LIK)/((1-TP)*(exp(E_LYKPPI) -exp(E_LYKPPI)/exp(E_LYWR)-SHCRED*(E_INOM+RPREMK)));
%M_.params(strmatch('PAR1',M_.param_names,'exact')) = PAR1;
% exs = M_.exo_nbr;
% ex_ = zeros(1,exs);
%
% [fmax, iff] = max(abs(quest1_static(ys, ex_, M_.params)));
%
% if fmax>1.e-8; %options_.dynatol;
% disp(['The analytic steady state is not correct! ',num2str(fmax)])
% disp(['Equation ',int2str(iff),', discrepancy ',num2str(fmax)])
% check1=1;
% end
% if SIMFLAG==1,
% exs = M_.exo_nbr;
% ex_ = zeros(1,exs);
% disp(num2str(max(abs( quest1_static(ys, ex_, M_.params))))),
% end