// mod?le version d?finitive.
// 05-10-2006

var 
    // model with flexible prices (FP-model) - non linear
    wstar $w^*$
    Lstar $L^*$
    Cstar $C^*$
    mcstar $mc^*$
    xstar $x^*$
    Istar $I^*$
    Kstar $K^*$
    Qstar $Q^*$
    rstar $r^*$
    rkstar $r^{K*}$
    zstar $z^*$
    Ktilstar $\tilde{K}^*$
    Ystar $Y^*$
    G $G$
    // model with sticky prices - non linear
    w $w$
    L $L$
    C $C$
    mc $mc$
    x $x$
    I $I$
    K $K$
    Q $Q$
    r $r$
    rk $r^K$
    z $z$
    Ktil $\tilde{K}$
    Y $Y$
    UL $U^L$
    UC $U^C$
    ptitl $l$
    pi $\pi$
    wtild $\tilde{w}$
    H1 $\mathcal{H}_1$
    H2 $\mathcal{H}_2$
    pitarget $\bar{\pi}$
    mult $\lambda$
    p $p$
    Q1 $\mathcal{Q}_1$
    Q2 $\mathcal{Q}_2$
    R $R$
    Dp $D_p$
    // fiscal shocks
    taur $\tau^r$
    tauw $\tau^W$
    taul $\tau^l$
    tauk $\tau^K$
    tauc $\tau^C$
    tauy $\tau^y$
    // technological & preferences shocks
    epsa $\varepsilon^a$
    epsb $\varepsilon^B$
    epsi $\varepsilon^I$
    epsl $\varepsilon^L$
;

varexo 
    // fiscal shocks
    e_c $\nu^C$
    e_l $\nu^l$
    e_g $\nu^G$
    e_w $\nu^W$
    e_r $\nu^r$
    e_y $\nu^y$
    e_k $\nu^K$
    // tech & pref shocks
    n_a $\eta^a$
    n_l $\eta^L$
    n_b $\eta^B$
    n_i $\eta^I$
    n_q $\eta^Q$
    // inflation-related shocks
    e_pi $\eta^{\pi}$
    e_taylor $\eta^R$
;

parameters
    // deep parameters
    nu $\nu$
    alpha $\alpha$
    sigmal $\sigma_l$
    sigmac $\sigma_c$
    eps $\epsilon$
    teta $\theta$
    iphi $\varphi^{-1}$
    Gdpsi $\Psi$
    beta $\beta$
    h $h$
    gY $g_Y$
    lambdaw $\lambda_w$
    lambdap $\lambda_p$
    mhu $\mu$
    xiw $\xi_w$
    xip $\xi_p$
    gammaw $\gamma_w$
    gammap $\gamma_p$
    // Taylor's rule
    rho $\rho$
    rpi $\rho_pi$
    ry $\rho_y$
    rdeltapi $\rho_{\triangle \pi}$
    rdeltay $\rho_{\triangle \y}$  
    // shocks parameters
    rhor $\rho^r$
    rhow $\rho^w$
    rhol $\rho^l$
    rhok $\rho^K$
    rhoc $\rho^C$
    rhoy $\rho^y$
    rhog $\rho^g$
    zetaa $\zeta^a$
    zetab1 $\zeta^B$
    // zetab2 $\zeta^B_2$
    zetai $\zeta^I$
    zetal$\zeta^L$
    rhopi $\rho^\pi$
    // steady state values
    taurbar $\bar{\tau^r}$
    tauwbar $\bar{\tau^W}$
    taulbar $\bar{\tau^l}$
    taukbar $\bar{\tau^K}$
    taucbar $\bar{\tau^C}$
    tauybar $\bar{\tau^y}$
    zbar $\bar{z}$
    Gbar $\bar{G}$
    FixedCost $\Phi$
    pibar $\bar{\pi}$
    Rbar $\bar{R}$
    // Useless parameters (bug in Dynare v4?)
    wbar $\bar{w}$
    Lbar $\bar{L}$
    Cbar $\bar{C}$
    mcbar $\bar{mc}$
    xbar $\bar{x}$
    Ibar $\bar{I}$
    Kbar $\bar{K}$
    Qbar $\bar{Q}$
    rbar $\bar{r}$
    rkbar $\bar{r^K}$
    Ktilbar $\bar{\tilde{K}}$
    Ybar $\bar{Y}$
    ULbar $\bar{U^L}$
    UCbar $\bar{U^C}$
    H1bar $\bar{\mathcal{H}_1}$
    H2bar $\bar{\mathcal{H}_2}$
    multbar $\bar{\lambda}$
    pbar $\bar{p}$
    Q1bar $\bar{\mathcal{Q}_1}$
    Q2bar $\bar{\mathcal{Q}_2}$
    Dpbar $\bar{D_p}$
    chiKtilL $\bar{\chi^{\tilde{K}L}}$
    chiYL $\bar{\chi^{YL}}$
    chiGL $\bar{\chi^{GL}}$
    chiCL $\bar{\chi^{CL}}$
