clear; 
clc;
%PARAMETERS 
mu=0.6; %elasticity of matches 
beta=0.99; %subjective discount factor 
tau_S=0.3208; %social security tax rate 
%firing costs
gamma_n=0.0888; 
phi_n=0.2715; 
gamma_e=1.0515*gamma_n; 
phi_e=1.0515*phi_n;

delta_n=0.4; %replacement ratio inexperienced 
delta_e=0.4; %replacement ratio experienced 
eta_n=0.5; %bargaining power inexperienced 
eta_e=0.6; %bargaining power experienced 
epsilon=6; %price elasticity  
phi_p=60; %price rigidity 

%CALIBRATED (and IMPLIED) STEADY STATE VARIABLES  
u_n_ss=0.0675; %after hiring inexperienced workers unemployment rate
u_e_ss=0.0619; %after hiring experienced workers unemployment rate
n_n_ss=0.2435; %share of inexperienced employed workers
n_e_ss=1-u_n_ss-u_e_ss-n_n_ss; %share of experienced employed workers 
rho_tot_n_ss=0.0484; %total separation rate inexperienced 
rho_tot_e_ss=0.0199; %total separation rate experienced 
F_a_tilde_n_ss=rho_tot_n_ss/2; %endogenous separation rate inexperienced 
F_a_tilde_e_ss=rho_tot_e_ss/2; %endogenous separation rate experienced 
rho_x_n=(rho_tot_n_ss-F_a_tilde_n_ss)/(1-F_a_tilde_n_ss); %exogenous separation rate inexperienced 
rho_x_e=(rho_tot_e_ss-F_a_tilde_e_ss)/(1-F_a_tilde_e_ss); %exogenous separation rate experienced 
p_theta_n_ss=(rho_tot_n_ss*n_n_ss)/u_n_ss; %job finding rate inexperienced 
p_theta_e_ss=(rho_tot_e_ss*n_e_ss)/u_e_ss; %job finding rate experienced 
q_theta_n_ss=0.7; %vacancy filling rate inexperienced 
q_theta_e_ss=0.7; %vacancy filling rate experienced 
m_n_ss=p_theta_n_ss*u_n_ss;
m_e_ss=p_theta_e_ss*u_e_ss;
v_n_ss=m_n_ss/q_theta_n_ss; %vacancies for inexperienced 
v_e_ss=m_e_ss/q_theta_e_ss; %vacancies for experienced  
M_n=m_n_ss/((u_n_ss^mu)*(v_n_ss^(1-mu))); %match-efficiency parameter inexperienced
M_e=m_e_ss/((u_e_ss^mu)*(v_e_ss^(1-mu))); %match-efficiency parameter experienced 
theta_n_ss=v_n_ss/u_n_ss; %market tightness inexperienced
theta_e_ss=v_e_ss/u_e_ss; %market tightness experienced 
pai_ss=1; %steady state inflation 
A_ss=1; %steady state aggregate productivity
a_n_ss=1.4; %steady state productivity inexperienced
a_e_ss=1.0811*a_n_ss; %steady state productivity experienced (van Ours and Stoeldraijer 2010) 
sigma_a_n=0.25; %standard deviation productivity inexperienced  
sigma_a_e=0.2; %standard deviation productivity experienced 
a_tilde_n_SS=icdf('logn', F_a_tilde_n_ss, log(a_n_ss), sigma_a_n); %reservation productivity inexperienced 
a_tilde_e_SS=icdf('logn', F_a_tilde_e_ss, log(a_e_ss), sigma_a_e); %reservation productivity experienced 
f_n=@(x_n) x_n.*lognpdf(x_n, log(a_n_ss), sigma_a_n); 
H_a_tilde_n_SS=integral(f_n, a_tilde_n_SS, Inf)/(1-F_a_tilde_n_ss); %average idiosyncratic productivity inexperienced 
f_e=@(x_e) x_e.*lognpdf(x_e, log(a_e_ss), sigma_a_e); 
H_a_tilde_e_SS=integral(f_e, a_tilde_e_SS, Inf)/(1-F_a_tilde_e_ss); %average idiosyncratic productivity inexperienced  
R_ss=(pai_ss/beta); %steady state quarterly nominal interest rate 
omega_ss=(1/epsilon)*(epsilon-1+phi_p*(pai_ss-1)*pai_ss-beta*phi_p*(pai_ss-1)*pai_ss); %steady state marginal cost
vartheta_ss=n_n_ss/(n_n_ss+n_e_ss); %share of inexperienced employed on total employment
nu_C_n_ss=((1-rho_tot_n_ss)*n_n_ss)/n_n_ss; %share of continuing inexperienced workers 
nu_C_e_ss=((1-rho_tot_e_ss)*n_e_ss)/n_e_ss; %share of continuing experienced workers
a_N_n_ss=a_n_ss; %steady state productivity newly hired inexperienced workers  
a_N_e_ss=a_e_ss; %steady state productivity newly hired experienced workers 
a_bar_n_ss=nu_C_n_ss*H_a_tilde_n_SS+(1-nu_C_n_ss)*a_N_n_ss; %steady state average productivity inexperienced 
a_bar_e_ss=nu_C_e_ss*H_a_tilde_e_SS+(1-nu_C_e_ss)*a_N_e_ss; %steady state average productivity experienced  
y_ss=A_ss*(n_n_ss*a_bar_n_ss+n_e_ss*a_bar_e_ss); 
f_a_tilde_N=lognpdf(a_tilde_n_SS, log(a_n_ss), sigma_a_n);
f_a_tilde_E=lognpdf(a_tilde_e_SS, log(a_e_ss), sigma_a_e);  
mu_a_n=log(a_n_ss);
mu_a_e=log(a_e_ss);  
dfN=-lognpdf(a_tilde_n_SS, mu_a_n, sigma_a_n)*(1/a_tilde_n_SS)*(1+(log(a_tilde_n_SS)-mu_a_n)/sigma_a_n^2);
dfE=-lognpdf(a_tilde_e_SS, mu_a_e, sigma_a_e)*(1/a_tilde_e_SS)*(1+(log(a_tilde_e_SS)-mu_a_e)/sigma_a_e^2);

