%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This file implements the model of ’Introducing Financial    %
% Frictions and Unemployment into a Small Open Economy Model’ %
% by Lawrence J. Christiano, Mathias Trabandt and Karl       %
% Walentin, Journal of Economic Dynamics and Control         %
% Implemented for Dynare 4.1.0.                              %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% gb2013
% don't use alpha beta gamma psi

% This version implements the baseline model, i.e. 
% no employment frictions, nor any financial frictions.    

% global structure for parameters and steady states 
global M_;
 
var            
%endogenous variables
lmcU lrkbarU lwbarU lRfU lpxU lpixU lkU lRnustarU 
lHU lpiU lmcxU lpimcU lmcmcU lpimxU lmcmxU lpimiU 
lmcmiU lpicU lpmcU lpiiU lpmiU lkbarU liU lpsizplusU 
lcU lpkprimeU luU lpinvestU lsU aU lqU lxU 
lpcU  lRU lyU  lRxU lpmxU lRkU 
%dummy variables for investment cost function
StildeU SprimetildeU

lpitildedpiU lKdU lFdU lphaloU 
lpitildexpiU lKxU lFxU lphaloxU
lpitildemcpiU lKmcU lFmcU lphalomcU lcmU
lpitildemipiU lKmiU lFmiU lphalomiU limU
lpitildemxpiU lKmxU lFmxU lphalomxU lxmU

lpitildewpiU lKwU lFwU lwhaloU lsmallhU
%lwhalohaloU  

aofuU lpiwU

%variables for the unemployment part
%lintensityU lJzplusU lwU   
%lUzplusU lVxzplusU lvU  
%lG1U lG2U lG3U
%lOm1U lOm2U lOm3U lOm4U
%lvtilde0U lvtilde1U lvtilde2U lvtilde3U
%lVzplus0U lVzplus1U lVzplus2U lVzplus3U 
%ll0U ll1U ll2U ll3U lLU lmU lBigQU lpitildewU
%lchi0U lchi1U lchi2U lchi3U lfU lVwU JwU lUnemprateU

%variables for the fin fric part
%lomegabarU lnU lspreadU lbankruptcyrateU

%law of motions for exogenous processes 
lmuzplusU lepsilonU lmupsiU lpitargetU 
lUpsilonU lzetacU lRstarU phitildeU ltauyU lzetahU 
lystarU lpistarU lgU lmuzU 
ltaudU ltauxU ltaumcU ltaumiU ltaumxU

%unemp model exog processes
%lsigmamU letaU

%fin fric model exog processes
%lsigmaU lgammaU

%data  
data_pidU 
data_RU 
data_wdiffU 
data_cdiffU 
data_idiffU 
data_qdiffU 
data_HdiffU 
data_ydiffU 
data_xdiffU 
data_impdiffU 
data_picU 
data_piiU 
data_ystardiffU 
data_pistarU 
data_RstarU 
data_gdiffU
%data_ndiffU   % net worth  := real stock price 
%data_spreaddiffU
%data_unempdiffU 

lylessdU

nxdivGDPU
lSlevU
data_HhatU
GDP12q_diffU
GDP4q_diffU
pic4qU;


varexo 
mupsi_eps muz_eps epsilon_eps pitarget_eps
Upsilon_eps zetac_eps Rstar_eps phitilde_eps tauy_eps 
zetah_eps epsR_eps ystar_eps pistar_eps g_eps 
taud_eps taux_eps taumc_eps taumi_eps taumx_eps

%finfric model shocks
%sigma_eps gamma_eps

%unemp model shocks
%sigmam_eps  eta_eps

%measurement shocks
data_pidU_eps data_wdiffU_eps data_cdiffU_eps data_idiffU_eps data_qdiffU_eps data_HdiffU_eps 
data_ydiffU_eps data_xdiffU_eps data_impdiffU_eps data_picU_eps data_piiU_eps data_ystardiffU_eps 
data_pistarU_eps data_ndiffU_eps data_unempdiffU_eps data_spreaddiffU_eps data_gdiffU_eps
data_HhatU_eps;


parameters  
alphaa kappad betaa rhopi xid xix kappax ximc etaf
ximx kappamc kappamx kappami ximi omegac etac
omegai etai Spp muzplus mupsi delta b sigmab sigmaa
phitildea a phitildes rhoR rpi ry rq rdeltapi rdeltay etax omegax phi 
rhomupsi epsilon pibar Upsilon zetac tauc tauk R tauy tauw zetah
nustar nuf nux etag lambdad lambdax lambdamc lambdami lambdamx 

lambdaw 

wbar pic psizplus H q pimi mcmi mc pix mcmx mcx pimx muz ybar
u kappaw AL sigmaL Rk varphi ystar
mcmc px pimc pmc pmi kbar i c pc pkprime pinvest pmx pii pistar
Rstar

%further parameters
rhomuz  rhoepsilon rhoUpsilon rhozetac  
rhozetah rhog rhotauy rhophitilde phitilde 

sig_muz sig_epsilon sig_upsilon sig_zetac sig_zetah sig_phitilde
sig_epsR sig_pitarget sig_g sig_tauy 

s Stilde Sprimetilde 

xiw 

rkbar Rf Rnustar x Rx
varkappad varkappax varkappamx varkappami varkappamc varkappaw 
thetaw pibreve pitildedpi Kd Fd phalo pitildexpi Kx Fx phalox 
pitildemcpi Kmc Fmc phalomc cm pitildemipi Kmi Fmi phalomi im 
pitildemxpi Kmx Fmx phalomx xm

pitildewpi Kw Fw whalo  smallh 

%whalohalo

aofu 
 
taud taux taumc taumi taumx rhotaud rhotaux rhotaumc rhotaumi rhotaumx piw taub
pitarget etaa


a11 a12 a13 a21 a22 a23 a24 a31 a32 a33 a34
sig_ystar c21 sig_pistar c24 c31 c32 sig_Rstar c34

SppScaled muzPercent %mupsiPercent
intensity_target iy_target xy_target hours_target 

ylessd sigmaLScaled
work_cap_para;


%tex names for the tex option in the estimation
M_.param_names_tex=M_.param_names;
M_.endo_names_tex=M_.endo_names;
M_.exo_names_tex=M_.exo_names;
options_.TeX_varobs=['data_RU         '
                     'data_wdiffU     '
                     'data_cdiffU     '
                     'data_ydiffU     '
                     'data_ystardiffU '
                     'data_pistarU    '
                     'data_RstarU     '
                     'data_HdiffU     '
                     'data_impdiffU   '
                     'data_piiU       '
                     'data_pidU       '
                     'data_picU       '
                     'data_xdiffU     '
                     'data_qdiffU     '
                     'data_idiffU     '
                     'data_gdiffU     '];


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% **** begin of parameter setting ****%%%%%%%%%%%%%%%%%%%%/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% ******************************************************************
% Below SHOULD be estimated parameters, and these SHOULD be set to 
% their prior mean here.
% (param values only needed for the case that param is NOT estimated. 
% O/w redundant and overwritten in estimation
%  later.)
% ******************************************************************

% *** stickiness ****			
xid     =	0.75	;
xix     =	0.75	;
ximc	=	0.75	;
ximi	=	0.75	;
ximx	=	0.75	;

kappad	=	0.5	;
kappax	=	0.5	;
kappamc	=	0.5	;
kappami	=	0.5	;
kappamx	=	0.5	;

kappaw=0;   %weight on pibreve=1-kappaw
            % gb: estimated with prior value 0.5

work_cap_para=0.5;

% *** Domestic prefs and tech ***			
sigmaLScaled      =	0.2;  % 0.75	;
b           =	0.65;
SppScaled	=	0.5	;
sigmaa      =	0.2	;

% *** Taylor rule ***			
rhoR	=	0.85	;
rpi     =	1.7	;
rdeltapi=	0	;
rq      =	0	;
ry      =	0.125	;
rdeltay	=	0	;

% *** open econ. stuff	
etai	=	1.5	;
etaf	=	1.5	;
etac	=	1.5	;   % Calib at 1 b/c post mode =1 and numerical problems
etax	=	1.5	;
phitildes=	1.25	; 

% /*
% % *** new financial frictions parameters ***	
% mu              =	0.33;    % such that external finance premium roughly 1.6 percent annually (0.40 quarterly), as 1995Q1-2009q2
% 
% % *** new labor params
% recruitsharePercent	=	0.1; 
% bshare=0.75; %   %unemployment benefits, pecuniary + small number for value of leisure
% */ 

% *** Exog. AR1 processes ***	
rhomuz      =	0.5	;
rhomupsi	=	0.5	;
rhoepsilon	=	0.85	;
rhoUpsilon	=	0.85	;
rhozetac	=	0.85	;
rhophitilde	=	0.85	;
rhog        =	0.85	;
rhosigma	=	0.85	;
rhogamma	=	0.85	;
rhoeta      =	0.85	;
rhosigma_a  =   0.85    ;
   
% *** Foreign VAR ***	
a11	=	0.5	;
a22	=	0.0	;
a33	=	0.5	;

a12	=	0	;
a13	=	0	;
a21	=	0	;
a23	=	0	;
a24	=	0	;
a31	=	0	;
a32	=	0	;
a34	=	0	;

c21	=	0	;
c31	=	0	;
c32	=	0	;
c24	=	0	;
c34	=	0	;

% ***** not estimated, therefore calib here: ******
%%%%%

lambdaw=1.5; 
xiw=0.75;

% *** calib ***
alphaa=.4; %0.35; %  SE:0.2; to get same prior k/y=8, as the prior value in CTW
            % doesnot find ss with 0.35
            % Aleksejs has about k/y=1.5
            % alpha=0.35 gives about the same

betaa=0.97;  % SE: 0.99943
              % GB2013: if real annual interest rate is 3%, then set betaa = 1.03^(-1/4)
              % GB: LV real annual i-rate about 13%, so betaa~0.97 

muzplus=1.0137;      %LV: 1.0137 SE: 1.005 set to match growth rate of GDP as given in datafile

muzPercent=100*(muzplus-1);    % if  = 100*(muzplus-1), then mupsi=1 %
                               % if < 100*(muzplus-1), mupsi>1 (Swedish case)
                               % LV: no trend observed 

%Steady state inflation rates to be set
pibreve=1.005; % 1.005
pitarget=1.005; % 1.005
pistar=1.005;