;



// deep parameters
gammap      = 1-0.477 ;
gammaw      = 1-0.728 ;
xiw         = .756 ;
xip         = .909 ;
lambdaw     = .5 ;
lambdap     = .3 ;
nu          = (1+lambdaw)/lambdaw ;
alpha       = .3 ;
sigmal      = 1.26 ;
sigmac      = 1.6 ;
eps         = (1+lambdap)/lambdap ;
teta        = .025 ;
iphi        = 4 ;
beta        = .99446327837150;
h           = .55 ;
gY          = 0.21468834761075; // calibrated
mhu         = 1/(eps-1);

// Taylor's rule
rho         = .8 ;
rpi         = 1.5 ;
ry          = .1 ;
rdeltapi    = .5 ;
rdeltay     = .5 ;

// shocks parameters
rhor        = .8 ;
rhow        = .8 ;
rhol        = .0 ;
rhok        = .8 ;
rhoc        = .8 ;
rhoy        = .0;//.8 ;
rhog        = .8 ;
rhopi       = .8 ;
zetaa       = .8 ;
zetab1      = .8 ;
zetai       = 0 ; //.8 ;
zetal       = .8 ; //.8 ;

// steady state values

taucbar = 1.129202;
taukbar = 1;
taulbar = 1.298528;
taurbar = 1;
tauwbar = 0.870431;
tauybar = 1;

pibar       = 1.00580514587360;
xbar        = 1 ;
Qbar        = 1 ;
rbar 	    = 1/beta;
zbar	    = .817183;
Gdpsi	    = zbar/(rbar + teta - 1);  
rkbar       = 1/(Gdpsi*taukbar) ;
mcbar       = (eps - 1)/eps*tauybar ;
wbar        = (mcbar*(alpha/(taurbar*rkbar))^alpha)^(1/(1-alpha))*(1-alpha)/taulbar ;
chiKtilL    = alpha/(1-alpha)*taulbar*wbar/(taurbar*rkbar) ;
chiYL       = 1/(1+mhu)*(chiKtilL)^alpha ;
chiGL       = gY*chiYL ;
chiCL       = chiYL - teta/zbar*chiKtilL - chiGL ;
Lbar        = (wbar*(nu-1)/nu*tauwbar/taucbar*(chiCL*(1-h))^(-sigmac))^(1/(sigmac+sigmal)) ;
Cbar        = Lbar*chiCL ;
Ktilbar     = Lbar*chiKtilL ;
Ybar        = Lbar*chiYL ;
Gbar        = Lbar*chiGL ;
Kbar        = Ktilbar/zbar ;
Ibar        = teta*Kbar ;
FixedCost   = mhu*Ybar ;

ULbar      = -Lbar^sigmal ;
UCbar      = ((1-h)*Cbar)^(-sigmac) ;
H1bar      = -(Lbar)^(sigmal+1)/(1-beta*xiw) ;
H2bar      = ((1-h)*Cbar)^(-sigmac)*tauwbar*Lbar/(1-beta*xiw)/taucbar/pibar ;
multbar    = ((1-h)*Cbar)^(-sigmac)/taucbar ;
pbar       = 1 ;
Q1bar      = ((1-h)*Cbar)^(-sigmac)/taucbar*Ybar*tauybar*(eps-1)/eps/(1-beta*xip) ;
Q2bar      = (1-h)^(-sigmac)*Cbar^(-sigmac)/taucbar*Ybar*tauybar/(1-beta*xip) ;
Dpbar      = 1 ;
Rbar       = pibar/beta ;