%COEFFICIENTS OF THE REMAINING VARIABLES IN THE SYSTEM OF EQUATIONS  
Z_1=1+eta_n*tau_S-(1-eta_n)*delta_n-eta_n*(1-(1/(pai_ss/beta))*(1-rho_x_n))*(gamma_n*tau_S+phi_n); 
Z_2=eta_n*omega_ss*H_a_tilde_n_SS*A_ss; 
Z_3=(1-eta_n); 
Z_4=eta_n*theta_n_ss; 
Y_1=1+eta_e*tau_S-(1-eta_e)*delta_e-eta_e*(1-(1/(pai_ss/beta))*(1-rho_x_e))*(gamma_e*tau_S+phi_e); 
Y_2=eta_e*omega_ss*H_a_tilde_e_SS*A_ss; 
Y_3=(1-eta_e); 
Y_4=eta_e*theta_e_ss; 
C_1=-(1/(pai_ss/beta))*((1-eta_n)/(1+eta_n*tau_S))*(gamma_n*tau_S+phi_n);
C_2=(1/(pai_ss/beta))*((1-eta_n)/(1+eta_n*tau_S))*(omega_ss*A_ss*(a_N_n_ss-a_tilde_n_SS)); 
C_3=1/q_theta_n_ss;
D_1=-(1/(pai_ss/beta))*((1-eta_e)/(1+eta_e*tau_S))*(gamma_e*tau_S+phi_e);
D_2=(1/(pai_ss/beta))*((1-eta_e)/(1+eta_e*tau_S))*(omega_ss*A_ss*(a_N_e_ss-a_tilde_e_SS)); 
D_3=1/q_theta_e_ss; 
E_1=-(1+tau_S)*delta_n+(1+(beta/pai_ss)*(1-rho_x_n)*((eta_n*(1+tau_S)*(1-F_a_tilde_n_ss)+(1-eta_n))/(1-eta_n)))*(gamma_n*tau_S+phi_n); 
E_2=omega_ss*A_ss*a_tilde_n_SS+(beta/pai_ss)*(1-rho_x_n)*omega_ss*A_ss*(1-F_a_tilde_n_ss)*(H_a_tilde_n_SS-a_tilde_n_SS); 
E_3=-(eta_n*(1+tau_S)*theta_n_ss)/(1-eta_n); 
E_4=-(1+tau_S);
F_1=-(1+tau_S)*delta_e+(1+(beta/pai_ss)*(1-rho_x_e)*((eta_e*(1+tau_S)*(1-F_a_tilde_e_ss)+(1-eta_e))/(1-eta_e)))*(gamma_e*tau_S+phi_e); 
F_2=omega_ss*A_ss*a_tilde_e_SS+(beta/pai_ss)*(1-rho_x_e)*omega_ss*A_ss*(1-F_a_tilde_e_ss)*(H_a_tilde_e_SS-a_tilde_e_SS); 
F_3=-(eta_e*(1+tau_S)*theta_e_ss)/(1-eta_e); 
F_4=-(1+tau_S); 

%SYSTEM OF EQUATIONS, AX=B 

%X=[w_bar_n w_bar_e k_n k_e h_n h_e] 

A=[Z_1 0 -Z_4 0 -Z_3 0; 0 Y_1 0 -Y_4 0 -Y_3; -C_1 0 C_3 0 0 0; 0 -D_1 0 D_3 0 0; E_1 0 E_3 0 E_4 0; 0 F_1 0 F_3 0 F_4];
B=[Z_2 Y_2 C_2 D_2 -E_2 -F_2]'; 
X=inv(A)*B; 

%FIRING COSTS 
F_n_ss=(gamma_n*tau_S+phi_n)*X(1); 
F_e_ss=(gamma_e*tau_S+phi_e)*X(2);

