
%--------------------------------------------------------------------------
% Commentaires de présentation du modèle
%--------------------------------------------------------------------------


%--------------------------------------------------------------------------
% Les variables endogènes
%--------------------------------------------------------------------------

var y, c, ch, cf, p, ph, pf, pi, pih, pif, lambda, m, 
R, h, w, s, rk, xih, k, f, q, n, i, mu ;
% variables endogènes

%--------------------------------------------------------------------------
% Les variables exogènes
%--------------------------------------------------------------------------

varexo  e, b, x, A, eps_R, Retoile, pfetoile, EX, fi ;
% variables exogènes

%--------------------------------------------------------------------------
% Les paramètres: La calibration
%--------------------------------------------------------------------------

parameters 
gamma alpha phi chi  pssi varrhopi varrhoy varrhomu  
teta nu  rho bb beta  SS delta exx_y ch_c eta AA
lamc lamm phf k_y ch_y c_y whlam k_n 
xxih  RR ff rkk hh yy kk ii cc cch ccf ww mm lambd ffi mmu nn qq ppi ppih ppif pp pph ppf 
RRetoile ppfetoile ss ee xx exx;

gamma=0.028; alpha=0.4; phi=0.169; chi=0.56; pssi=0.05; varrhopi=1.4; varrhoy=0.6; varrhomu=0.6; 
teta=6; nu=0.8; rho=0.9;  beta=0.99;  delta=0.025;  eta=1.315; 
%phf=0.9; 
bb=0.052; SS=1; exx_y=0.2; ch_c=0.5; AA=1; k_n=2; RRetoile=1; ppfetoile=1; ss=1; xx=1;
%------------------------------------------------------------------------------------------------

ppih=1;
ppif=1;
ppi=(ppih^nu)*(ppif^(1-nu));
qq=1;
xxih=(teta-1)/teta;
    lamc=(1+(bb*(ppi/(ppi-beta))^(gamma-1)))^(-1);
    lamm=lamc*bb*((ppi/(ppi-beta))^gamma);
RR=ppi/beta;
ff=(SS*RR)/ppi;
    rkk=ff-1+delta;
    k_y=alpha*(xxih/rkk); 
    ch_y=1-(delta*k_y)-exx_y; 
    c_y=ch_y/ch_c;
    whlam=((1-alpha)*lamc*xxih)/c_y;
    hh=whlam/(eta+whlam);
yy=AA*hh*(k_y^(alpha/(1-alpha)));
kk=k_y*yy;
    ii=delta*kk;
    cc=c_y*yy;
    ww=(1-alpha)*xxih*(yy/hh);
    mm=(bb*cc)/(((RR-1)/RR)^gamma);
    cch=ch_c*cc;
    ccf=(((cc^((rho-1)/rho))-((nu^(1/rho))*(cch^((rho-1)/rho))))/((1-nu)^(1/rho)))^(rho/(rho-1));
 

    ppf=ss*ppfetoile;
    phf=((ccf*nu)/(cch*(1-nu)))^(1/rho);
    pph=phf*ppf;
    pp=((nu*(pph^(1-rho)))+((1-nu)*(ppf^(1-rho))))^(1/(1-rho));

mmu=ppi;
    exx=exx_y*yy;
    lambd=eta/((1-hh)*ww);
nn=kk/k_n;
    ffi=RR/RRetoile;
    ee=(lambd*(cc^(1/gamma)))*((cc^((gamma-1)/gamma))+(((bb^(1/gamma)))*(mm^((gamma-1)/gamma))));
    
    %ppif=1;
    %ppih=(ppi/(ppif^(1-nu)))^(1/nu);
    %ppf=ss*ppfetoile;
    %pph=ppf*phf;
    %pp=(1/(1+(((1-nu)/nu)*(phf^(rho-1)))))*pph + (1/(1+((nu/(1-nu))*(phf^(1-rho)))))*ppf;

%--------------------------------------------------------------------------
% Les équations linéarisées
%--------------------------------------------------------------------------

model;

c=(((nu^(1/rho))*(ch^((rho-1)/rho)))+(((1-nu)^(1/rho))*(cf^((rho-1)/rho))))^(rho/(rho-1));

p=((nu*(ph^(1-rho)))+((1-nu)*(pf^(1-rho))))^(1/(1-rho));

(ch/cf)=(nu/(1-nu))*((ph/pf)^(-rho));