model;
	// FLEXIBLE PRICE MODEL::

	// Wages:
	wstar = nu/(nu - 1)*tauc/tauw*epsl*Lstar^sigmal/
    	(Cstar-h*Cstar(-1))^(-sigmac) ;										//Equ 1.

	// Prices:
	mcstar = (eps-1)/eps*tauy;										//Equ 2.

	// Capital accumulation:
	xstar = epsi*Istar/Istar(-1);							                        //Equ 3.
	Kstar = (1-teta)*Kstar(-1) + (1 - (xstar-1)^2/2*iphi)*Istar;                                            //Equ 4.

	// Investissement equation:
	Qstar*(1-(xstar-1)^2/2*iphi-xstar*(xstar-1)*iphi) + 
			Qstar(1)/rstar*xstar(1)*Istar(1)/Istar*(xstar(1)-1)*iphi = 1;                           //Equ 5.

	// Tobin's Q:
	Qstar = 1/rstar*(tauk(1)*rkstar(1)*zstar(1) - 
    	      (exp((zstar(1)-zbar)/Gdpsi)-1) + Qstar(1)*(1-teta));						//Equ 6.

	// IS curve:
	tauc(1)*epsb*(Cstar - h*Cstar(-1))^(-sigmac) = 
    		beta*rstar*tauc*epsb(1)*(Cstar(+1)-h*Cstar)^(-sigmac);				                //Equ 7.

	// Prices frontier:
	Ktilstar/Lstar = alpha/(1-alpha)*taul*wstar/(taur*rkstar);		                                //Equ 8.

	// Goods market clearing
	epsa*Ktilstar^alpha*Lstar^(1-alpha) - FixedCost = 
    		Cstar + Istar + G + (exp((zstar-zbar)/Gdpsi)-1)*Kstar(-1);                                      //Equ 9.

	// CUR
	tauk*rkstar = exp((zstar-zbar)/Gdpsi)/Gdpsi;								//Equ 10.

	// Aggregate production function
	Ystar = epsa*Ktilstar^alpha*Lstar^(1-alpha) - FixedCost ;	                                        //Equ 11.

	// Marginal cost
	mcstar = (taur*rkstar/alpha)^alpha*(taul*wstar/(1-alpha))^(1-alpha)/epsa;		                //Equ 12.

	// Productive capital stock										
	Ktilstar = zstar*Kstar(-1) ;										//Equ 13.

	// Governement
	G = Gbar^(1-rhog)*G(-1)^rhog*exp(e_g);									//Equ 14.



	// NON-FLEXIBLE PRICE MODEL::
	
	// Wages:
	UL = -epsb*epsl*ptitl^sigmal;										//Equ 15.
	UC = epsb*(C-h*C(-1))^(-sigmac); 									//Equ 16.
	pi*wtild = nu/(1-nu)*H1/H2;										//Equ 17.
	H1 = UL*ptitl+beta*xiw*H1(1); 										//Equ 18.
	H2 = UC*tauw*ptitl/tauc/pi+beta*xiw*pitarget(1)^gammaw*pi^(-gammaw)*H2(1); 				//Equ 19.
	w^(1-nu) = (1-xiw)*wtild^(1-nu)+ xiw*(pitarget^gammaw*pi(-1)^(1-gammaw)*w(-1)/pi)^(1-nu);               //Equ 20.
	ptitl = (wtild/w)^(-(1+lambdaw)/lambdaw)*L;             						//Equ 21.

	// Prices:
	mult = UC/tauc;												//Equ 22.
	pi/pi(-1)^(1-gammap)/pitarget^gammap*p = eps/(eps-1)*Q1/Q2;          					//Equ 23.
	Q1 = pi^eps*pi(-1)^(-(1-gammap)*eps)*mult*Y*mc*pitarget^(-eps*gammap)+ 
	   beta*xip*pi^eps*pi(-1)^(-(1-gammap)*eps)*pitarget^(-gammap*eps)*Q1(1);				//Equ 24.
	Q2 = pi^(eps-1)*pi(-1)^(-(1-gammap)*(eps-1))*mult*tauy*Y*pitarget^(gammap*(1-eps))
	  + beta*xip*pi^(eps-1)*pi(-1)^(-(1-gammap)*(eps-1))*pitarget^(-gammap*(eps-1))*Q2(1);                  //Equ 25.
	(1-xip)*p^(1-eps) + xip*(pitarget^gammap*pi(-1)^(1-gammap)/pi)^(1-eps) = 1;                             //Equ 26.

	// Capital accumulation:
	x = epsi*I/I(-1) ;											//Equ 27.
	K = (1-teta)*K(-1) + (1 - (x-1)^2/2*iphi)*I;								//Equ 28.

	// Investissement equation:
	Q*(1-(x-1)^2/2*iphi-x*(x-1)*iphi) + beta*mult(1)/mult*Q(1)*x(1)*I(1)/I*(x(1)-1)*iphi = 1;               //Equ 29.

	// Tobin's Q:
	Q/exp(n_q) = beta*mult(1)/mult*(tauk(1)*rk(1)*z(1)-(exp((z(1)-zbar)/Gdpsi)-1) + Q(+1)*(1-teta));        //Equ 30.

	// IS curve:
	tauc(1)*epsb*(C - h*C(-1))^(-sigmac) = 
				  beta*R/pi(1)*tauc*epsb(1)*(C(+1)-h*C)^(-sigmac);		                //Equ 31.

	// Prices frontier:
	Ktil/L = alpha/(1-alpha)*taul*w/(taur*rk) ;		                                                //Equ 32.

	// Goods market clearing:
	1/Dp*(epsa*Ktil^alpha*L^(1-alpha) - FixedCost) = C + I + G + (exp((z-zbar)/Gdpsi)-1)*K(-1);             //Equ 33.
	
	Dp = (1-xip)*p^(-eps)+xip*(pitarget^gammap*pi(-1)^(1-gammap)/pi)^(-eps)*Dp(-1);		                //Equ 34.

	// CUR:
	tauk*rk = exp((z-zbar)/Gdpsi)/Gdpsi ;									//Equ 35.

	// Aggregate production function:
	Y*Dp = epsa*Ktil^alpha*L^(1-alpha) - FixedCost ;							//Equ 36.

	// Marginal cost:
	mc = (taur*rk/alpha)^alpha*(taul*w/(1-alpha))^(1-alpha)/epsa;			                        //Equ 37.

	// Productive capital stock:
	Ktil = z*K(-1) ;						                                        //Equ 38.

	// Taylor's rule:
    	R = Rbar^(1-rho)*R(-1)^rho*((pi(-1)/pitarget)^rpi*(Y/Ystar)^ry)^(1-rho)
  	  *(pi/pi(-1)*pitarget(-1)/pitarget)^rdeltapi * (Y/Y(-1)*Ystar(-1)/Ystar)^rdeltay
	  *exp(e_taylor);											//Equ 39.


	// Real interest rate:
	r = R/pi(1) ;						                                                //Equ 40.


	// Shocks:
    	tauc = taucbar^(1-rhoc)*tauc(-1)^rhoc*exp(e_c) ;							//Equ 41.
    	taul = taulbar^(1-rhol)*taul(-1)^rhol*exp(e_l) ;                 					//Equ 42.
    	tauw = tauwbar^(1-rhow)*tauw(-1)^rhow*exp(e_w) ;                 					//Equ 43.
    	taur = taurbar^(1-rhor)*taur(-1)^rhor*exp(e_r) ;                 					//Equ 44.
    	tauy = tauybar^(1-rhoy)*tauy(-1)^rhoy*exp(e_y) ;                 					//Equ 45.
    	tauk = taukbar^(1-rhok)*tauk(-1)^rhok*exp(e_k) ;                 					//Equ 46.
    	epsa = epsa(-1)^zetaa*exp(n_a);		                      						//Equ 47.
    	epsl = epsl(-1)^zetal*exp(n_l);                                 			        	//Equ 48.
    	epsb = epsb(-1)^zetab1*exp(n_b);		                             			        //Equ 49.
    	epsi = epsi(-1)^zetai*exp(n_i);                                          			        //Equ 50.

	pitarget = pibar^(1-rhopi)*pitarget(-1)^rhopi*exp(e_pi);						//Equ 51.