c_ss=y_ss-X(3)*v_n_ss-X(4)*v_e_ss-0.2*y_ss-(1-rho_x_n)*n_n_ss*F_n_ss-(1-rho_x_e)*n_e_ss*F_e_ss;
w_bar_n_SS=X(1); 
w_bar_e_SS=X(2);
k_N=X(3);
k_E=X(4);
h_N=X(5); 
h_E=X(6); 

b_N=delta_n*w_bar_n_SS; 
b_E=delta_e*w_bar_e_SS; 

rho_n_ss=rho_tot_n_ss;
rho_e_ss=rho_tot_e_ss;
w_N_n_ss=(1/(1+eta_n*tau_S))*(eta_n*(omega_ss*A_ss*a_N_n_ss+k_N*theta_n_ss-(beta/pai_ss)*(1-rho_x_n)*F_n_ss)+(1-eta_n)*(h_N+b_N));
w_N_e_ss=(1/(1+eta_e*tau_S))*(eta_e*(omega_ss*A_ss*a_N_e_ss+k_E*theta_e_ss-(beta/pai_ss)*(1-rho_x_e)*F_e_ss)+(1-eta_e)*(h_E+b_E));


%save('param', 'mu', 'beta', 'tau_s', 'delta_n', 'delta_e', 'eta_n', 'eta_e', 'epsilon', 'phi_p', 'X', 'u_n_ss', 'u_e_ss', 'n_n_ss', 'n_e_ss', 'rho_tot_n_ss', 'rho_tot_e_ss', 'F_a_tilde_n_ss', 'F_a_tilde_e_ss', 'rho_n_ss', 'rho_e_ss', 'p_theta_n_ss', 'p_theta_e_ss', 'q_theta_n_ss', 'q_theta_e_ss', 'v_s_ss', 'v_e_ss', 'pai_ss', 'M_n', 'M_e', 'theta_n_ss', 'theta_e_ss', 'a_n_ss', 'a_e_ss', 'sigma_a_n', 'sigma_a_e', 'a_tilde_n_ss', 'a_tilde_e_ss', 'H_a_tilde_n_ss', 'H_a_tilde_e_ss', 'i_ss', 'omega_ss', 'nu_C_n_ss', 'nu_C_e_ss', 'a_N_n_ss', 'a_N_e_ss', 'a_bar_n_ss', 'a_bar_e_ss', 'K_F_tilde_n', 'K_S_tilde_n', 'K_F_tilde_e', 'K_S_tilde_e'); 
%save('coeff', 'Z_1', 'Z_2', 'Z_3', 'Z_4', 'Y_1', 'Y_2', 'Y_3', 'Y_4', 'C_1', 'C_2', 'C_3', 'D_1', 'D_2', 'D_3', 'E_1', 'E_2', 'E_3', 'E_4', 'F_1', 'F_2', 'F_3', 'F_4', 'X'); 
%save('structural_parameters', 'beta', 'mu', 'M_n', 'M_e', 'epsilon', 'eta_n', 'eta_e', 'tau_s', 'rho_x_n', 'rho_x_e', 'gamma_n', 'gamma_e', 'phi_n', 'phi_e', 'delta_n', 'delta_e', 'A_ss', 'k_N', 'k_E', 'h_N', 'h_E', 'mu_a_n', 'mu_a_e', 'sigma_a_n', 'sigma_a_e', 'a_N_n_ss', 'a_N_e_ss', 'dfN', 'dfE');  
save('steady_state_values', 'H_a_tilde_n_SS', 'H_a_tilde_e_SS', 'a_tilde_n_SS', 'a_tilde_e_SS', 'f_a_tilde_N', 'f_a_tilde_E', 'dfN', 'dfE', 'k_N', 'k_E', 'h_N', 'h_E', 'w_bar_n_SS', 'w_bar_e_SS'); 


ss_ini(1)=n_n_ss;
ss_ini(2)=n_e_ss; 
ss_ini(3)=u_n_ss;
ss_ini(4)=u_e_ss;
ss_ini(5)=m_n_ss;
ss_ini(6)=m_e_ss; 
ss_ini(7)=v_n_ss; 
ss_ini(8)=v_e_ss;
ss_ini(9)=rho_n_ss;
ss_ini(10)=rho_e_ss; 
ss_ini(11)=w_bar_n_SS; 
ss_ini(12)=w_bar_e_SS; 
ss_ini(13)=w_N_n_ss; 
ss_ini(14)=w_N_e_ss;
ss_ini(15)=p_theta_n_ss; 
ss_ini(16)=p_theta_e_ss; 
ss_ini(17)=q_theta_n_ss; 
ss_ini(18)=q_theta_e_ss;
ss_ini(19)=theta_n_ss;
ss_ini(20)=theta_e_ss;
ss_ini(21)=a_tilde_n_SS; 
ss_ini(22)=a_tilde_e_SS; 
ss_ini(23)=omega_ss; 
ss_ini(24)=H_a_tilde_n_SS;
ss_ini(25)=H_a_tilde_e_SS; 
ss_ini(26)=F_a_tilde_n_ss;
ss_ini(27)=F_a_tilde_e_ss;

save('initial_conditions', 'ss_ini'); 