etaa=0.0;   %Steady state net foreign asset position as a share of GDP
etag=0.19;	%LV:0.19  SE: 0.291 government expenditure share in GDP sample 1995Q1-2010q3

phitildea=0.01; 

lambdad     =	1.2	;
lambdamx	=	1.2	;
lambdamc	=	1.2	;
lambdami	=	1.2	;
lambdax     =	1.2 ;   %Note: ALLV lambdax=1 does not work here 
                        %due to non-linear pricing equations
 
% calibrated from IO-tables:
omegac=.55; %0.45;    %LV(Santa): 0.4-0.5 SE: 0.25 import share in consumption goods 
omegai=0.55;    %LV(Santa): 0.5 or more; SE: 0.43 import share in invertment goods 
omegax=0.4; %.57    %LV(Santa): 0.57; SE: .35 import share in export goods 

% taxes
tauc=0.18;   % LV: 0.18; SE: .35
tauw=0.33;  % LV: .33; SE: .35
tauy=0.30;   % LV: .3; SE: .3
tauk=0.1;   %LV: 0.1; SE: .25
taub=0.0;     % to get low bond interest rate

%working capital fractions
nuf=1; 
nustar=1; 
nux=1;

% wage indexation:
thetaw=1;   % SE: 1 weight on steady state z-plus growth
            % Adolfson et al: 0

% mean values of exogenous shock processes
epsilon=1;
Upsilon=1;
zetac=1;
zetah=1;

%Steady state values of shocks to marginal costs
taux=1; 
taumc=1; 
taumi=1; 
taumx=1; 
taud=1;

%Setting some steady state values as in ALLV
u=1;
Stilde=0;
Sprimetilde=0;

%Persistence of shocks to marginal costs ("markup shocks")
rhotaux=0; 
rhotaumc=0; 
rhotaumi=0; 
rhotaumx=0; 
rhotaud=0; 

% /*
% % Finfric params
% wesharePercent  =   0.1;   % we/ybar expressed in percent; 
%                            %transfers to entrepreneurs, %
% Fomegabar       =   0.01;  % Based on UC (Credit registry) data, sample avg 95-09q2 *** Using SCB data 0.0063 is sample avg 95-09q2.
%                            % ss bancruptcy rate 
% % Labor params
% BigN=4;             % number of agency cohorts/length of wage contracts
%                
% sigma_match=.5;     % unemployment share in matching technology
% L = 1-0.088;            % SE: 0.078 sample avg 1995Q1-2010q3
%                       %LV about 0.1 
% iota                =	1;  % employment adj costs dependence of tightness, V/U
%             
% sigma_a             =  .1564; % dummy-setting, gets real value in ss-file  %standard deviation of idiosyncratic productivity of workers in steady state
% BigFPercent         =  .25; % steady state endogenous separation rate, can't have any wage dispersion if BigF>0
%                                     
% rho=0.972; % old 0.9735     %  rho-BigF=0.9695 implies 1/f=3 quarters (if U=0.078)
%                             % exogenous survival rate of a match
% sigmam=0.57; % old 0.548   % such that quarterly Q is roughly 0.9 
%                  %(note: monthly Q roughly 0.6 (0.9=0.6+0.6*(1-0.6)+0.6*(1-0.6)^2 )in Swedish data)
% */

% shocks
sig_muz     =	0.15;
sig_mupsi	=	0;
% *** 0.15	; *** also set below;
sig_epsilon	=	0.5	;
sig_upsilon	=	0.5	;
sig_zetac	=	0.15; 
sig_phitilde=	0.15;
sig_epsR	=	0.15;
sig_g       =	0.5	;    
sig_taud	=	0.15;
sig_taux	=	0.15;
sig_taumc	=	0.15;
sig_taumi	=	0.15;
sig_taumx	=	0.15;
sig_gamma	=	0.5	;
sig_sigma	=	0;
% *** 0.5	; *** also set below

sig_ystar	=	0.5	;
sig_pistar	=	0.5	;
sig_Rstar	=	0.5	;   % different scaling

sig_zetah	=	0.15;

%Following shocks are deactivated
sig_eta     =	0	;
sig_sigma_a =   0   ;
sig_sigmam  =	0	;

sig_tauy	=	0	;
sig_pitarget=	0	;

%you better do not touch these:
phitilde=0;     %OBS! Keep to zero! Always! 
rhopi=0.975;    % unused 

% needed although unused
rhotauy     =	0.85	;   
rhozetah	=	0.85	;
rhosigmam	=	0.85	; 


%some steady state targets to be matched
hours_target=0.27;     %SE:0.25  = L*varsigma(hours per employee) AL to be set accordingly    
iy_target=0.2869;      %SE: 0.18 avg over sample;  delta to be set accordingly 
xy_target=0.6087;      %SE: 0.44 x/GDP avg 95-10q3. varphi to be set accordingly
% nk_target=0.5;      %SE: 0.5   gamma to be set accordingly
                        % LV might be ~0.14
                        % ECB convergence report 2013: driizaak ap 10% jo 2012.g. bija 3.8%
                        % EA videeji ir 47.4
                        % bet nek. iipashumu segums varetu stradat lidzigi ka akciju 
                        % cenas tadel samazini tikai pakapeniski
                        % nominaalais kapitaals no Alekseja: ratio butiski zem ECB vertejuma

delta=0.025;    % Only initial, b/c calculated in ss-file
varphi=0.2775;  % Only initial, b/c calculated in ss-file

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% **** end of parameter setting **** %%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/

intensity_target=hours_target;

%steady state get initval values
%baseline1_steadystate;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%**** begin of model *****%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
model;
%1 eq1 - mc: domestic homog. good marginal costs
exp(lmcU)=exp(ltaudU)*(1/(1-alphaa))^(1-alphaa)*
         (1/alphaa)^(alphaa)*(exp(lrkbarU))^(alphaa)*
         (exp(lwbarU)*exp(lRfU))^(1-alphaa)/exp(lepsilonU);

%2 eq2 - 2nd definition of mc
exp(lmcU)=exp(ltaudU)*exp(lmupsiU)^(alphaa)*(exp(lwbarU)*exp(lRfU))/
 (exp(lepsilonU)*(1-alphaa)*((exp(lkU)/exp(lmuzplusU)/exp(lHU)))^(alphaa));


%Non-linear pricing equations for domestic intermediate goods producer
%3 eq40a
exp(lFdU)-exp(lpsizplusU+lyU)-betaa*xid*exp(lpitildedpiU(+1)/(1-lambdad)+lFdU(+1));

%4 eq40b
exp(lKdU)-lambdad*exp(lpsizplusU+lyU+lmcU)-betaa*xid*exp(lpitildedpiU(+1)*lambdad/(1-lambdad)+lKdU(+1));

%5 eq40c
exp(lphaloU*lambdad/(1-lambdad))-(1-xid)*((1-xid*exp(lpitildedpiU/(1-lambdad)))/(1-xid))^lambdad
   -xid*(exp(lpitildedpiU+lphaloU(-1)))^(lambdad/(1-lambdad));

%6 eq40d
exp(lKdU-lFdU)=((1-xid*exp(lpitildedpiU/(1-lambdad)))/(1-xid))^(1-lambdad);

%7 eq40e
exp(lpitildedpiU)=exp(-lpiU+kappad*lpiU(-1)+(1-kappad-varkappad)*lpitargetU+varkappad*log(pibreve));


%Non-linear pricing equations for export goods producer
% 8 eq4a
exp(lFxU)-exp(lpsizplusU+lqU+lpcU+lpxU+lxU)-betaa*xix*exp(lpitildexpiU(+1)/(1-lambdax)+lFxU(+1));

%9 eq4b
exp(lKxU)-lambdax*exp(lpsizplusU+lqU+lpcU+lpxU+lxU+lmcxU)-betaa*xix*exp(lpitildexpiU(+1)*lambdax/(1-lambdax)+lKxU(+1));

%10 eq4c
exp(lphaloxU*lambdax/(1-lambdax))-(1-xix)*((1-xix*exp(lpitildexpiU/(1-lambdax)))/(1-xix))^lambdax
   -xix*(exp(lpitildexpiU+lphaloxU(-1)))^(lambdax/(1-lambdax));

%11 eq4d
exp(lKxU-lFxU)=((1-xix*exp(lpitildexpiU/(1-lambdax)))/(1-xix))^(1-lambdax);

%12 eq4e
exp(lpitildexpiU)=exp(-lpixU+kappax*lpixU(-1)+(1-kappax-varkappax)*log(pix)+varkappax*log(pibreve));


%Non-linear pricing equations for consumption importer
%13 eq5ac
exp(lFmcU)-exp(lpsizplusU+lpmcU+lcmU)-betaa*ximc*exp(lpitildemcpiU(+1)/(1-lambdamc)+lFmcU(+1));

%14 eq5bc
exp(lKmcU)-lambdamc*exp(lpsizplusU+lpmcU+lmcmcU+lcmU)-betaa*ximc*exp(lpitildemcpiU(+1)*lambdamc/(1-lambdamc)+lKmcU(+1));

%15 eq5cc
exp(lphalomcU*lambdamc/(1-lambdamc))-(1-ximc)*((1-ximc*exp(lpitildemcpiU/(1-lambdamc)))/(1-ximc))^lambdamc
   -ximc*(exp(lpitildemcpiU+lphalomcU(-1)))^(lambdamc/(1-lambdamc));

%16 eq5dc
exp(lKmcU-lFmcU)=((1-ximc*exp(lpitildemcpiU/(1-lambdamc)))/(1-ximc))^(1-lambdamc);

%17 eq5ec
exp(lpitildemcpiU)=exp(-lpimcU+kappamc*lpimcU(-1)+(1-kappamc-varkappamc)*lpitargetU+varkappamc*log(pibreve));


%Non-linear pricing equations for export inputs importer
%18 eq5ax
exp(lFmxU)-exp(lpsizplusU+lpmxU+lxmU)-betaa*ximx*exp(lpitildemxpiU(+1)/(1-lambdamx)+lFmxU(+1));

%19 eq5bx
exp(lKmxU)-lambdamx*exp(lpsizplusU+lpmxU+lmcmxU+lxmU)-betaa*ximx*exp(lpitildemxpiU(+1)*lambdamx/(1-lambdamx)+lKmxU(+1));