end ;

initval;
wstar       = wbar;
Lstar       = Lbar ;
Cstar       = Cbar ;
mcstar      = mcbar ;
xstar       = xbar ;
Istar       = Ibar ;
Kstar       = Kbar ;
Qstar       = Qbar ;
rstar       = rbar ;
rkstar      = rkbar ;
zstar       = zbar ;
Ktilstar    = Ktilbar ;
Ystar       = Ybar ;

w           = wbar ;
L           = Lbar ;
C           = Cbar ;
mc          = mcbar ;
x           = xbar ;
I           = Ibar ;
K           = Kbar ;
Q           = Qbar ;
r           = rbar ;
rk          = rkbar ;
z           = zbar ;
Ktil        = Ktilbar ;
Y           = Ybar ;

UL          = ULbar ;
UC          = UCbar ;
ptitl       = Lbar ;
pi          = pibar ;
wtild       = wbar ;
H1          = H1bar ;
H2          = H2bar ;
pitarget    = pibar ;
mult        = multbar ;
p           = pbar ;
Q1          = Q1bar ;
Q2          = Q2bar ;
Dp          = Dpbar ;

R           = Rbar ;
G           = Gbar ;

taur        = taurbar ; 
tauw        = tauwbar ;
taul        = taulbar ;
tauk        = taukbar ;
tauc        = taucbar ;
tauy        = tauybar ;

