%%Simple two-country model developed by Kronick (2014)
%Symmetric in the equations that describe the two economies.
%Assumptions:
    % Incomplete asset markets with adjustment costs to holding
    % foreign bonds
    % All firms are the same in a given country so solve for aggregate
    % economy profit.
    % Both countries follow a Taylor rule where I evaluate an AR(1) shock
    % with persistence coming from the foreign economy.
    % All parameters apply to both countries.
    

%Declare endogenous variables
var c m p l b_h b_f k w r_k i s u tau c_star m_star p_star l_star b_hstar b_fstar k_star w_star r_kstar i_star s_star tau_star u_star;

%Decalre the exogenous variable which is just the foreign monetary policy
%shock
varexo e e_star;

%Paramters (COME BACK FOR FOREIGN)
parameters I I_star omega delta rho g q_pi q_y sigma beta chi eps eta alpha a phi c_ss c_star_ss m_ss m_star_ss p_ss p_star_ss l_ss l_star_ss w_ss w_star_ss r_kss r_kstar_ss i_ss i_star_ss s_ss s_star_ss u_ss u_star_ss k_ss k_star_ss b_hss b_hstar_ss b_fss b_fstar_ss;

%Parameter values

%Investment is fixed each period
I = 0.19;
I_star = 0.19;
%As omega goes to infinity economy is financially isolated from the rest of
%the world whereas if it goes towards zero it is completely financial
%integrated.  I use estimated number from Demirel.
omega =13.41;
%capital depreciates at constant rate delta.
delta = 0.021;
%rho governs the importance of capital adjustment costs.
rho = 8;
%g is the interest rate smoothing parameter. For now I will use US taylor rule figures.  
g = 0.94;
%q_pi and q_y represent by how much central banks adjust the interest rate
%to deviations of price level and GDP from previous levels/steady states.
%For not I will use US taylor rule figures.
q_pi = 0.069;
q_y = 0.22;
%intertemporal elasticity of substitution is 1/sigma
sigma = 2.5;
%subjective discount factor which determines how future consumption is
%valued in terms of today's utility.
beta = 1/1.01;
%chi and eta govern relative importance of real money balances and leisure
%compared to consumption in the utility function.
chi = 1;
eta = 2.8;
%eps is related to money demand elasticities.
eps = 2.5;
%alpha determines the relative income share of capital and labor.
alpha = 1/3;
%technology (NEED TO FIND A REFERENCE)
a = 1;
%Shock persistence.
phi = 0.5;

%SS parameter equations

%Guesses
b_hss = 0.2;
b_fss = 0.2;
b_hstar_ss = -0.2;
b_fstar_ss = -0.2;
c_ss = 0.76;
c_star_ss = 0.76;
l_ss = 0.3;
l_star_ss = 0.3;
s_ss = 1;
s_star_ss = 1;
k_ss = 9;
k_star_ss = 9;


%%Equation solve

%HOME
i_ss = 1/beta-1;
r_kss = 1/beta-1+delta;
p_ss = (alpha*a*(l_ss/k_ss)^(1-alpha))/r_kss;
m_ss = p_ss*(chi*c_ss^sigma*((1+i_ss)/i_ss))^(1/eps);
w_ss = p_ss*(eta*c_ss^sigma)/(1-l_ss);
u_ss = (1-g)*i_ss; 

%FOREIGN
i_star_ss = 1/beta-1;
r_kstar_ss = 1/beta-1+delta;
p_star_ss= (alpha*a*(l_star_ss/k_star_ss)^(1-alpha))/r_kstar_ss;
m_star_ss = p_star_ss*(chi*c_star_ss^sigma*((1+i_star_ss)/i_star_ss))^(1/eps);
w_star_ss = p_star_ss*(eta*c_star_ss^sigma)/(1-l_star_ss);
u_star_ss = (1-g)*i_star_ss;

model;