%20 eq5cx
exp(lphalomxU*lambdamx/(1-lambdamx))-(1-ximx)*((1-ximx*exp(lpitildemxpiU/(1-lambdamx)))/(1-ximx))^lambdamx
   -ximx*(exp(lpitildemxpiU+lphalomxU(-1)))^(lambdamx/(1-lambdamx));

%21 eq5dx
exp(lKmxU-lFmxU)=((1-ximx*exp(lpitildemxpiU/(1-lambdamx)))/(1-ximx))^(1-lambdamx);

%22 eq5ex
exp(lpitildemxpiU)=exp(-lpimxU+kappamx*lpimxU(-1)+(1-kappamx-varkappamx)*lpitargetU+varkappamx*log(pibreve));

%Non-linear pricing equations for investment importer
%23 eq5ai
exp(lFmiU)-exp(lpsizplusU+lpmiU+limU)-betaa*ximi*exp(lpitildemipiU(+1)/(1-lambdami)+lFmiU(+1));

%24 eq5bi
exp(lKmiU)-lambdami*exp(lpsizplusU+lpmiU+lmcmiU+limU)-betaa*ximi*exp(lpitildemipiU(+1)*lambdami/(1-lambdami)+lKmiU(+1));

%25 eq5ci
exp(lphalomiU*lambdami/(1-lambdami))-(1-ximi)*((1-ximi*exp(lpitildemipiU/(1-lambdami)))/(1-ximi))^lambdami
   -ximi*(exp(lpitildemipiU+lphalomiU(-1)))^(lambdami/(1-lambdami));

%26 eq5di
exp(lKmiU-lFmiU)=((1-ximi*exp(lpitildemipiU/(1-lambdami)))/(1-ximi))^(1-lambdami);

%27 eq5ei
exp(lpitildemipiU)=exp(-lpimiU+kappami*lpimiU(-1)+(1-kappami-varkappami)*lpitargetU+varkappami*log(pibreve));

%28 eq6 - Domestic consumption inflation
exp(lpicU)=exp(lpiU)*
((1-omegac+omegac*(exp(lpmcU))^(1-etac))/
(1-omegac+omegac*(exp(lpmcU(-1)))^(1-etac)))^(1/(1-etac));


%29 eq7 - Domestic investment inflation
exp(lpiiU)=exp(lpiU)/exp(lmupsiU)*
((1-omegai+omegai*(exp(lpmiU))^(1-etai))/
(1-omegai+omegai*(exp(lpmiU(-1)))^(1-etai)))^(1/(1-etai));

%30 eq8 - Law of motion for physical capital
exp(lkbarU)=(1-delta)/(exp(lmuzplusU)*exp(lmupsiU))*
    exp(lkbarU(-1))+exp(lUpsilonU)*(1-StildeU)*exp(liU);

%31 eq9 - Household consumption FOC
exp(lzetacU)/(exp(lcU)-b*exp(lcU(-1))/exp(lmuzplusU))-
betaa*b*(exp(lzetacU(+1))/
(exp(lcU(+1))*exp(lmuzplusU(+1))-b*exp(lcU)))
-exp(lpsizplusU)*exp(lpcU)*(1+tauc)=0;


%Commented out when finanical frictions part of the model
%32 eq10 - Household capital FOC
-exp(lpsizplusU)+betaa*exp(lpsizplusU(+1))/
(exp(lpiU(+1))*exp(lmuzplusU(+1)))*exp(lRkU(+1));


% **************************************%%%%%%%%%%%%%%%%%%%%%
% ***The financial frictions block******%%%%%%%%%%%%%%%%%%%%%
% **************************************%%%%%%%%%%%%%%%%%%%%%
%32 eq34 law of motion for net worth
%-exp(lnU)+exp(lgammaU-lpiU-lmuzplusU)* % old: log((exp(lmupsiU))^(alphaa/(1-alphaa))*exp(lmuzU))*
%(exp(lRkU+lpkprimeU(-1)+lkbarU(-1)) 
%-exp(lRU(-1))*(exp(lpkprimeU(-1)+lkbarU(-1))-exp(lnU(-1)))
%-mu*normcdf((lomegabarU +exp(lsigmaU(-1))^2/2)/exp(lsigmaU(-1)) -  exp(lsigmaU(-1)),0,1)   
%*exp(lRkU+lpkprimeU(-1)+lkbarU(-1))) + we;

%33 eq36 first order condition associated with contract
%(1-(normcdf((lomegabarU(+1)+exp(lsigmaU)^2/2)/exp(lsigmaU) - exp(lsigmaU),0,1)   
%+exp(lomegabarU(+1))*(1-normcdf((lomegabarU(+1)+exp(lsigmaU)^2/2)/exp(lsigmaU),0,1)) ))*
%( (exp(lRkU(+1)))/(exp(lRU)) )
%+( (1-( normcdf((lomegabarU(+1)+exp(lsigmaU)^2/2)/exp(lsigmaU),0,1) ))
% /(1-( normcdf((lomegabarU(+1)+exp(lsigmaU)^2/2)/exp(lsigmaU),0,1) )
%-mu*exp(lomegabarU(+1))*( exp(-0.5*(((lomegabarU(+1)+exp(lsigmaU)^2/2)/exp(lsigmaU))/1)^2)/(1*sqrt(2*3.141592653589793))/exp(lomegabarU(+1))/exp(lsigmaU) )) )
%*(( ((exp(lRkU(+1))))/(exp(lRU)) )*( (1-mu)*normcdf((lomegabarU(+1)+exp(lsigmaU)^2/2)/exp(lsigmaU) - exp(lsigmaU),0,1)
%+exp(lomegabarU(+1))*(1-normcdf((lomegabarU(+1)+exp(lsigmaU)^2/2)/exp(lsigmaU),0,1)) )-1); 

%34 eq35 zero profit condition
%(exp(lpkprimeU(-1)+lkbarU(-1)+lRkU)*( (1-mu)*normcdf((lomegabarU +exp(lsigmaU(-1))^2/2)/exp(lsigmaU(-1)) -  exp(lsigmaU(-1)),0,1)
%+exp(lomegabarU)*(1-normcdf((lomegabarU+exp(lsigmaU(-1))^2/2)/exp(lsigmaU(-1)),0,1)) )
% /(exp(lnU(-1)+lRU(-1))))-(exp(lpkprimeU(-1)+lkbarU(-1))/exp(lnU(-1)))+1; 
% ***********************************************%%%%%%%%%%%%%%%%%%
% *******end of financial frictions block *******%%%%%%%%%%%%%%%%%%
% ***********************************************%%%%%%%%%%%%%%%%%%

%35 eq11 - Household investment FOC
-exp(lpsizplusU)*exp(lpinvestU)+exp(lpsizplusU)*exp(lpkprimeU)*
exp(lUpsilonU)*(1-StildeU-SprimetildeU*exp(lmuzplusU)*
exp(lmupsiU)*exp(liU)/exp(liU(-1)))+betaa*exp(lpsizplusU(+1))*exp(lpkprimeU(+1))*
exp(lUpsilonU(+1))*SprimetildeU(+1)*(exp(liU(+1))/exp(liU))^2*exp(lmuzplusU(+1))*
exp(lmupsiU(+1))=0;

%36 eq12 - Household capital util. FOC
exp(lrkbarU)=exp(lpinvestU)*(sigmab*sigmaa*
   (exp(luU))+sigmab*(1-sigmaa));

%37 eq13 - Household foreign bonds FOC
%Note: net asset position variable <a> linearized and not log-lin. 
%since a=0 in steady state might be possible
-exp(lpsizplusU)+betaa*exp(lpsizplusU(+1))/(exp(lmuzplusU(+1))*exp(lpiU(+1)))
*(exp(lsU(+1))*exp(lRstarU)*
% *** old mistake: exp(-phitildea*(aU-a)-phitildes*(exp(lRstarU-lRU)-(Rstar-R))+phitildeU)
exp(-phitildea*(aU-a)-phitildes*(exp(lRstarU)-exp(lRU)-(Rstar-R))+phitildeU)
-taub*(exp(lsU(+1))*(exp(lRstarU))*
% *** old mistake: exp(-phitildea*(aU-a)-phitildes*(exp(lRstarU-lRU)-(Rstar-R))+phitildeU)
exp(-phitildea*(aU-a)-phitildes*(exp(lRstarU)-exp(lRU)-(Rstar-R))+phitildeU)
-exp(lpiU(+1))))=0;

%38 eq14 - Fisher equation 
-exp(lpsizplusU)+betaa*exp(lpsizplusU(+1))/exp(lmuzplusU(+1))
*(exp(lRU)-taub*(exp(lRU)-exp(lpiU(+1))))
/exp(lpiU(+1))=0;


 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% *********The labor market block**************%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%39 Jzplus - Stationary value of a job for the firm
%-exp(lJzplusU) +((exp(lwbarU)-exp(lwU)*exp(lwbarU))*exp(lintensityU)-(kappa/2)*(exp(lvtilde0U)^2))  % was wrong
%+betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*((exp(lwbarU(+1))-exp(lG1U(+1))*exp(lwU)*exp(lwbarU))*exp(lintensityU(+1))-(kappa/2)*(exp(lvtilde1U(+1))^2))*exp(lOm1U)
%+betaa^2*(exp(lpsizplusU(+2))/exp(lpsizplusU))*((exp(lwbarU(+2))-exp(lG2U(+2))*exp(lwU)*exp(lwbarU))*exp(lintensityU(+2))-(kappa/2)*(exp(lvtilde2U(+2))^2))*exp(lOm2U(+1))
%+betaa^3*(exp(lpsizplusU(+3))/exp(lpsizplusU))*((exp(lwbarU(+3))-exp(lG3U(+3))*exp(lwU)*exp(lwbarU))*exp(lintensityU(+3))-(kappa/2)*(exp(lvtilde3U(+3))^2))*exp(lOm3U(+2))
%+betaa^4*(exp(lpsizplusU(+4))/exp(lpsizplusU))*exp(lJzplusU(+4))*exp(lOm4U(+3));

%40-42 G updater: GjU(t)=G_t,j, dated in Dynare at time t+j, which is the date that the value of G_t,j is realized
%exp(lG1U)=exp(lpitildewU)/exp(lpiU)/(exp(lmuzplusU));
%exp(lG2U)=exp(lG1U(-1))*(exp(lpitildewU))/exp(lpiU)/(exp(lmuzplusU));
%exp(lG3U)=exp(lG2U(-1))*(exp(lpitildewU))/exp(lpiU)/(exp(lmuzplusU));