epsa        = 1 ;
epsb        = 1 ;
epsi        = 1 ;
epsl        = 1 ;

end;

//check;
//return;

//resid(1);
//steady;



shocks;
  var e_c; stderr 0.1;
  var e_l; stderr 0.1;
  var e_g; stderr 0.1;
  var e_w; stderr 0.1;
  var e_r; stderr 0.1;
  var e_y; stderr 0.1;
  var e_k; stderr 0.1;
  var n_a; stderr 0.1;
  var n_l; stderr 0.1;
  var n_b; stderr 0.1;
  var n_i; stderr 0.1;
  var n_q; stderr 0.1;
  var e_pi; stderr 0.1;
  var e_taylor; stderr 0.1;
end;

estimated_params;

	stderr e_taylor,UNIFORM_PDF,,,0,1;//,INV_GAMMA_PDF, 1,inf;
    stderr e_pi,UNIFORM_PDF,,,0,1;//INV_GAMMA_PDF, 0.05,inf;
	
	//$ stderr e_y,UNIFORM_PDF,,,0,10;//INV_GAMMA_PDF, 0.15,inf;
	//$ stderr e_c,UNIFORM_PDF, , ,0,5;
    	//$ stderr e_l,UNIFORM_PDF,,,0,10;//INV_GAMMA_PDF, 0.3,inf;
    	//$ stderr e_w,UNIFORM_PDF, , ,0,5;
    	//$ stderr e_r,UNIFORM_PDF, , ,0,5;
    	//$ stderr e_k,UNIFORM_PDF, , ,0,5;
    	stderr e_g,UNIFORM_PDF,,,0,5;//INV_GAMMA_PDF, 0.3,inf;

    	stderr n_a,UNIFORM_PDF,,,0,5;//INV_GAMMA_PDF, 0.6,inf;
    	stderr n_l,UNIFORM_PDF,,,0,40;//INV_GAMMA_PDF, 1, 2; //UNIFORM_PDF,,,0,15;
    	stderr n_b,UNIFORM_PDF,,,0,10;//INV_GAMMA_PDF, .2, 2;//INV_GAMMA_PDF, 0.3,inf;
    	stderr n_i,UNIFORM_PDF,,,0,5;//INV_GAMMA_PDF, 0.15,inf;
	//$ stderr n_q,UNIFORM_PDF, , ,0,10;//INV_GAMMA_PDF, 0.6,inf;
	
    	sigmac,NORMAL_PDF, 1.5, 0.5 ; //UNIFORM_PDF,,,1,5;
    	sigmal,NORMAL_PDF, 3.5, 0.5 ;//UNIFORM_PDF,,,0,10; 
    	
        xiw,BETA_PDF, 0.75, 0.05;//UNIFORM_PDF,,,0,1;
    	xip,BETA_PDF, 0.75, 0.05;//UNIFORM_PDF,,,0,1;
    	
        gammaw,BETA_PDF, 0.25, 0.15;//UNIFORM_PDF,,,0,1;
    	gammap,BETA_PDF, 0.25, 0.15;//UNIFORM_PDF,,,0,1;
    	
        iphi,NORMAL_PDF, 5.5, 1.5;//UNIFORM_PDF,,,1,10;
    	
        h,BETA_PDF, 0.50, 0.15;//UNIFORM_PDF,,,0,1;
    	
        rho,BETA_PDF, 0.8, 0.05;// UNIFORM_PDF,,,0,1;
    	rpi,NORMAL_PDF, 1.7, 0.1;//UNIFORM_PDF,,,1,2; 
    	ry,NORMAL_PDF, 0.125, .05; //UNIFORM_PDF,,,-0.1,1; 
    	rdeltapi,NORMAL_PDF, 0.3, 0.1; //UNIFORM_PDF,,,-1,1; 
    	rdeltay,NORMAL_PDF, 0.0625, 0.05; //UNIFORM_PDF,,,-1,1;

	//$ rhor, BETA_PDF,0.8,0.1;
	//$ rhow, BETA_PDF,0.8,0.1;
	//$ rhol, UNIFORM_PDF,,,-.01,1;//BETA_PDF,0.4,0.15;
	//$ rhok, BETA_PDF,0.8,0.1;
	//$ rhoc, BETA_PDF,0.8,0.1;
	//$ rhoy, UNIFORM_PDF,,,-.01,1;// BETA_PDF,0.4,0.15;
	rhog, BETA_PDF,0.8,0.1;// UNIFORM_PDF,,,0,1;
	rhopi, BETA_PDF,0.8,0.1; // UNIFORM_PDF,,,0,1;
	zetaa, UNIFORM_PDF,,,0,1;//BETA_PDF,0.8,0.15;
	zetab1,BETA_PDF,0.6,0.1; //UNIFORM_PDF,,,0,1;
	//$ zetab2, NORMAL_PDF,.0,0.5;
	//zetai, UNIFORM_PDF,,,0,1;//, BETA_PDF,0.2,0.15;
	zetal, UNIFORM_PDF,,,0,1;// BETA_PDF,0.7,0.15;
    	