e*(c^(-1/rho))=lambda*((c^((gamma-1)/gamma))+((b^(1/rho))*(m^((gamma-1)/gamma))));

((b*c)/m)^(1/rho)=(R-1)/R;

eta/(1-h)=(lambda*w);

(lambda/R)=beta*(lambda(+1)/pi(+1));

(R/(fi*Retoile))=s(+1)/s;

rk=alpha*xih*(y/k);

w=(1-alpha)*xih*(y/h);

y=(k^alpha)*((A*h)^(1-alpha));

f(+1)=((rk(+1)+((1-delta)*q(+1)))/q);

(q*x)-1-chi*((i/k)-delta)=0;

k=(x*i)+(1-delta)*k(-1);

(R/RR)=((pi/ppi)^varrhopi)*((y/yy)^varrhoy)*((mu/mmu)^varrhomu)*exp(eps_R);

mu=(m*pi)/m(-1);

pi=(pih^nu)*(pif^(1-nu));

pih=ph/ph(-1);

pif=pf/pf(-1);

y=ch+i+EX;

pf=s*pfetoile;

((pih/ppih)-1)=beta*((pih(+1)/ppih)-1)+((1-beta*phi)*(1-phi)/phi)*((xih/xxih)-1);

n(+1)=(f*q(-1)*k)-R*SS*((q(-1)*k)-n);

((f(+1)/ff)-1)=((R(+1)/RR)-1)-pssi*(((n(+1)/nn)-1)-((k(+1)/kk)-1)-((q/qq)-1));

end;

%--------------------------------------------------------------------------
% L'état stationnaire
%--------------------------------------------------------------------------

initval;
y=yy; k=kk; c=cc; ch=cch; cf=ccf; h=hh; R=RR; m=mm; mu=mmu; b=bb; n=nn; f=ff;
lambda=lambd; xih=xxih; w=ww; rk=rkk; pih=ppih; pif=ppif; fi=ffi; q=qq; pi=ppi;s=ss;
Retoile=RRetoile; pfetoile=ppfetoile; pf=ppf; p=pp; ph=pph; i=ii; A=AA; e=ee; x=xx;
EX=exx; b=bb; n=nn;
end;

steady;
check;


%--------------------------------------------------------------------------
% Les chocs
%--------------------------------------------------------------------------

shocks; 
var b; stderr 0.009;
var e; stderr 0.009;
var A; stderr 0.009;
var x; stderr 0.009;
var eps_R; stderr 0.009;
var Retoile; stderr 0.009;
var pfetoile; stderr 0.009;
var fi; stderr 0.009;
var EX; stderr 0.009;
end;

%--------------------------------------------------------------------------
% Les paramètres estimés
%--------------------------------------------------------------------------

estimated_params;
gamma, gamma_pdf,0.14,1;
alpha, beta_pdf, 0.5, 0.1; 
phi, beta_pdf, 0.5, 0.1; 
chi, gamma_pdf,0.5,1;
pssi, gamma_pdf,0.1,0.5;
varrhopi, normal_pdf, 1.4, 0.5;
varrhoy, normal_pdf, 0.6, 0.1;
varrhomu, normal_pdf, 0.6, 0.3;
stderr b, inv_gamma_pdf, 0.05, 2;
stderr e, inv_gamma_pdf, 0.05, 2;
stderr A, inv_gamma_pdf, 0.05, 2;
stderr x, inv_gamma_pdf, 0.05, 2;
stderr eps_R, inv_gamma_pdf, 0.05, 2;
stderr Retoile, inv_gamma_pdf, 0.05, 2;
stderr pfetoile, inv_gamma_pdf, 0.05, 2;
stderr fi, inv_gamma_pdf, 0.05, 2;
stderr EX, inv_gamma_pdf, 0.05, 2;
end;

%--------------------------------------------------------------------------
% Les variables observées
%--------------------------------------------------------------------------

varobs y c i ;

%--------------------------------------------------------------------------
% L'estimation
%--------------------------------------------------------------------------

estimation(datafile=mydata,first_obs=2,nobs=153,prefilter=1,mh_replic=20000,mode_compute=4,mh_nblocks=5,mh_drop=0.45,mh_jscale=0.65) y c;

//check;
//steady(solve_algo=2);
//stoch_simul(order=1,irf=30) y c h;


