var ln_productivity ln_k ln_investment ln_n ln_v ln_p ln_w ln_p_firm ln_mc ln_h ln_e ln_y_firm ln_D ln_mu_e productivity k investment n v p_firm mc h e y_firm mu_e mu Cgamma hiring D p w;
varexo e_D e_P e_W;

parameters D_noise beta theta psi kappa phi_inv w_ss p_ss h_ss omega alpha delta_e delta a eta PHI rho_D rho_D2 rho_P rho_W;

%tva=mean_funk(3);
tva=parametrar_funktion(3);
s_D=tva(1);
s_P=tva(2);
s_W=tva(3);
beta=tva(4);
theta=tva(5);
psi=tva(6);
kappa=tva(7);
phi_inv=tva(8);
omega=tva(9);
alpha=tva(10);
delta_e=tva(11);
delta=tva(12);
a=tva(13);
eta=tva(14);
PHI=tva(15);
rho_D=tva(16);
rho_D2=tva(17);
rho_P=tva(18);
rho_W=tva(19);
D_noise=tva(20);

% n_kon=0.998995880549856;
% c_kon=0.980040889750678;
% inv_kon=1.09376338869512;
% y_kon=1.01404143290223;
% w_kon=0.989209228424759;

model;

%%%%Loggar
ln_productivity=log(productivity);
ln_k=log(k);
ln_investment=log(investment);
ln_n=log(n);
ln_v=log(v);
ln_p=log(p);
ln_w=log(w);
ln_p_firm=log(p_firm);
ln_mc=log(mc);
ln_h=log(h);
ln_e=log(e);
ln_y_firm=log(y_firm);
ln_D=log(D);
ln_mu_e=log(mu_e);
%%%%Loggar

%%%Productivity
productivity=y_firm/n;

%%%Demand function of the firm
y_firm=((p_firm/p)^(-eta))*((y_firm(-1)/(D(-1)^D_noise))^theta)*(D^D_noise);
%y_firm=((p_firm/p)^(-eta))*D;

%%%%Law of motion capital
k=(investment-(phi_inv/2)*(Cgamma^2)*(k(-1)))+(1-delta)*(k(-1));

%%%%Adjustment cost investment (a part)
Cgamma=(investment/k(-1))-delta;

%%%Law of motion labor
n=n(-1)+psi*hiring+(1-psi)*hiring(-1);

%%%Investment FOC
%v=p+phi_inv*((investment-delta*k(-1))/k(-1));
%v=(p_ss^(1-inv_ind))*(p^inv_ind)+phi_inv*((investment-delta*k(-1))/k(-1));
v=p_ss+phi_inv*((investment-delta*k(-1))/k(-1));
%v=1+phi_inv*((investment-delta*k(-1))/k(-1));

%%Kapital FOC
v=(investment(+1)/k)*beta*phi_inv*((investment(+1)/k)-delta)*v(+1)+beta*v(+1)*(1-delta)+beta*alpha*mc(+1)*((y_firm(+1)+(e(-1)^a)*(kappa/2)*(hiring(+1)^2)+(e(-1)^a)*PHI)/k)^(1/omega);

%%%Labor demand
w=(1-alpha)*mc*(h)^((omega-1)/omega)*((y_firm+(e(-1)^a)*PHI+(e(-1)^a)*(kappa/2)*(hiring^2))/n)^(1/omega)-mu+beta*mu(+1);

%%%Optimal hiring
(e(-1)^a)*kappa*hiring*mc=psi*mu+beta*(1-psi)*mu(+1);

%%%organisational capital (Optimal)
mu_e=beta*(mu_e(+1)*(1-delta_e)+a*mc(+1)*(y_firm(+1)/e));


%%%organisational capital
e=e(-1)*(1-delta_e)+(1-h);

%%%FOC h
mu_e=mc*(((y_firm+(e(-1)^a)*PHI+(e(-1)^a)*(kappa/2)*(hiring^2))/h)^(1/omega))*(1-alpha)*(n^((omega-1)/omega));


%%%Production function
y_firm=(e(-1)^a)*((alpha*k(-1)^((omega-1)/omega)+(1-alpha)*(h*n)^((omega-1)/omega))^(omega/(omega-1))-(kappa/2)*(hiring^2)-PHI);

%%%Price FOC
p_firm=(eta/(eta-1))*mc-(beta*theta/(eta-1))*(p_firm(+1)*y_firm(+1)/y_firm);
%p_firm=(eta/(eta-1))*mc;
%y_firm=((p*((eta-1)/eta)/mc)^eta)*D;

%%% AR processes
D=(D(-1)^rho_D)*(D(-2)^rho_D2)*exp(e_D);
p=(p(-1)^rho_P)*exp(e_P);
w=(w_ss^(1-rho_W))*(w(-1)^rho_W)*exp(e_W);
end;