end;


estimated_params_init;
	stderr e_taylor,0.08;
    stderr e_pi,0.22;
	
	//$ stderr e_y,.01;
	//$ stderr e_c,0.1;
    	//$ stderr e_l,.1;
    	//$ stderr e_w,0.1;
    	//$ stderr e_r,0.1;
    	//$ stderr e_k,0.1;
    	stderr e_g,1.82;

    	stderr n_a,0.59;
    	stderr n_l,2.3;
    	stderr n_b,1.86;
    	stderr n_i,1.5;
	//$ stderr n_q,3.2;

	sigmac, 1.95;
	sigmal, 2.75;
	xiw, 0.4;
	xip,  0.9;
	gammaw, 0.83;
	gammap, 0.96;
	iphi, 5.63;
	h, 0.5;
	rho, 0.8;
	rpi, 1.50;
	ry, 0.22;
	rdeltapi, -.06;
	rdeltay, 0.03;

	//$ rhor, 0.8;
	//$ rhow, 0.8;
	//$ rhol, 0.8;
	//$ rhok, 0.8;
	//$ rhoc, 0.8;
	//$ rhoy, 0.8;
	rhog, 0.96;
	rhopi, 0.76;
	zetaa, 0.79;
	zetab1, 0.7;
	//zetai, 0.1;
	zetal, 0.9;

end;


varobs  Y C I pi R z w;

options_.noconstant = 1;

options_.logdata = 1;


estimation(irf=0,datafile=MakeData3,first_obs=46,loglinear,prefilter=1,mode_compute=0,mode_file = acdm_mode,mh_replic=0);
//stoch_simul(order=1) pi C w Dp;
options_.forecast=8;
bvar_forecast 4 ;