%43 Pitildew Inflation updater
%exp(lpitildewU)=(exp(lpicU(-1)))^(kappaw)*(exp(lpitargetU))^(1-kappaw);
%exp(lpitildewU)=exp(kappaw*lpicU(-1)+(1-kappaw-varkappaw)*lpitargetU+varkappaw*log(pibreve)+thetaw*log(muzplus)); 

%44 L-total employment
%exp(lLU)=exp(ll0U) + exp(ll1U) + exp(ll2U) + exp(ll3U);

%45-48 Omega updater
%exp(lOm1U)=exp(lchi0U)+rho;
%exp(lOm2U)=exp(lOm1U(-1))*(exp(lchi1U)+rho);
%exp(lOm3U)=exp(lOm2U(-1))*(exp(lchi2U)+rho);
%exp(lOm4U)=exp(lOm3U(-1))*(exp(lchi3U)+rho);

%49-52 Hiring rates
%exp(lchi0U)=exp(lBigQU)^(1-iota)*exp(lvtilde0U);
%exp(lchi1U)=exp(lBigQU)^(1-iota)*exp(lvtilde1U);
%exp(lchi2U)=exp(lBigQU)^(1-iota)*exp(lvtilde2U);
%exp(lchi3U)=exp(lBigQU)^(1-iota)*exp(lvtilde3U);

%53-56 F.O.C. of J wrt vtilde for different cohorts at a fixed date
%cohort 0
%kappa*exp(lvtilde0U)/(exp(lBigQU))^(1-iota)-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*((exp(lwbarU(+1))-exp(lG1U(+1))*exp(lwU)*exp(lwbarU))*exp(lintensityU(+1))
%+(kappa/2)*(exp(lvtilde1U(+1))^2)+rho*kappa*exp(lvtilde1U(+1))/(exp(lBigQU(+1)))^(1-iota));

%cohort 1
%kappa*exp(lvtilde1U)/(exp(lBigQU))^(1-iota)-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*((exp(lwbarU(+1))-exp(lG2U(+1))*exp(lwU(-1))*exp(lwbarU(-1)))*exp(lintensityU(+1))
%+(kappa/2)*(exp(lvtilde2U(+1))^2)+rho*kappa*exp(lvtilde2U(+1))/(exp(lBigQU(+1)))^(1-iota));

%cohort 2 (up to BigN-2)
%kappa*exp(lvtilde2U)/(exp(lBigQU))^(1-iota)-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*((exp(lwbarU(+1))-exp(lG3U(+1))*exp(lwU(-2))*exp(lwbarU(-2)))*exp(lintensityU(+1))
%+(kappa/2)*(exp(lvtilde3U(+1))^2)+rho*kappa*exp(lvtilde3U(+1))/(exp(lBigQU(+1)))^(1-iota));

%same F.O.C. (with slight difference , for the BigN-1 cohort)
%kappa*exp(lvtilde3U)/(exp(lBigQU))^(1-iota)-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*((exp(lwbarU(+1))-exp(lwU(+1))*exp(lwbarU(+1)))*exp(lintensityU(+1))
%+(kappa/2)*(exp(lvtilde0U(+1))^2)+rho*kappa*exp(lvtilde0U(+1))/(exp(lBigQU(+1)))^(1-iota));


%57-60 Vzplus for cohorts - value of a job for a worker
%exp(lVzplus0U)-exp(lwU)*exp(lwbarU)*((1-exp(ltauyU))/(1+tauw))*exp(lintensityU)+exp(lzetahU)*AL*exp(lintensityU)^(1+sigmaL)/((1+sigmaL)*exp(lpsizplusU))-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*(rho*exp(lVzplus1U(+1))+(1-rho)*exp(lUzplusU(+1)));
%exp(lVzplus1U)-exp(lG1U)*exp(lwU(-1))*exp(lwbarU(-1))*((1-exp(ltauyU))/(1+tauw))*exp(lintensityU) +exp(lzetahU)*AL*exp(lintensityU)^(1+sigmaL)/((1+sigmaL)*exp(lpsizplusU))-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*(rho*exp(lVzplus2U(+1))+(1-rho)*exp(lUzplusU(+1)));
%exp(lVzplus2U)-exp(lG2U)*exp(lwU(-2))*exp(lwbarU(-2))*((1-exp(ltauyU))/(1+tauw))*exp(lintensityU) +exp(lzetahU)*AL*exp(lintensityU)^(1+sigmaL)/((1+sigmaL)*exp(lpsizplusU))-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*(rho*exp(lVzplus3U(+1))+(1-rho)*exp(lUzplusU(+1)));
%exp(lVzplus3U)-exp(lG3U)*exp(lwU(-3))*exp(lwbarU(-3))*((1-exp(ltauyU))/(1+tauw))*exp(lintensityU) +exp(lzetahU)*AL*exp(lintensityU)^(1+sigmaL)/((1+sigmaL)*exp(lpsizplusU))-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*(rho*exp(lVzplus0U(+1))+(1-rho)*exp(lUzplusU(+1)));

%61 Uzplus : value of being unemployed for the worker      
%exp(lUzplusU)-bu*(1-exp(ltauyU))
%-betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU))*(exp(lfU)*exp(lVxzplusU(+1))+(1-exp(lfU))*exp(lUzplusU(+1)));

%62 job finding rate f
%exp(lfU)-exp(lmU)/(1-exp(lLU));

%63 Vxzplus : average value of finding a job 
%exp(lVxzplusU)-1/exp(lmU(-1))*(
%exp(lchi0U(-1))*exp(ll0U(-1))*exp(lVzplus1U)
%+exp(lchi1U(-1))*exp(ll1U(-1))*exp(lVzplus2U)
%+exp(lchi2U(-1))*exp(ll2U(-1))*exp(lVzplus3U)
%+exp(lchi3U(-1))*exp(ll3U(-1))*exp(lVzplus0U)
%);

%64 BigQ Probability of filling a vacancy
%exp(lBigQU)=exp(lmU)/exp(lvU);

%65 M total new matches      
%exp(lmU)= exp(lchi0U)*exp(ll0U)+exp(lchi1U)*exp(ll1U)
%+exp(lchi2U)*exp(ll2U) +exp(lchi3U)*exp(ll3U);

%66 Matching function
%exp(lmU)=(exp(lsigmamU)*((1-exp(lLU))^sigma_match)*(exp(lvU)^(1-sigma_match)));

%67 Aggregate leisure/intensity decision
%((1-exp(ltauyU))/(1+tauw))*exp(lwbarU)=exp(lzetahU)*AL*(exp(lintensityU)^sigmaL)/exp(lpsizplusU);

%68-71 L.O.M. for employees in each cohort 
%exp(ll0U)-(exp(lchi3U(-1))+rho)*exp(ll3U(-1));
%exp(ll1U)-(exp(lchi0U(-1))+rho)*exp(ll0U(-1));
%exp(ll2U)-(exp(lchi1U(-1))+rho)*exp(ll1U(-1));
%exp(ll3U)-(exp(lchi2U(-1))+rho)*exp(ll2U(-1));

%72 marginal value of a job for the worker wrt. wage
%exp(lVwU)=((exp(lintensityU)*((1-exp(ltauyU))/(1+tauw))
%     +(rho*betaa)*(exp(lpsizplusU(+1))/exp(lpsizplusU)*exp(lG1U(+1))*exp(lintensityU(+1))*((1-exp(ltauyU(+1)))/(1+tauw)))
%     +(rho*betaa)^2*(exp(lpsizplusU(+2))/exp(lpsizplusU)*exp(lG2U(+2))*exp(lintensityU(+2))*((1-exp(ltauyU(+2)))/(1+tauw)))
 %    +(rho*betaa)^3*(exp(lpsizplusU(+3))/exp(lpsizplusU)*exp(lG3U(+3))*exp(lintensityU(+3))*((1-exp(ltauyU(+3)))/(1+tauw)))));

%73 Nash bargaining foc      
%exp(letaU)*exp(lVwU)*exp(lJzplusU)+(1-exp(letaU))*(exp(lVzplus0U)-exp(lUzplusU))*JwU;


%74 Jw marginal value of job match for a firm for a change in the wage 
%JwU=((-1)*(exp(lintensityU)
 %    +betaa*(exp(lpsizplusU(+1))/exp(lpsizplusU)*exp(lG1U(+1))*exp(lOm1U)*exp(lintensityU(+1)))
 %    +betaa^2*(exp(lpsizplusU(+2))/exp(lpsizplusU)*exp(lG2U(+2))*exp(lOm2U(+1))*exp(lintensityU(+2))) 
%     +betaa^3*(exp(lpsizplusU(+3))/exp(lpsizplusU)*exp(lG3U(+3))*exp(lOm3U(+2))*exp(lintensityU(+3)))));

%75 Total hours
%exp(lHU)=exp(lintensityU)*exp(lLU);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% *** end of labor block *************%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
%START OLD CALVO STICKY WAGE EQUATIONS NOT APPLICABLE UNDER UNEMPLOYMENT%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
%Non-linear pricing equations for wage setting
%39 eq15a
exp(lFwU)-1/lambdaw*exp(lpsizplusU-lwhaloU*lambdaw/(1-lambdaw)+lsmallhU)*((1-exp(ltauyU))/(1+tauw))
  - betaa*xiw*exp(lwbarU(+1)-lwbarU+(1/(1-lambdaw))*lpitildewpiU(+1)+lFwU(+1));
%40 eq15b
exp(lKwU)-exp(lzetahU+(-lwhaloU*lambdaw/(1-lambdaw)+lsmallhU)*(1+sigmaL))-betaa*xiw*exp(lpitildewpiU(+1)*lambdaw*(1+sigmaL)/(1-lambdaw)+lKwU(+1));
%41 eq15c
exp(lKwU-lFwU)=exp(lwbarU)*(((1-xiw*exp(lpitildewpiU/(1-lambdaw)))/(1-xiw))^(1-lambdaw*(1+sigmaL)))/AL;
%42 eq15d
exp(lwhaloU*lambdaw/(1-lambdaw))-(1-xiw)*((1-xiw*exp(lpitildewpiU/(1-lambdaw)))/(1-xiw))^lambdaw
   -xiw*(exp(lpitildewpiU+lwhaloU(-1)))^(lambdaw/(1-lambdaw));