steady_state_model;
mu=0;
hiring=0;
mc=(beta*theta+eta-1)/eta;
%x2=;
%x=fixa_micro(x2,delta,delta_e,a,beta,alpha,omega,PHI,mc);
x1 = fixa_micro([1;0.99;1.3],delta,delta_e,a,beta,alpha,omega,PHI,mc);
n=x1(1);
h=x1(2);
k=x1(3);
e=(1-h)/delta_e;
y_firm=(e^a)*((alpha*k^((omega-1)/omega)+(1-alpha)*(h*n)^((omega-1)/omega))^(omega/(omega-1))-PHI);
w=(1-alpha)*(h^((omega-1)/omega))*mc*(((y_firm+(e^a)*PHI)/n)^(1/omega));
p_ss=(beta*alpha/(1-beta*(1-delta)))*mc*((y_firm+(e^a)*PHI)/k)^(1/omega);
p=p_ss;
p_firm=p_ss;
v=p_ss;
productivity=y_firm/n;
investment=delta*k;
mu_e=(a*beta/(1-beta*(1-delta_e)))*mc*(y_firm/e);
w_ss=w;
D=1;

%%%%Loggar
ln_productivity=log(productivity);
ln_k=log(k);
ln_investment=log(investment);
ln_n=log(n);
ln_v=log(v);
ln_p=log(p);
ln_w=log(w);
ln_p_firm=log(p_firm);
ln_mc=log(mc);
ln_h=log(h);
ln_e=log(e);
ln_y_firm=log(y_firm);
ln_D=log(D);
ln_mu_e=log(mu_e);
%%%%Loggar
end;

% shocks;
% var e_a=0;
% var e_mp=0;
% var e_pref=1; 
% var e_inv=0; 
% var e_risk=0; 
% var e_eta_w=0; 
% var e_eta_p=0; 
% var e_g=0;
% end;

shocks;
var e_D;
stderr s_D;
var e_P;
stderr s_P;
var e_W;
stderr s_W;
end;

resid(1);
%steady;
%model_diagnostics;
%model_info;
%check;


tres=min_max_funk(3);
%tva=mean_funk(3);
tva=parametrar_funktion(3);
estimated_params;
stderr e_D,tva(1),tres(1,1),tres(1,2);
stderr e_P,tva(2),tres(2,1),tres(2,2);
stderr e_W,tva(3),tres(3,1),tres(3,2);
beta,tva(4),tres(4,1),tres(4,2);
theta,tva(5),tres(5,1),tres(5,2);
psi,tva(6),tres(6,1),tres(6,2);
kappa,tva(7),tres(7,1),tres(7,2);
phi_inv,tva(8),tres(8,1),tres(8,2);
omega,tva(9),tres(9,1),tres(9,2);
alpha,tva(10),tres(10,1),tres(10,2);
delta_e,tva(11),tres(11,1),tres(11,2);
delta,tva(12),tres(12,1),tres(12,2);
a,tva(13),tres(13,1),tres(13,2);
eta,tva(14),tres(14,1),tres(14,2);
PHI,tva(15),tres(15,1),tres(15,2);
rho_D,tva(16),tres(16,1),tres(16,2);
rho_D2,tva(17),tres(17,1),tres(17,2);
rho_P,tva(18),tres(18,1),tres(18,2);
rho_W,tva(19),tres(19,1),tres(19,2);
D_noise,tva(20),tres(20,1),tres(20,2);
end;



varobs ln_n ln_k ln_y_firm ln_D;

%varobs n_obs y_obs c_obs w_obs inv_obs inflation R_fed u_obs;
%varobs n_obs y_obs c_obs inv_obs;

%varobs n_obs y_obs c_obs w_obs inv_obs inflation dY R_fed u_obs;
%varobs n_obs y_obs c_obs w_obs inv_obs p_obs b_obs y_obs dY R_fed prod_obs;
%varobs n_obs y_obs c_obs w_obs inv_obs p_obs b_obs;
%varobs n_obs y_obs c_obs w_obs inv_obs inflation R_fed;
%varobs n_obs dY dC dW;
%varobs dY dC dinvestment dW n_obs h u_obs inflation R_fed;

%estimation(order=1, datafile='data.mat', mode_compute=0,first_obs=71,presample=4,lik_init=2,prefilter=0,mh_replic=10,use_univariate_filters_if_singularity_is_detected=0, nograph, nodiagnostic);
stoch_simul(order=1, periods=200, irf=40, nograph) ln_investment ln_v ln_n ln_k ln_y_firm ln_D ln_p ln_p_firm ln_mc;
%stoch_simul(order=1, periods=200, irf=40) ln_investment ln_p_firm ln_mc ln_h ln_v ln_n ln_k ln_y_firm ln_D ln_p;
%stoch_simul(irf=20, conditional_variance_decomposition=[1, 10, 40], nograph) D y_obs n_obs productivity c_obs inv_obs;
%stoch_simul(order=1, periods=110000, irf=40, nograph);

%stoch_simul(order=1, periods=200, irf=40) productivity k investment n v p_firm mc h e y_firm mu_e mu hiring D p w;
%stoch_simul(order=1, periods=200, irf=40) ln_productivity ln_k ln_investment ln_n ln_v ln_p ln_w ln_p_firm ln_mc ln_h ln_e ln_y_firm ln_D ln_mu_e;

%stoch_simul(order=1, periods=200, irf=40) D c THETA Z n w L inflation risk_ar eta_w_ar pref_ar;
%stoch_simul(order=1, periods=200, irf=40) h D c investment n productivity w L inflation R R_fed u_obs risk_ar;
%stoch_simul(order=1, periods=2000, irf=40) D c THETA Z n w L inflation risk_ar;