%%HOME EQUATIONS
%%My utility function is U = E_t*(sum(t=0 to INF)*beta^t(c^(1-sigma)/(1-sigma)+chi/(1-eps)*(m/p)^(1-eps)+eta*ln(1-l))

%Resource constraint
p*c+p*I+m+b_h+s*(b_f+(omega/2)*(b_f-b_fss)^2)+p*tau = w*l+r_k*p*k(-1)+m(-1)+(1+i)*b_h(-1)+(1+i_star)*s*(b_f(-1)+(omega/2)*(b_f(-1)-b_fss)^2);

%Law of motion for capital
k=(1-delta)*k(-1)+I-((rho/2)*(k-k(-1))^2/k(-1));

%Taylor rule
i = g*i(-1)+q_pi*(p-p(-1))+q_y*(a*k^alpha*l^(1-alpha)-a*k(-1)^alpha*l(-1)^(1-alpha))+u;
u = phi*u(-1)+e;

%FOC

%Consumer
c^-sigma/p = beta*((c(+1)^-sigma/p(+1))*(1+i(+1)));
m/p = (chi*(c^sigma)*((1+i(+1))/i(+1)))^(1/eps);
w/p = (eta*c^sigma)/(1-l);
c^-sigma*(1+rho*((k-k(-1))/k(-1))) = beta*(c(+1)^-sigma*(1-delta+r_k(+1)+(rho/2)*((k(+1)^2-k^2)/k^2)));
(1+i(+1))*(c(+1)^-sigma/p(+1)) = (1+i_star(+1))*(c(+1)^-sigma/p(+1))*(s(+1)/s);

%Firms
p*r_k = alpha*a*(l/k)^(1-alpha);
w = (1-alpha)*a*(k/l)^alpha;

%Money market equilibrium
m-m(-1)=p*tau;

%Bonds market equilibrium
b_h = -1*b_hstar;

%%FOREIGN EQUATIONS
%%My utility function is U_star = E_t*(sum(t=0 to INF)*beta^t(c_star^(1-sigma)/(1-sigma)+chi/(1-eps)*(m_star/p_star)^(1-eps)+eta*ln(1-l_star))

%Resource constraint
p_star*c_star+m_star+p_star*I_star+b_fstar+(s_star)*(b_hstar+(omega/2)*(b_hstar-b_hstar_ss)^2)+p_star*tau_star = w_star*l_star+r_kstar*p_star*k_star(-1)+m_star(-1)+(1+i_star)*b_fstar(-1)+(1+i)*(s_star)*(b_hstar(-1)+(omega/2)*(b_hstar(-1)-b_hstar_ss)^2);

%Law of motion for capital
k_star=(1-delta)*k_star(-1)+I_star-((rho/2)*(k_star-k_star(-1))^2/k_star(-1));

%Taylor rule
i_star = g*i_star(-1)+q_pi*(p_star-p_star(-1))+q_y*(a*k_star^alpha*l^(1-alpha)-a*k_star(-1)^(alpha)*l(-1)^(1-alpha))+u_star;
u_star = phi*u_star(-1)+e_star;


%FOC

%Consumer
c_star^-sigma/p_star = beta*((c_star(+1)^-sigma/p_star(+1))*(1+i_star(+1)));
m_star/p_star = (chi*(c_star^sigma)*((1+i_star(+1))/i_star(+1)))^(1/eps);
w_star/p_star = (eta*c_star^sigma)/(1-l_star);
c_star^-sigma*(1+rho*((k_star-k_star(-1))/k_star(-1))) = beta*(c_star(+1)^-sigma*(1-delta+r_kstar(+1)+(rho/2)*((k_star(+1)^2-k_star^2)/k_star^2)));
(1+i_star(+1))*(c_star(+1)^-sigma/p_star(+1)) = (1+i(+1))*(c_star(+1)^-sigma/p_star(+1))*(s_star(+1)/s_star);

%Firms
p_star*r_kstar = alpha*a*(l_star/k_star)^(1-alpha);
w_star = (1-alpha)*a*(k_star/l_star)^alpha;

%Money market equilibrium

m_star-m_star(-1)=p_star*tau_star;

%Bonds market equilibrium
b_f = -1*b_fstar;
end;

initval;

%Choosing my initial values.  Use equations from parameters above.
%Predetermined variables (FIND REFERENCE FOR SOME NOT SPECIFIED)

%consumption (from Dynare RBC example)
c = c_ss;
c_star = c_star_ss;

%money (FIND REFERENCE)
m = m_ss;
m_star = m_star_ss;

%price level (FIND REFERENCE)
p = p_ss;
p_star = p_star_ss;

%labor (from RBC Dynare example)
l = l_ss;
l_star = l_star_ss;

%bond holdings (FIND REFERENCE)
b_h = b_hss;
b_hstar = b_hstar_ss;
b_f = b_fss;
b_fstar = b_fstar_ss;

%wage (Practice Dynare Ryoo and Rosen (2004))
w = w_ss;
w_star = w_star_ss;

%rental rate of capital (FIND REFERENCE)
r_k = r_kss;
r_kstar = r_kstar_ss;

%interest rate identical (FIND A REFERENCE).
i = i_ss;
i_star = i_star_ss;

%exchange rate (FIND A REFERENCE)
s = s_ss;
s_star = s_star_ss;

%tax rate (FIND A REFERENCE)
tau = 0;
tau_star = 0;

%initial IR change level (FIND A REFERENCE)
u = u_ss;
u_star = u_star_ss;

%capital stock from Dynare's RBC example.
k = k_ss;
k_star = k_star_ss;


end;

steady;

check;

shocks;
var e_star;
stderr 1;
end;

stoch_simul(periods = 2100);