%43 eq15e
exp(lpitildewpiU)=exp(-lpiwU+kappaw*lpicU(-1)+(1-kappaw-varkappaw)*lpitargetU+varkappaw*log(pibreve)+thetaw*log(muzplus));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
%END OLD CALVO STICKY WAGE EQUATIONS NOT APPLICABLE UNDER UNEMPLOYMENT%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/


%76 eq16 - Taylor Rule
% comment this if you want to calculate Ramsey optimal policy
%lRU-log(R)=rhoR*(lRU(-1)-log(R))+(1-rhoR)*(lpitargetU-log(pitarget)+
%rpi*(lpicU(-1)-lpitargetU)+
%ry*(lyU(-1)-log(ybar))+rq*(lqU(-1)-log(q)))
%+rdeltapi*(lpicU-lpicU(-1))+rdeltay*(lyU-lyU(-1))+epsR_eps/100;

% ** Below Taylor as in closed ec paper: leading inflation, current output**
% *** BUT contemp inflation instead of leading
lRU-log(R)=rhoR*(lRU(-1)-log(R))+(1-rhoR)*(lpitargetU-log(pitarget)+
  rpi*(lpicU -lpitargetU)+
  ry*(lylessdU-log(ylessd)) ) + epsR_eps/10; % gb: originally epsR_eps/100
%+rq*(lqU-log(q)))    
%  +rdeltapi*(lpicU-lpicU(-1))+rdeltay*(lylessdU-lylessdU(-1));

%77 eq17 - Adjusted Resource Constraint
exp(lyU)=exp(lgU)+(1-omegac)*(exp(lpcU))^(etac)*exp(lcU)+(1-omegai)*(exp(lpinvestU))^(etai)*
(exp(liU)+aofuU*exp(lkbarU(-1))/(exp(lmupsiU)*exp(lmuzplusU))) % *** old mistake (without utilization), current line was just: exp(liU) 
+(omegax*exp(lpmxU)^(1-etax)+1-omegax)^(etax/(1-etax))*     %old factor eliminated: exp(lRxU)^(etax)
(1-omegax)*exp(lphaloxU*lambdax/(1-lambdax))*exp(lpxU)^(-etaf)*exp(lystarU);

%+((kappa/2)*(exp(lvtilde0U)^2*exp(ll0U)+exp(lvtilde1U)^2*exp(ll1U)+exp(lvtilde2U)^2*exp(ll2U) 
%+ exp(lvtilde3U)^2*exp(ll3U)));
%+mu*normcdf((lomegabarU +exp(lsigmaU(-1))^2/2)/exp(lsigmaU(-1)) -  exp(lsigmaU(-1)),0,1)
%*exp(lRkU+lpkprimeU(-1)+lkbarU(-1)-lpiU-lmuzplusU);

%78 eq38 - Current Account
aU+exp(lqU+lpcU+lRnustarU)*( exp(lcmU+(lambdamc/(1-lambdamc))*lphalomcU) 
  +exp(limU+(lambdami/(1-lambdami))*lphalomiU) 
  +exp(lxmU+(lambdamx/(1-lambdamx))*lphalomxU) )
  -exp(lqU+lpcU+lpxU+lxU)-exp(lRstarU(-1)-phitildea*(aU(-1)-a)
  -phitildes*(exp(lRstarU(-1))-exp(lRU(-1))-(Rstar-R))
  +phitildeU(-1))*exp(lsU-lpiU-lmuzplusU)*aU(-1); 

%79 eq19 - marginal costs of final export goods
exp(lmcxU)=exp(ltauxU)*exp(lRxU)/(exp(lqU)*exp(lpcU)*exp(lpxU))*
(omegax*exp(lpmxU)^(1-etax)+1-omegax)^(1/(1-etax));

%80 eq20a - marginal costs of consumption importers
exp(lmcmcU)=exp(ltaumcU)*exp(lqU)*exp(lpcU)*exp(lRnustarU)/exp(lpmcU);

%81 eq20b - marginal costs of investment importers
exp(lmcmiU)=exp(ltaumiU)*exp(lqU)*exp(lpcU)*exp(lRnustarU)/exp(lpmiU);

%82 eq20c - marginal costs of export importers
exp(lmcmxU)=exp(ltaumxU)*exp(lqU)*exp(lpcU)*exp(lRnustarU)/exp(lpmxU);

