%% This is the .mod file for the penny project

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                           Preamble                                     %
%               Defining Variables and Parameters                        %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENDOGENOUS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

var c, cp, h, hp, m, n, np, d, l,  w, wp, y, tau, u, up, a, ap, z, xd, xt,
    omega, r, rd, rl, pi, lam1, lam2, lam3, mu, lam;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% EXOGENOUS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

varexo ea, eu, em, eap, eup, et, er, ez, eo, ed;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

parameters beta, betap, eta, xi, theta, chi, 
           delta, alpha, pa, pu, po, pd, pz, pm, pp, pt, sa, su, so, 
           sd, sz, st, sm, sr, r_s;

eta     = 8.0;
chi     = 5.0;
xi      = 0.20;
theta   = 0.50;
beta    = 0.99;
betap   = 0.97;
alpha   = 0.60;
delta   = 0.0625;
pp      = 2.0;
pa      = 0.7;
pu      = 0.7;
po      = 0.50;
pd      = 0.50;
pz      = 0.95;
pt      = 0.75;
pm      = 0.99;
sa      = 0.01*100;
su      = 0.01*100;
so      = log(3);
sd      = 0.01*100;
sz      = 0.01*100;
st      = 0.01*100;
sm      = log(1.005);
sr      = 0.01*100;
r_s     = (1/.99);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                               Model                                    %
%                   All equations in Dynare notation.                    %
%           Here all variables are now considered in log form.           %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

model;

(a) = pa*(a(-1))+ea;

(u) = (1-pu)*STEADY_STATE(u)+pu*(u(-1))+(eu);

exp(m) = (xi^(1/theta)*(exp(mu+n))^((theta-1)/theta)+(1-xi)^(1/theta)*exp(d)^((theta-1)/theta))^(theta/(theta-1));

(mu) = (1-pm)*STEADY_STATE(mu)+pm*(mu(-1))+(em);

(1+exp(tau))*exp(c)+exp(d)+exp(n) = exp(w+h)+exp(rd(-1)+d(-1)-pi)+exp(n(-1)-pi);

exp(c) = (exp(a)-eta*exp(u+c-m)^chi)/(exp(lam1)*(1+exp(tau)));

exp(a)*eta = exp(w+lam1);

exp(m) = (exp(a)*eta*exp(u+c-m)^chi)/exp(lam2);

exp(n) = xi*exp(m)*(exp(mu+lam2)/(exp(lam1)-beta*exp(lam1(+1)-pi(+1))))^theta;

exp(d) = (1-xi)*exp(m)*(exp(lam2)/(exp(lam1)-beta*exp(lam1(+1)-pi(+1)+rd)))^theta;  %10

beta*exp(lam1(+1)-pi(+1)) = exp(lam1-r);

(ap) = pa*(ap(-1))+(eap);

(up) = (1-pu)*STEADY_STATE(up)+pu*(up(-1))+(eup);

(1+exp(tau))*exp(cp)+exp(np)+exp(rl(-1)+l(-1)-pi) = exp(wp+hp)+exp(np(-1)-pi)+exp(l);

exp(cp) = (exp(ap)-eta*exp(up+cp-mu-np)^chi)/(exp(lam3)*(1+exp(tau)));

exp(ap)*eta = exp(wp+lam3);

exp(np) = exp(ap)*eta*exp(up+cp-mu-np)^chi/(exp(lam3)-betap*exp(lam3(+1)-pi(+1)));

betap*exp(lam3(+1)-pi(+1)) = exp(lam3-rl);

exp(l) = (1-exp(omega))*exp(d);

(omega) = (1-po)*STEADY_STATE(omega)+po*(omega(-1))+(eo);    %20

(xd) = (1-pd)*STEADY_STATE(xd)+pd*(xd(-1))+(ed);

exp(rd+lam(+1)-pi(+1)) = exp(omega)+(1-exp(omega))*exp(rl+lam(+1)-pi(+1))-exp(xd);

exp(y) = exp(z)*exp(h)^alpha*exp(hp)^(1-alpha);

(z) = (1-pz)*STEADY_STATE(z)+pz*(z(-1))+(ez);

exp(w) = alpha*exp(y-h);

exp(wp) = (1-alpha)*exp(y-hp);

exp(n)+exp(np) = (exp(xt)-1)*exp(tau)*(exp(c)+exp(cp))+(1-delta)*(exp(n(-1))+exp(np(-1)))/exp(pi);

(xt) = (1-pt)*STEADY_STATE(xt)+pt*(xt(-1))+(et);

r-log(r_s) = pp*pi+(er);

exp(lam) = beta*exp(lam1-lam1(-1));

end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                     Initial Values/Steady States                       %
%              All steady state values are input in log form.            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

initval;

c   = log(0.22890122014367070280016491778952);
cp  = log(0.076731960749886390926732815387368);
h   = log(0.11328858782202078092637975714752);
hp  = log(0.21169006371562598678437439048139);
m   = log(0.9832689308138033990047688348568);
n   = log(0.055304490643685894069037090048369);
np  = log(0.1816954412688489284288806402401);
d   = log(2.1787442566038186519961072917795);
l   = log(2.1024882076226849569877686008113);
w   = log(1.9261805058884025054766198081779);
wp  = log(0.68721307485186156061018891705316);
y   = log(0.36369044900400454567446217879478);
tau = log(0.048464946447297485576655162731186);
u   = log(0.90);
up  = log(0.90);
a   = log(1.0000);
ap  = log(1.0000);
z   = log(2.5);
xd  = log(0.02);
xt  = log(2);
omega = log(0.035);
r   = log(1/0.99);
rl  = log(1/0.97);
rd  = log(1.0099968759762574195563886285536);
pi  = log(1);
lam1= log(4.1532971471488338011113228276372);
lam2= log(0.0032848018215025421608077582646956);
lam3= log(11.641222049979932151586581312586);
mu  = log(1);
lam = log(beta);

end;

resid;
steady(solve_algo = 2);
check;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                            Shocks to the Model                         %
%           The standard deviations are established in the Preamble      %
%           so all we have to do is define the variances.                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

shocks;

var ea = sa^2;
var eu = su^2;
var em = sm^2;
var eap= sa^2;
var eup= su^2;
var et = st^2;
var er = sr^2;
var ez = sz^2;
var eo = so^2;
var ed = sd^2;

end;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%                            Deriving Results                            %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

stoch_simul(order = 1, irf = 20, nograph);








