% %  the code of my_paper

% define 34 endogenous variables
var y ys yn c cg cc m ls h r lamda zs zn ws wn pi q xi fn fs ns nn k ks kn x kg i ig g a t ui uc; 

% define 4 exogenous variables(from 4 shocks)
varexo e_a e_x e_gi e_gc;

% define parameters
parameters beta sigma_c sigma_l sigma_m alpha_s alpha_n alpha_g delta_i delta_gi phi psi_s psi_n
psi_gi psi_gc sgi sgc alpha_gc vs vn kns knn chi rho_r rho_y rho_pi rho_x rho_gc rho_gi rho_a
ss sn theta lsss lnss se_a se_x se_gc se_gi qss ass piss xiss rss fsss fnss zsss znss cm lsl lnl igss cgss kgss ysss ynss yss
ysy yny ksss knss kss ksk knk zsf znf iss gss cgg igg ccss css ccc cgc ccy cgy iy omega;

% parameter calibration
beta=0.98;         %discount facotr
sigma_c=0.87;
sigma_l=1;
sigma_m=0.8;%sigma_m=1.5;
alpha_s=0.55;
alpha_n=0.35;
alpha_g=0.1;
delta_i=0.1;
delta_gi=0.1;
phi=0.7481;
psi_n=0.05;
psi_s=0.0137;
psi_gi=0.3999;
psi_gc=0.6005;
sgi=0.023283471;
sgc=0.11907112;
alpha_gc=-0.4193;
vs=0.948;
vn=0.9376;
kns=1.3;
knn=1.17;
chi=0.5882;
rho_r=0.75;%rho_r=0.98;
rho_y=0.1;%rho_y=0.78;
rho_pi=1.31;
rho_a=0.7625;
rho_x=0.6562;
rho_gc=0.9282;
rho_gi=0.9493;
ss=1.0036;
sn=1.0079;
theta=3.35;%theta=6;%中间产品的替代弹性
lsss=1;
lnss=10.8;
se_a=0.0096;
se_x=0.0331;
se_gc=0.0919;
se_gi=0.1299;
omega=0.6; %国企产值占比

% the steady-state equilibrium using for the log-linearizzed equations
qss=1;
xiss=(theta-1)/theta;
piss=1;
rss=piss/beta;
fsss=ss*rss/piss;
fnss=sn*rss/piss;
zsss=fsss-1+delta_i;
znss=fnss-1+delta_i;
cm=1/(1-beta); %重新计算一下
lsl=lsss/(lsss+lnss);
lnl=lnss/(lsss+lnss);
igss=sgi*yss;
cgss=sgc*yss;
kgss=igss/delta_gi;
ksys=alpha_s*xiss/zsss;
knyn=alpha_n*xiss/znss;
ysss=(kgss)^(alpha_g/(1-alpha_s))*ksys^(alpha_s/(1-alpha_s))*lsss;%ysss=(sgi/(delta_gi*omega))^(alpha_g/(1-alpha_s-alpha_g))*ksys^(alpha_s/(1-alpha_s-alpha_g))*lsss^(1-alpha_s-alpha_g);
ynss=(kgss)^(alpha_g/(1-alpha_n))*knyn^(alpha_n/(1-alpha_n))*lnss;%ynss=(sgi/(delta_gi*(1-omega))^(alpha_g/(1-alpha_n-alpha_g))*knyn^(alpha_n/(1-alpha_n-alpha_g))*lnss^(1-alpha_n-alpha_g);
yss=ysss+ynss;
ysy=omega;%改为omega
yny=1-omega;%改为（1-omega）
ksss=ksys*ysss;
knss=knyn*ynss;
kss=ksss+knss;
ksk=ksss/kss;
knk=knss/kss;
zsf=zsss/fsss;
znf=znss/fnss;
iss=delta_i*kss;
gss=igss+cgss;
cgg=cgss/gss;
igg=igss/gss;
ccss=yss-iss-cgss-igss;
css=ccss+alpha_gc*cgss;
ccc=ccss/css;
cgc=cgss/css;
ccy=ccss/yss;
cgy=cgss/yss;
iy=iss/yss;
%igy=igss/yss;

% the log-linearized equilibrium system
model;
% household
ws=sigma_l*lsl*ls+sigma_l*lnl*h+sigma_c*c;
wn=sigma_l*lsl*ls+sigma_l*lnl*h+sigma_c*c;
sigma_c*c=sigma_c*c(+1)+pi(+1)-r;
sigma_m*m=cm*sigma_c*c-beta*cm*(sigma_c*c(+1)+pi(+1))/piss;
lamda=lamda(+1)+r;
c=ccc*cc+alpha_gc*cgc*cg;

% wholesale goods producers_state-owned sector
zs=xi+ys-ks;
ws=xi+ys-ls;
ys=alpha_g*kg+alpha_s*ks+(1-alpha_s)*a+(1-alpha_s)*ls;
% wholesale goods producers_private sector
zn=xi+yn-kn;
wn=xi+yn-h;
yn=alpha_g*kg+alpha_n*kn+(1-alpha_n)*a+(1-alpha_n)*h;
% output incorporation
y=ysy*ys+yny*yn;

% retailer
pi=beta*pi(+1)+(1-beta*phi)*(1-phi)*xi/phi;

% bank+producers_state-owned sector
fs=psi_s*(q(-1)+ks-ns)+r(-1)-pi;
fs=zsf*zs+(1-delta_i)*q/fsss-q(-1);
ns(+1)/(vs*fsss)=kns*fs-(kns-1)*(r(-1)-pi)-psi_s*(kns-1)*(ks+q(-1))+(psi_s*(kns-1)+1)*ns;
% bank+producers_private sector
fn=psi_n*(q(-1)+kn-nn)+r(-1)-pi;
fn=znf*zn+(1-delta_i)*q/fnss-q(-1);
nn(+1)/(vn*fnss)=knn*fn-(knn-1)*(r(-1)-pi)-psi_n*(knn-1)*(kn+q(-1))+(psi_n*(knn-1)+1)*nn;

% capital goods manufactures
k=ksk*ks+knk*kn;  % capital incorporation
k=delta_i*(x(-1)+i(-1))+(1-delta_i)*k(-1);
q=chi*(i-k)-x;%q=chi*delta_i*(i-k)-x;

% government sector
kg=delta_gi*ig(-1)+(1-delta_gi)*kg(-1);
t=g;
g=cgg*cg+igg*ig;

% monetary rule
r=rho_r*r(-1)+rho_y*y+rho_pi*pi;
% fiscal rules
ig=(-1)*psi_gi*y+ui;
cg=(-1)*psi_gc*y+uc;

% shock process
a=rho_a*a(-1)+e_a;
x=rho_x*x(-1)+e_x;
ui=rho_gi*ui(-1)+e_gi;
uc=rho_gc*uc(-1)+e_gc;

% market clearing
y=ccss*cc/yss+sgc*cg+iy*i+sgi*ig; %y=ccy*cc+sgc*cg+iy*i+sgi*ig;
end;

%//initval;
%//end;

resid;
check;
steady;

shocks;
var e_a;
stderr se_a;
var e_x;
stderr se_x;
var e_gi;
stderr se_gi;
var e_gc;
stderr se_gc;
end;

stoch_simul(order=1,irf=10) y ys yn c cc k ks kn ls h i r;




 