%83 eq21 - Real GDP, defined from the production side
exp(lyU)=exp(lphaloU)^(lambdad/(lambdad-1))*
        %((exp(lsmallhU-(lambdaw/(1-lambdaw))*lwhaloU))^(1-alphaa)*exp(lepsilonU)*
        ((exp(lHU))^(1-alphaa)*exp(lepsilonU)*
        (exp(lkU)/(exp(lmuzplusU)*exp(lmupsiU)))^(alphaa)-phi);

%84 eq41 Capacity utilization
aofuU = 0.5*sigmab*sigmaa*(exp(luU))^2+sigmab*(1-sigmaa)*exp(luU)
        +sigmab*((sigmaa/2)-1);

%85 eq22 - Definition of Rf
exp(lRfU)=nuf*(exp(lRU))+1-nuf;

%86 eq23 - Definition of Rnustar
exp(lRnustarU)=nustar*(exp(lRstarU))+1-nustar;

%87 eq24 - Total foreign export demand
exp(lxU)=(exp(lpxU))^(-etaf)*exp(lystarU);

%88 eq25 - Relative price of final consumption good
exp(lpcU)=(1-omegac+omegac*(exp(lpmcU))^(1-etac))^(1/(1-etac));

%89 eq26 - Relative price of final investment good
exp(lpinvestU)=(1-omegai+omegai*(exp(lpmiU))^(1-etai))^(1/(1-etai));

%90 eq27 - Definition of Rx
exp(lRxU)=nux*(exp(lRU))+1-nux;

%91 eq28 - Definition of capital utilitzation
exp(lkU)=exp(lkbarU(-1)+luU);

%92 eq29 - Dynamics of pmx
exp(lpmxU)/exp(lpmxU(-1))=exp(lpimxU)/exp(lpiU);

%93 eq30 - Dynamics of pmc
exp(lpmcU)/exp(lpmcU(-1))=exp(lpimcU)/exp(lpiU);

%94 eq31 - Dynamics of pmi
exp(lpmiU)/exp(lpmiU(-1))=exp(lpimiU)/exp(lpiU);

%95 eq32 - Dynamics of px
exp(lpxU)/exp(lpxU(-1))=exp(lpixU)/exp(lpistarU);

%96 eq33 - Dynamics of the real exchange rate
exp(lqU)/exp(lqU(-1))=exp(lsU)*exp(lpistarU)/exp(lpicU);

%97 eq42 Dummy variable for Investment cost function
StildeU=0.5*(exp(sqrt(Spp)*(exp(liU)/exp(liU(-1))*exp(lmuzplusU)*exp(lmupsiU)-muzplus*mupsi))+
exp(-sqrt(Spp)*(exp(liU)/exp(liU(-1))*exp(lmuzplusU)*exp(lmupsiU)-muzplus*mupsi))-2);

%98 eq42b Dummy variable for Investment cost function derivative
SprimetildeU=0.5*sqrt(Spp)*(exp(sqrt(Spp)*(exp(liU)/exp(liU(-1))*exp(lmuzplusU)*exp(lmupsiU)-muzplus*mupsi))
-exp(-sqrt(Spp)*(exp(liU)/exp(liU(-1))*exp(lmuzplusU)*exp(lmupsiU)-muzplus*mupsi)));

%99 eq44 definition of rate of return on capital
exp(lRkU)=((1-tauk)*(exp(luU)*exp(lpinvestU)*(sigmab*sigmaa*(exp(luU))
 +sigmab*(1-sigmaa))
 -exp(lpinvestU)*aofuU) +(1-delta)*exp(lpkprimeU) 
 +delta*tauk*exp(lmupsiU-lpiU+lpkprimeU(-1)))
  /(exp(lpkprimeU(-1)+lmupsiU-lpiU));

%100 eq 45 Relation between smallh and  H 
exp(lsmallhU)=exp(lwhaloU)^(lambdaw/(1-lambdaw))*exp(lHU);

%101 eq 46 Imported consumption
exp(lcmU)=exp(lcU)*omegac*(exp(lpcU)/exp(lpmcU))^etac;

%102 eq 47 Imported investment
exp(limU)=omegai*(exp(lpinvestU)/exp(lpmiU))^etai
*(exp(liU)+aofuU*exp(lkbarU(-1))/(exp(lmupsiU)*exp(lmuzplusU)));

%103 eq49 Imported export inputs
exp(lxmU)-omegax*(((omegax*exp(lpmxU*(1-etax))
  +1-omegax)^(1/(1-etax))*exp(-lpmxU))^etax)*
  exp(-(lambdax/(lambdax-1))*lphaloxU-etaf*lpxU+lystarU);

%104 eq15f
lpiwU=lwbarU+lmuzplusU+lpiU-lwbarU(-1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
% equations for the law of motions of exogenous processes %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/

%105 Composite technology growth
exp(lmuzplusU)=(exp(lmupsiU))^(alphaa/(1-alphaa))*exp(lmuzU);

%106-127 
ltaudU -log(taud) = rhotaud*(ltaudU(-1)-log(taud)) + taud_eps; %gb: originally taud_eps/10
ltauxU -log(taux) = rhotaux*(ltauxU(-1)-log(taux)) + taux_eps; % gb: originally taux_eps/10
ltaumcU -log(taumc) = rhotaumc*(ltaumcU(-1)-log(taumc)) + taumc_eps; % gb: originally taumc_eps/10
ltaumiU -log(taumi) = rhotaumi*(ltaumiU(-1)-log(taumi)) + taumi_eps; %gb: originally taumi_eps/10
ltaumxU -log(taumx) = rhotaumx*(ltaumxU(-1)-log(taumx)) + taumx_eps; % gb: originally taumx_eps/10

% *** All below shocks enter by some factor in order to obtain same order of 
% *** magnitude for the optimization

lepsilonU =(1-rhoepsilon)*log(epsilon)+rhoepsilon*lepsilonU(-1)+epsilon_eps/100; 
lUpsilonU =(1-rhoUpsilon)*log(Upsilon)+rhoUpsilon*lUpsilonU(-1)+Upsilon_eps; % gb: originally Upsilon_eps/10  
 
lzetacU =(1-rhozetac)*log(zetac)+rhozetac*lzetacU(-1)+zetac_eps; % gb: originally zetac_eps/10;  
lzetahU =(1-rhozetah)*log(zetah)+rhozetah*lzetahU(-1)+zetah_eps; %gb: originally zetah_eps/10   

   
%Foreign VAR
lystarU-log(ystar)=a11*(lystarU(-1)-log(ystar))+a12*(exp(lpistarU(-1))-pistar)+a13*(exp(lRstarU(-1))-Rstar)+ystar_eps/100;

exp(lpistarU)-pistar=a21*(lystarU(-1)-log(ystar))+a22*(exp(lpistarU(-1))-pistar)+a23*(exp(lRstarU(-1))-Rstar)
                     +a24*(lmuzU(-1)-log(muz))+a24*alphaa/(1-alphaa)*(lmupsiU(-1)-log(mupsi))
                     +c21*ystar_eps/100+pistar_eps/100+c24*muz_eps/100+c24*alphaa/(1-alphaa)*mupsi_eps/100;

exp(lRstarU)-Rstar=a31*(lystarU(-1)-log(ystar))+a32*(exp(lpistarU(-1))-pistar)+a33*(exp(lRstarU(-1))-Rstar)
                     +a34*(lmuzU(-1)-log(muz))+a34*alphaa/(1-alphaa)*(lmupsiU(-1)-log(mupsi))
                     +c31*ystar_eps/100+c32*pistar_eps/100+Rstar_eps/1000+c34*muz_eps/100+c34*alphaa/(1-alphaa)*mupsi_eps/100;

%Unit root technology shocks
lmupsiU=(1-rhomupsi)*log(mupsi)+rhomupsi*lmupsiU(-1)+mupsi_eps/100;
lmuzU=(1-rhomuz)*log(muz)+rhomuz*lmuzU(-1)+muz_eps/100;

%Fiscal shocks
ltauyU =(1-rhotauy)*log(tauy)+rhotauy*ltauyU(-1)+tauy_eps/100; 
lgU =(1-rhog)*log(etag*ybar)+rhog*lgU(-1)+g_eps/10; % gb: originally g_eps/100

%Obs: zero mean
phitildeU =(1-rhophitilde)*phitilde+rhophitilde*phitildeU(-1)+phitilde_eps/100; 
  
% inflation target shock
lpitargetU =(1-rhopi)*log(pitarget)+rhopi*lpitargetU(-1)+pitarget_eps/1000; 


%Measurement equations 128-142
%linking data and model variables
% all vars are in per capita terms

data_pidU-data_pidU_eps=400*log(exp(lpiU)); % domestic inflation (gdp deflator) qoq annualized %
data_piiU-data_piiU_eps=400*log(exp(lpiiU)); % investment goods inflation qoq annualized %
data_picU-data_picU_eps=400*log(exp(lpicU)); % consumption goods inflation (cpi) qoq annualized %
data_RU=400*(exp(lRU)-1); % nominal interest rate annualized %

data_ystardiffU-data_ystardiffU_eps+100*log(muzplus)=100*(lmuzplusU+(lystarU - lystarU(-1))); % foreign output qoq growth %
data_pistarU-data_pistarU_eps=400*log(exp(lpistarU)); % foreign inflation qoq annualized %
data_RstarU=400*(exp(lRstarU)-1); % foreign nominal interest rate annualized %
data_HdiffU-data_HdiffU_eps=100*(lsmallhU-lsmallhU(-1)); % hours worked qoq %

data_HhatU-data_HhatU_eps=100*(exp(lsmallhU)-smallh)/smallh; % *** added KW %  hours worked in terms of deviation from ss, %

data_qdiffU-data_qdiffU_eps=100*(lqU-lqU(-1)); % real exchange rate qoq % (?)
data_cdiffU-data_cdiffU_eps+100*log(muzplus)=100*(lmuzplusU+(lcU - lcU(-1))); % demeaned domestic consumption qoq %

%  exclude utilization costs, recruitment costs and monitoring costs from GDP,
% done by using lylessdU instead of lyU in GDP measurement eq.
data_ydiffU-data_ydiffU_eps+100*log(muzplus)=100*(lmuzplusU+log(exp(lylessdU) ) -
                                                            log(exp(lylessdU(-1)) ) ); % demeaned domestic output qoq %
% *** version w/o cap. util in meas. eq.
data_idiffU-data_idiffU_eps+100*(log(muzplus)+log(mupsi))=100*(lmuzplusU+lmupsiU+ liU - liU(-1)); % demeaned domestic investment qoq %

data_wdiffU-data_wdiffU_eps+100*log(muzplus)=100*(lmuzplusU+(lwbarU-lwbarU(-1))); % demeaned real wage qoq %

data_xdiffU-data_xdiffU_eps+100*log(muzplus)=100*(lmuzplusU+(lxU - lxU(-1))); % demeaned exports qoq %
data_impdiffU-data_impdiffU_eps+100*log(muzplus)=100*(lmuzplusU 
             +log(exp(lcmU+(lambdamc/(1-lambdamc))*lphalomcU) 
             +exp(limU+(lambdami/(1-lambdami))*lphalomiU)
             +exp(lxmU+(lambdamx/(1-lambdamx))*lphalomxU)) 
             - log(exp(lcmU(-1)+(lambdamc/(1-lambdamc))*lphalomcU(-1))
             + exp(limU(-1)+(lambdami/(1-lambdami))*lphalomiU(-1)) 
             +exp(lxmU(-1)+(lambdamx/(1-lambdamx))*lphalomxU(-1))));   % demeaned imports qoq %
 
data_gdiffU-data_gdiffU_eps+100*log(muzplus)=100*(lmuzplusU+(lgU - lgU(-1))); % demeaned gov consumption qoq %

% GDP w/o utilization costs (, monitoring costs or recruitment costs:)
exp(lylessdU)=exp(lyU)
-exp(lpinvestU)*aofuU*exp(lkbarU(-1))/(exp(lmupsiU)*exp(lmuzplusU));


% net exports/Y: (value of exports - value of imports)/Y
nxdivGDPU= ( exp(lqU+lpcU+lpxU+lxU) - ( exp(lqU+lpcU+lRnustarU)*( exp(lcmU+(lambdamc/(1-lambdamc))*lphalomcU) 
  +exp(limU+(lambdami/(1-lambdami))*lphalomiU) 
  +exp(lxmU+(lambdamx/(1-lambdamx))*lphalomxU) ) ) ) / exp(lyU);

% The nominal x-rate in levels
exp(lSlevU)/exp(lSlevU(-1))=exp(lsU); %gb2013 gives trouble

% Cumulated GDP-growth, up to 12 Q
GDP12q_diffU=12*100*log(muzplus)+data_ydiffU+data_ydiffU(-1)+data_ydiffU(-2)+data_ydiffU(-3)+data_ydiffU(-4)+data_ydiffU(-5)+data_ydiffU(-6)
            +data_ydiffU(-7)+data_ydiffU(-8)+data_ydiffU(-9)+data_ydiffU(-10)+data_ydiffU(-11);
GDP4q_diffU =4*100*log(muzplus)+data_ydiffU+data_ydiffU(-1)+data_ydiffU(-2)+data_ydiffU(-3);
pic4qU      =(data_picU+data_picU(-1)+data_picU(-2)+data_picU(-3))/4;

end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%**** end of model *****%%%%%%%%%%%%%%%%%%%%%%/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


initval;
lmcU=log(mc); 
lrkbarU=log(rkbar); 
lwbarU=log(wbar);
lRfU=log(Rf);
lpxU=log(px);
lpixU=log(pix);
lkU=log(kbar);
lRnustarU=log(Rnustar); 
lHU=log(H); 
lpiU=log(pibar); 
lmcxU=log(mcx);
lpimcU=log(pimc);
lmcmcU=log(mcmc);
lpimxU=log(pimx);
lmcmxU=log(mcmx);
lpimiU=log(pimi); 
lmcmiU=log(mcmi); 
lpicU=log(pic); 
lpmcU=log(pmc); 
lpiiU=log(pii);
lpmiU=log(pmi);
lkbarU=log(kbar);
liU=log(i);
lpsizplusU=log(psizplus); 
lcU=log(c); 
lpkprimeU=log(pkprime);
luU=log(1);
lpinvestU=log(pinvest);
lsU=log(s); 
aU=a; 
lqU=log(q);
lxU=log(x); 
lpcU=log(pc);
lRU=log(R); 
lyU=log(ybar);  
lRxU=log(Rx); 
lpmxU=log(pmx);
lRkU=log(Rk);
StildeU=0; 
SprimetildeU=0;
lmuzplusU=log(muzplus); 
lepsilonU =log(epsilon);  
lmupsiU =log(mupsi);  
lpitargetU =log(pibar);  
lUpsilonU =log(Upsilon);  
lzetacU =log(zetac);    
lRstarU =log(R);  
phitildeU =0;  
ltauyU =log(tauy);    
lzetahU =log(zetah);  
lystarU =log(ystar);   
lpistarU =log(pibar);  
lgU =log(etag*ybar); 
lmuzU=log(muz);


% Finfric variables:
%lgammaU=log(gamma);
%lsigmaU=log(sigma);
%lnU=log(n);
%lomegabarU=log(omegabar);

data_pidU=400*log(pibar);
data_RU=400*log(R);
data_wdiffU=0;
data_cdiffU=0;
data_idiffU=0;
data_qdiffU=0;    
data_HdiffU=0;
data_ydiffU=0;
data_xdiffU=0;
data_impdiffU=0;
data_picU=400*log(pic);
data_piiU=400*log(pii);
data_ystardiffU=0;
data_pistarU=400*log(pistar);
data_RstarU=400*log(Rstar);

data_gdiffU=0;

lylessdU=log(ylessd);

lpitildedpiU=log(pitildedpi);
lKdU=log(Kd);
lFdU=log(Fd);
lphaloU=log(phalo); 
lpitildexpiU=log(pitildexpi);
lKxU=log(Kx);
lFxU=log(Fx);
lphaloxU=log(phalox);
lpitildemcpiU=log(pitildemcpi);
lKmcU=log(Kmc);
lFmcU=log(Fmc);
lphalomcU=log(phalomc);
lcmU=log(cm);
lpitildemipiU=log(pitildemipi);
lKmiU=log(Kmi);
lFmiU=log(Fmi);
lphalomiU=log(phalomi);
limU=log(im);
lpitildemxpiU=log(pitildemxpi);
lKmxU=log(Kmx);
lFmxU=log(Fmx);
lphalomxU=log(phalomx);
lxmU=log(xm);

lpitildewpiU=log(pitildewpi);
lKwU=log(Kw);
lFwU=log(Fw);
lwhaloU=log(whalo);
%lwhalohaloU=log(whalohalo);
lsmallhU=log(smallh);

aofuU=aofu;


ltaudU=log(taud);
ltauxU=log(taux);
ltaumcU=log(taumc);
ltaumiU=log(taumi);
ltaumxU=log(taumx);
lpiwU=log(piw);

end;

resid(1);

steady;

check; 

shocks;
var muz_eps=(sig_muz)^2;
var mupsi_eps = 0.001^2;
var epsilon_eps =(sig_epsilon)^2;
var Upsilon_eps =(sig_upsilon)^2;
var zetac_eps =(sig_zetac)^2;
var zetah_eps =(sig_zetah)^2;
var phitilde_eps =(sig_phitilde)^2;
var pitarget_eps=(sig_pitarget)^2;  %Should be set to zero above
var epsR_eps =(sig_epsR)^2;
var tauy_eps =(sig_tauy)^2;         %Should be set to zero above
var g_eps=(sig_g)^2;
var ystar_eps=(sig_ystar)^2;
var pistar_eps=(sig_pistar)^2;
var Rstar_eps=(sig_Rstar)^2;

%fin fric innovations  
%var gamma_eps=0;  
%var sigma_eps=0; 

%unemployment innovations
%var sigmam_eps=0;
%var eta_eps=0;
 
% Markup variances:  
var taud_eps = 0.001^2; 
var taux_eps = 0.001^2;
var taumc_eps =0.001^2;
var taumi_eps =0.001^2;
var taumx_eps =0.001^2;

% measurement errors. Updated 10q3

% 10 percent of variance of time series
var data_ydiffU_eps= 	0.5354; %0.106;
var data_pidU_eps= 	12.5813; %0.374;     % released by GB2013
var data_wdiffU_eps= 	 0.5534; %0.071;
var data_cdiffU_eps= 	0.9611; % 0.061;
var data_idiffU_eps= 	11.5581; % 0.639;
var data_qdiffU_eps= 	0.5753; % 0.706;
var data_HdiffU_eps= 	0.4819; % 0.035;
var data_xdiffU_eps= 	1.0904; % 0.620;
var data_impdiffU_eps= 	4.1190; % 0.731;
var data_picU_eps= 	3.9595; % 0.203;      % released by GB2013
var data_piiU_eps= 	73.0807; % 0.304;     % released by GB2013
%var data_ndiffU_eps= 	11.1925; % 11.170;
%var data_spreaddiffU_eps= 247.7939; % 18.520;

var data_gdiffU_eps= 	2.9720; % 0.053;
var data_HhatU_eps= 	0.286;

%var data_unempdiffU_eps= 7.3042; %	1.777;
%var data_unemphatU_eps= 	46.223;

%25 percent of variance
%var data_pidU_eps= 31.4531; %  0.9355;
%var data_picU_eps= 9.8987; % 0.5069;
%var data_piiU_eps= 182.7017; % 0.7603;

end;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
% *** estim params priors begin ****%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
estimated_params; 


%shocks
% *** all shock priors re-scaled by some factor; see the above equations
 stderr muz_eps,         inv_gamma_pdf,0.15,inf;  
% *** stderr mupsi_eps,    inv_gamma_pdf,0.15,inf; *** % origimally not estimated
stderr epsilon_eps,     inv_gamma_pdf,0.5,inf;
stderr Upsilon_eps,     inv_gamma_pdf,0.15,inf;  
stderr zetac_eps,       inv_gamma_pdf,0.15,inf;    
stderr zetah_eps,       inv_gamma_pdf,0.15,inf;        
stderr phitilde_eps,    inv_gamma_pdf,0.15,inf;     
stderr epsR_eps,        inv_gamma_pdf,0.15,inf;
stderr g_eps,           inv_gamma_pdf,0.5,inf;
stderr taud_eps,        inv_gamma_pdf,0.5,inf; 
stderr taux_eps,        inv_gamma_pdf,0.5,inf;
stderr taumc_eps,       inv_gamma_pdf,0.5,inf;
stderr taumi_eps,       inv_gamma_pdf,0.5,inf;
stderr taumx_eps,       inv_gamma_pdf,0.5,inf;
% *** stderr gamma_eps,    inv_gamma_pdf,0.5,inf; % origimally not estimated
% stderr sigma_eps,    inv_gamma_pdf,0.5,inf; % origimally not estimated
% stderr eta_eps,         inv_gamma_pdf,0.5,inf; % origimally not estimated
stderr ystar_eps,       inv_gamma_pdf,0.5,inf;  
stderr pistar_eps,      inv_gamma_pdf,0.5,inf;  
%stderr Rstar_eps,       inv_gamma_pdf,1.5,inf; % scaled differently, by 1000


% *** stickiness ****
xid,     beta_pdf,0.75,0.075;
xix,     beta_pdf,0.75,0.075;
ximc,    beta_pdf,0.75,0.075;
ximi,    beta_pdf,0.75,0.075;
ximx,    beta_pdf,0.66,0.10; 

kappad,     beta_pdf,0.5,0.15;
kappax,     beta_pdf,0.5,0.15;
kappamc,    beta_pdf,0.5,0.15;
kappami,    beta_pdf,0.5,0.15;
kappamx,    beta_pdf,0.5,0.15;

kappaw,     beta_pdf,0.5,0.15;

work_cap_para, beta_pdf,0.5,0.25;

% preference and technology 
sigmaLScaled,gamma_pdf,  0.3,    0.15;  % CTW: 0.75,   0.2; 
b,           beta_pdf,   0.65,   0.15;
SppScaled,   gamma_pdf,  0.5,    0.15;
sigmaa,      gamma_pdf,  0.2,    0.075;  


% *** Taylor rule ***
% changed to identical priors to SW 2003.
rhoR,       beta_pdf,  0.8,     0.1;    
rpi,        normal_pdf,1.7,     0.15;     
% rdeltapi,normal_pdf,0.3,     0.1;
ry,         normal_pdf,0.125,   0.05;     
% rdeltay, gamma_pdf, 0.0625,   0.05;   

% *** open econ. stuff
etax,           gamma_pdf,1.5,0.25; % all etas trunc'ed below
% ******* EXCLUDED b/c post mode at bound: etac, gamma_pdf,1.5,0.25;
etac,           gamma_pdf,1.5,0.25;
etai,           gamma_pdf,1.5,0.25;
etaf,           gamma_pdf,1.5,0.25;
phitildes,      gamma_pdf,1.25,0.1;  

% /*
% % *** financial frictions parameters ***
% mu,  beta_pdf, 0.3,  0.075;   
% % wesharePercent,gamma_pdf,0.1,0.05;
% */

% /*
% % *** labor market parameters ***
% recruitsharePercent, gamma_pdf,     0.1, 0.075;   
% bshare,           beta_pdf,      0.75,0.075;  
% % iota,       beta_pdf,         0.5, 0.25;    
% 
% BigFPercent,      beta_pdf,      0.25,0.05; 
% */

% *** Exog. AR1 processes ***
rhomuz,      beta_pdf,0.5, 0.075; 
% *** rhomupsi,    beta_pdf,0.5, 0.065; ***
rhoepsilon,  beta_pdf,0.85,0.075;
rhoUpsilon,  beta_pdf,0.85,0.075;
rhozetac,    beta_pdf,0.85,0.075; 
rhozetah,    beta_pdf,0.85,0.075; 
rhophitilde, beta_pdf,0.85,0.075; 
rhog,        beta_pdf,0.85,0.075;
% rhosigma, beta_pdf,0.85,0.075; 
% rhogamma, beta_pdf,0.85,0.075;
% rhoeta,   beta_pdf,0.85,0.075;

% *** Foreign VAR ***

% Std setup:
a11,normal_pdf,0.5,0.5;  
a22,normal_pdf,0.0,0.5; 
a33,normal_pdf,0.5,0.5; 

a12,normal_pdf,0.0,0.5; 
a13,normal_pdf,0.0,0.5;
a21,normal_pdf,0.0,0.5;
a23,normal_pdf,0.0,0.5;
a24,normal_pdf,0.0,0.5;
a31,normal_pdf,0.0,0.5;
a32,normal_pdf,0.0,0.5; 
a34,normal_pdf,0.0,0.5;

c21,normal_pdf,0.0,0.5;
c31,normal_pdf,0.0,0.5;
c32,normal_pdf,0.0,0.5;
c24,normal_pdf,0.0,0.5;
c34,normal_pdf,0.0,0.5;
end;

% /* ******** Comment out below params - not present in Baseline:
% 
% mu            =   0.563            ; 
% recruitsharePercent            =   0.307            ; 
% bshare            =   0.934            ; 
% BigFPercent            =   0.183            ; 
% rhogamma            =   0.785            ; 
%   
% shocks;
% var    gamma_eps            =   0.352 ^2 ; 
% ***** */


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%*** end of estim params priors ****%%%%%%%%%%%%%/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

estimated_params_bounds;
etax, 1, 20;
etac, 1, 20;
etai, 1, 20;
etaf, 1, 20;
end;



%%%%%%%%%%%%%%%%%%%%%%%%/
%%%%%%Observed variables%%%%%%%%%/
%%%%%%%%%%%%%%%%%%%%%%%%/
varobs  data_RU data_wdiffU data_cdiffU    
data_ydiffU  data_ystardiffU data_pistarU 
data_RstarU  data_HdiffU %data_HhatU %replaced by gb2013
data_impdiffU data_piiU 
data_pidU data_picU data_xdiffU data_qdiffU data_idiffU 
% *** data_ndiffU data_spreaddiffU data_unempdiffU ***
 data_gdiffU;
% GDP12q_diffU GDP4q_diffU pic4qU; %dropped by gb2013
 


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/
%BEGINNING OF ESTIMATION%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%/

% % *** Pasting param values from posterior mean published in JEDC
% 
%          xid            = 0.88706            ; 
%          xix            = 0.81586            ; 
%         ximc            = 0.87419            ; 
%         ximi            = 0.79199            ; 
%         ximx            = 0.39609            ; 
%       kappad            = 0.14813            ; 
%       kappax            = 0.51307            ; 
%      kappamc            = 0.37973            ; 
%      kappami            = 0.41702            ; 
%      kappamx            = 0.33999            ; 
%       kappaw            = 0.43448            ; 
% work_cap_para            = 0.46330           ; 
% sigmaLScaled            = 0.77675            ; 
%            b            = 0.65878            ; 
%    SppScaled            = 0.25804            ; 
%       sigmaa            = 0.14495            ; 
%         rhoR            = 0.81884            ; 
%          rpi            = 1.90910            ; 
%           ry            = 0.02298            ; 
%         etax            = 1.23229            ; 
%         etac            = 1.68489            ; 
%         etai            = 1.54604            ; 
%         etaf            = 1.63188            ; 
%    phitildes            = 1.09596            ; 
% %          mu            = 0.52699            ; 
% % recruitsharePercent    = 0.38848            ; 
% %      bshare            = 0.92389            ; 
% % BigFPercent            = 0.14701            ; 
%       rhomuz            = 0.59024            ; 
%   rhoepsilon            = 0.84012            ; 
%   rhoUpsilon            = 0.62438            ; 
%     rhozetac            = 0.66286            ; 
%     rhozetah            = 0.78604            ; 
%  rhophitilde            = 0.69854            ; 
%         rhog            = 0.90370            ; 
% %    rhogamma            = 0.81823            ; 
%          a11            = 0.94180            ; 
%          a22            = 0.10540            ; 
%          a33            = 0.90824            ; 
%          a12            = 0.31906            ; 
%          a13            = -0.48541            ; 
%          a21            = 0.06196            ; 
%          a23            = -0.11195            ; 
%          a24            = 0.27176            ; 
%          a31            = 0.01472            ; 
%          a32            = 0.09218            ; 
%          a34            = 0.00913            ; 
%          c21            = 0.15546            ; 
%          c31            = 0.13884            ; 
%          c32            = 0.05136            ; 
%          c24            = 0.06309            ; 
%          c34            = 0.06963            ; 
% shocks;
%          var      muz_eps            = 0.21372 ^2 ; 
%          var  epsilon_eps            = 0.47045 ^2 ; 
%          var  Upsilon_eps            = 0.23346 ^2 ; 
%          var    zetac_eps            = 0.20149 ^2 ; 
%          var    zetah_eps            = 0.72958 ^2 ; 
%          var phitilde_eps            = 0.62558 ^2 ; 
%          var     epsR_eps            = 0.12073 ^2 ; 
%          var        g_eps            = 0.67898 ^2 ; 
%          var     taud_eps            = 3.26144 ^2 ; 
%          var     taux_eps            = 3.22919 ^2 ; 
%          var    taumc_eps            = 3.27118 ^2 ; 
%          var    taumi_eps            = 0.77815 ^2 ; 
%          var    taumx_eps            = 3.96680 ^2 ; 
% %         var    gamma_eps            = 0.35015 ^2 ; 
%          var    ystar_eps            = 0.47648 ^2 ; 
%          var   pistar_eps            = 0.22855 ^2 ; 
%          var    Rstar_eps            = 0.49263 ^2 ; 
% end;


% *** Note: alphaa needs to be set manually to match the desired rate of k*pk'/y, i.e. 8


%baseline3_oo_irfs=oo_.irfs;
%save baseline3_oo_irfs baseline3_oo_irfs                     


estimation(order=1,datafile=myOriginalData, mh_replic=300000, mh_nblocks=1, mh_drop=.3,  mh_jscale=0.2, 
 mode_compute=6, filter_step_ahead = [1 4 8 12], forecast=20,smoother, filtered_vars, diffuse_filter,
nodisplay, 
% do this only for the final model b/c takes a lot of time
moments_varendo,
conditional_variance_decomposition=[1 4 8 20],
% 
graph_format=(eps,pdf))
lmcU lrkbarU lwbarU lRfU lpxU lpixU lkU lRnustarU 
lHU lpiU lmcxU lpimcU lmcmcU lpimxU lmcmxU lpimiU 
lmcmiU lpicU lpmcU lpiiU lpmiU lkbarU liU lpsizplusU 
lcU lpkprimeU luU lpinvestU lsU aU lqU lxU 
lpcU  lRU lyU  lRxU lpmxU lRkU 

lylessdU nxdivGDPU lSlevU

data_HhatU

data_RU 
data_wdiffU 
data_cdiffU    
data_ydiffU  
data_ystardiffU 
data_pistarU 
data_RstarU  
data_HdiffU 
data_impdiffU 
data_piiU 
data_pidU 
data_picU 
data_xdiffU 
data_qdiffU 
data_idiffU 
data_gdiffU
;

% due to time constraints, do this only for the final calibration
% ,moments_varendo, conditional_variance_decomposition=[1 4 8]
% for recursive forecasts use `nobs=[]' integer but do this maybe with calibrated vars

stoch_simul(order=1,irf=20, nodisplay, 
%order=2, pruning,periods=100,simul_replic=5,
graph_format = (eps, pdf))
lmcU lrkbarU lwbarU lRfU lpxU lpixU lkU lRnustarU 
lHU lpiU lmcxU lpimcU lmcmcU lpimxU lmcmxU lpimiU 
lmcmiU lpicU lpmcU lpiiU lpmiU lkbarU liU lpsizplusU 
lcU lpkprimeU luU lpinvestU lsU aU lqU lxU 
lpcU  lRU lyU  lRxU lpmxU lRkU 

lylessdU nxdivGDPU lSlevU

data_HhatU


data_RU 
data_wdiffU 
data_cdiffU    
data_ydiffU  
data_ystardiffU 
data_pistarU 
data_RstarU  
data_HdiffU 
data_impdiffU 
data_piiU 
data_pidU 
data_picU 
data_xdiffU 
data_qdiffU 
data_idiffU 
data_gdiffU
; 

shock_decomposition(parameter_set=posterior_mean)
data_ydiffU 
data_picU
%data_spreaddiffU 
%data_unempdiffU
;

% do this only for the final model b/c time-consuming

%identification(graph_format = (eps, pdf));

%dynare_sensitivity(identification=1,morris=1,
%graph_format = (eps, pdf), conf_sig=0.90,
%datafile=ctwBaselineData);


% dynare_sensitivity(identification=1, morris=2); % Iskrev

%model_diagnostics(M_,options_,oo_) %run it when some error for some further info


/*
load('baseline70_results.mat')
whichmoment='Mean'; % 'Median' or 'Mean'

smoothedvars= eval(['oo_.SmoothedVariables.',whichmoment]);
updatedvars = eval(['oo_.UpdatedVariables.',whichmoment]);
filteredvars = eval(['oo_.FilteredVariables.',whichmoment]);

myvarlist = {'ydiff','pid','R','wdiff','cdiff','idiff','qdiff','Hdiff',...
'xdiff','impdiff','pic','pii','gdiff','Rstar','pistar','ystardiff'};

R_ss=oo_.steady_state(91);
Rstar_ss=oo_.steady_state(104);
pid_ss=oo_.steady_state(90); 
pic_ss=oo_.steady_state(100);
pii_ss=oo_.steady_state(101);
pistar_ss=oo_.steady_state(103);

mylevel = [0,pid_ss,R_ss,0,0,0,0,0,0,0,pic_ss,pii_ss,0,Rstar_ss,pistar_ss,0];

for myj = 1:length(myvarlist)
 smoothedvar = eval(['smoothedvars.data_',myvarlist{myj},'U']);
 updatedvar = eval(['updatedvars.data_',myvarlist{myj},'U']);
 filteredvar = eval(['filteredvars.data_',myvarlist{myj},'U']);
 
    figure(myj)
    plot(smoothedvar,'blue','linewidth',2)
    hold on
    plot(filteredvar +mylevel(myj),'red', 'linewidth',2)
    legend([myvarlist{myj},' original'], [myvarlist{myj},' filtered'])  
    hold off
end


findWhatParams={'delta','varphi','AL'};
myParamVals=zeros(length(findWhatParams),1);
myparamcell=cellstr(M_.param_names);
for myI=1:length(findWhatParams)
    myIndex=find(strcmp(myparamcell,findWhatParams(myI)));
    myParamVals(myI)=M_.params(myIndex);
end
disp('matched from moments:');
myParamVals

disp('posterior mean of params:')
oo_.posterior_mean.parameters
disp('posterior std of params:')
oo_.posterior_std.parameters

disp('posterior mean of shock std:')
oo_.posterior_mean.shocks_std
disp('posterior std of shock std:')
oo_.posterior_std.shocks_std



%impulse responses for variables:

%nominal interest rate
% lRU
% observable: annualized, %, no meas.errors
%data_RU

% CPI inflation
%lpicU
%observable: annualized, %, with meas. errors
%data_picU

% GDP 
% lylessdU
%observable, demeaned, qoq, %, with meas. errors
%data_ydiffU

%consumption
% lcU
%observable, demeaned, qoq, %, with meas.err.
% data_cdiffU

%investment
% liU 
%observable, demeaned, qoq, %, with meas. err.
% data_idiffU

% net exports/Y: (value of exports - value of imports)/Y
%nxdivGDPU

%total hours 
% lsmallhU
%observable: demeaned, qoq, %, with meas. err.
%data_HdiffU


% real Nash wage
% lwbarU
%observable: demeaned, qoq, %, with meas. err.
% data_wdiffU

% nominal exchange rate: 
% exp(lsU)
% I replace with real exchange rate
% lqU
% observable, qoq, %, with meas. err.
% data_qdiffU

%%% in finfric model
    % net worth
    % lnU
    % observable, demeaned, qoq, %, with meas. err.
    % data_ndiffU

    % spread
    % lspreadU or, specifically, 400*exp(lspreadU)
    % observable, qoq, %, with meas. err.
    % data_spreaddiffU or data_spreadU
    
%%% in employment model
    % unemployment rate
    % level dev: exp(lUnemprateU)
    % qoq growth: data_unempdiffU

    % hours per employee
    % look in the employment model 

    % shadow wage, marginal product of labor
    % look in the employment model    
    

*/

 