close all;
clear all;
%----------------------------------------------------------------
% 1. Defining variables
%----------------------------------------------------------------


var piU, iU, omegabarSU, RkSXU, nSU, qU,
         cU, wU,rkSU,rkBU,kbarBU, hU, kbarSU, ReXU, 
        FpXU, FwXU, RcouponXU,uSU,uBU,  
          KwXU, KpXU,chiU,KtotU,YU,eps_analystU,eps_couponU,RanalystXU,nBU, ntotU,RkBXU,
            btotAU,btotBU,btotSU,levAU,levBU,levSU,CostFinancingSU,SpreadU, lambdanU,PextSU;

varexo   interest_;  

parameters  KtotUU, ntotUU,KwXUU,KpXUU, RcouponXUU, eps_couponUU,levBUU,btotBUU,btotSUU,levSUU,
            piUU, sUU, rkSUU,rkBUU, iUU, uSUU,uBUU, omegabarSUU, RkSXUU,RkBXUU, nSUU,nBUU, qUU, lambdanUU, cUU, wUU, hUU,
            kbarSUU,kbarBUU, ReXUU,  FpXUU, FwXUU, PextSUU,YUU,eps_analystUU, RanalystXUU, chiUU, eps_biasedUU, RbiasedXUU ,  
              gammaSUU,gammaBUU,  sigmaSUU,  sigmaCUU,levAUU,btotAUU,CostFinancingSUU,SpreadUU,stockcapitalUU,gUU;

parameters lambdawUU, sigmaLXUU, betaUU, xiwUU, bUU,lambdafUU,
      psiLXUU, iotaw1UU,  weSUU,weBUU, sigmaaSUU,sigmaaBUU, SdouprXUU,  
      alphaUU, deltaUU, xipUU, iota1UU, etagUU, muUU,
      aptilUU, aytilUU, rhotilUU,
      rhoEIS,etaSE, rho_chi,OMEGA, alpha3, alpha4,KwXflexUU,KpXflexUU,FpXflexUU, FwXflexUU;


%----------------------------------------------------------------
% 2. Calibration
%----------------------------------------------------------------
betaUU=0.9785;
bUU=0.63;
 psiLXUU=36.2;
sigmaLXUU=1;
xiwUU=0.75;
lambdawUU=1.05;
iotaw1UU=0.29;
alphaUU=0.26;
xipUU=0.75;
iota1UU=0.16;
lambdafUU=1.2;
 SdouprXUU=29.3;
deltaUU=0.03;
 rhoEIS=0.6;
sigmaaSUU=18.9;
sigmaaBUU=18.9;
 muUU=0.15;
sigmaSUU=0.5477;
weSUU=0.02;
weBUU=0.02;
gammaSUU=0.97;
gammaBUU=0.96;
etaSE=0.2772;
OMEGA=0.1;
eps_couponUU=510;
rho_chi=0.9;
alpha3=40;
chiUU=0;
rhotilUU=0.88;
aptilUU=1.82;
aytilUU=0.11;
etagUU=0.2;


%----------------------------------------------------------------
% 3. Model (the number refers to the equation in the paper)
%----------------------------------------------------------------

model(linear);

1 - eps_analystU*(RanalystXU-ReXU)/(1+RanalystXU);//c-1  模型变换得到

chiU - rho_chi*chiU(-1) - (1-rho_chi)*(chiUU + alpha3*(nBU-nBUU)); //c-2

eps_couponU - eps_analystU*(1 + chiU); // c-3 

1 - eps_couponU*(RcouponXU-ReXU)/(1+RcouponXU);  //c-4 

eps_couponU - eps_analystU*(1 + chiU); // c-3 

eps_analystU - eps_analystUU - alpha4*(YU(-1)-YUU);
SpreadU - CostFinancingSU + RcouponXU;

rkSU*( (uSU*kbarSU(-1)/(uBU*kbarBU(-1)))^(1-rhoEIS)) - rkBUU*exp(sigmaaBUU*(uBU-1));//c-7

-(rkSU/( alphaUU * ((uSU*kbarSU(-1))^(rhoEIS-1)) *((hU / ( ( etaSE*(uSU*kbarSU(-1))^rhoEIS +(1-etaSE)*(uBU*kbarBU(-1))^rhoEIS)^(1/rhoEIS)))^(1-alphaUU)) * (( etaSE*(uSU*kbarSU(-1))^rhoEIS +(1-etaSE)*(uBU*kbarBU(-1))^rhoEIS))^(1/rhoEIS-1))) + ( (wU/(1-alphaUU))^(1-alphaUU/(rhoEIS+alphaUU-alphaUU*rhoEIS))) * ( ( alphaUU/rkSU*((uSU*kbarSU(-1))^(rhoEIS-1)))^(-alphaUU/(rhoEIS+alphaUU-alphaUU*rhoEIS))) *((((( ( etaSE*(uSU*kbarSU(-1))^rhoEIS +(1-etaSE)*(uBU*kbarBU(-1))^rhoEIS)^(1/rhoEIS))^alphaUU)*(hU ^(1-alphaUU)) ))^(alphaUU*(rhoEIS-1)/(rhoEIS+alphaUU-alphaUU*rhoEIS))) * rhoEIS/(rhoEIS+alphaUU-alphaUU*rhoEIS);//c-8,c-9

KtotU - ( ( etaSE*(uSU*kbarSU(-1))^rhoEIS +(1-etaSE)*(uBU*kbarBU(-1))^rhoEIS)^(1/rhoEIS));//c-10

lambdanU*qU*( 1 - SdouprXUU/2*((iU/iU(-1)-1)^2) - SdouprXUU*iU/iU(-1)*(iU/iU(-1)-1)) - lambdanU + betaUU*lambdanU(+1)*qU(+1)*(SdouprXUU * ((iU(+1)/iU)^2)*(iU(+1)/iU-1));//c-11

etaSE*kbarSU + (1-etaSE)*kbarBU - (1-deltaUU)*(etaSE*kbarSU(-1) + (1-etaSE)*kbarBU(-1)) - (1 - SdouprXUU/2*(iU/iU(-1)-1)^2)*iU;//c-12

rkSU - rkSUU*exp(sigmaaSUU*(uSU-1));//c-13

1+ RkSXU -  piU/qU(-1)*(  uSU*rkSU - rkSUU*(exp(sigmaaSUU*(uSU-1))-1)/sigmaaSUU  + (1-deltaUU)*qU);//c-14

(1- ( normcdf(( (log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU )-sigmaSUU)+omegabarSU(+1)*(1-normcdf(( (log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU ))) ))*(1+RkSXU(+1))/(1+ReXU)  +  ( (1/(omegabarSU(+1)*sigmaSUU))*normpdf(( log(omegabarSU(+1))-sigmaSUU^2/2)/sigmaSUU)+  1 - normcdf(( log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU) - (1/sigmaSUU)*normpdf(( log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU)) / (((1-muUU)/(omegabarSU(+1)*sigmaSUU))* normpdf(( log(omegabarSU(+1))-sigmaSUU^2/2)/sigmaSUU)+ 1- normcdf(( log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU) - (1/sigmaSUU)*normpdf(( log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU))*( (1+RkSXU(+1))/(1+ReXU)*( (1-muUU)*normcdf(( (log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU )-sigmaSUU)+ omegabarSU(+1)*(1-normcdf(( (log(omegabarSU(+1))+sigmaSUU^2/2)/sigmaSUU ))) )-1);//c-15

qU(-1)*kbarSU(-1)*(1+RkSXU)*( (1-muUU)*normcdf(( (log(omegabarSU)+sigmaSUU^2/2)/sigmaSUU )-sigmaSUU) + omegabarSU*(1-normcdf(( (log(omegabarSU)+sigmaSUU^2/2)/sigmaSUU ))) )/(nSU(-1)*(1+ReXU(-1))) - qU(-1)*kbarSU(-1)/nSU(-1) + 1;//c-16

-nSU + gammaSUU/piU*kbarSU(-1)*qU(-1)*(RkSXU-ReXU(-1)-muUU*(normcdf (( log(omegabarSU)-sigmaSUU^2/2)/sigmaSUU))*(1+RkSXU)) + weSUU + gammaSUU*(1+ReXU(-1))*nSU(-1)/piU;//c-17

rkBU - rkBUU*exp(sigmaaBUU*(uBU-1));//c-18

1+ RkBXU -  piU/qU(-1)*(  uBU*rkBU - rkBUU*(exp(sigmaaSUU*(uBU-1))-1)/sigmaaBUU  + (1-deltaUU)*qU);//c-19

RcouponXU- RkBXU-1+1/betaUU;//c-20

-nBU + gammaBUU/piU*kbarBU(-1)*qU(-1)*(RkBXU-RcouponXU(-1)) + gammaBUU/piU*(1+RcouponXU(-1))*nBU(-1) + weBUU; //c-21

-lambdanU + betaUU*(1+ReXU)*lambdanU(+1)/piU(+1);//c-22

lambdanU - ( (cU-bUU*cU(-1))^(-sigmaCUU) ) + bUU*betaUU*( (cU(+1)-bUU*cU)^(-sigmaCUU) );//c-23

YU - gUU - cU - iU  - ( rkSUU*(exp(sigmaaSUU*(uSU-1))-1)/sigmaaSUU )*etaSE*kbarSU(-1) - ( rkBUU*(exp(sigmaaBUU*(uBU-1))-1)/sigmaaBUU )*(1-etaSE)*kbarBU(-1) - muUU* (normcdf (( log(omegabarSU)-sigmaSUU^2/2)/sigmaSUU)) * (1+RkSXU)*qU(-1)*etaSE*kbarSU(-1)/piU;// c-24

YU -  ((KtotU^alphaUU)*(hU ^(1-alphaUU)) ) ;   //  c-25 

lambdanU*YU + betaUU * xipUU *( ( (piU^(1-iota1UU))/piU(+1)) ^ (1/(1-lambdafUU)) ) *  FpXU(+1) - FpXU;//c-26

lambdanU*YU*lambdafUU*(rkSU/( alphaUU * ((uSU*kbarSU(-1))^(rhoEIS-1)) *((hU / ( ( etaSE*(uSU*kbarSU(-1))^rhoEIS +(1-etaSE)*(uBU*kbarBU(-1))^rhoEIS)^(1/rhoEIS)))^(1-alphaUU)) * (( etaSE*(uSU*kbarSU(-1))^rhoEIS +(1-etaSE)*(uBU*kbarBU(-1))^rhoEIS))^(1/rhoEIS-1))) +  betaUU*xipUU*KpXU(+1)* ( ( (piU^(1-iota1UU))/piU(+1))^(-lambdafUU/(lambdafUU-1))) - KpXU;//c-27

hU*(((cU-bUU*cU(-1))^(-sigmaCUU)) - bUU*betaUU*( (cU(+1)-bUU*cU)^(-sigmaCUU)))/lambdawUU +  betaUU * xiwUU *(( (piU^(1-iotaw1UU)))^(1/(1-lambdawUU)))/piU(+1) *( (1/( piU(+1)*wU(+1)/wU )) ^ (lambdawUU/(1-lambdawUU)) ) * FwXU(+1) - FwXU;//c-28

( hU^(1+sigmaLXUU)) + betaUU * xiwUU *((  (piU^(1-iotaw1UU)) /( piU(+1)*wU(+1)/wU ) )^(lambdawUU*(1+sigmaLXUU)/(1-lambdawUU))) *KwXU(+1) - KwXU;//c-29

KpXU - FpXU*( (1-xipUU*( ((piU(-1)^(1-iota1UU))/piU)^(1/(1-lambdafUU))))/(1-xipUU))^(1-lambdafUU);//c-30

KwXU - FwXU*wU/psiLXUU*((1 - xiwUU * ( (  (piU(-1)^(1-iotaw1UU))/( piU*wU/wU(-1) ) ) ^(1/(1-lambdawUU)) ) ) / (1-xiwUU) )^(1-lambdawUU*(1+sigmaLXUU));//c-31

PextSU + (1+ReXU) - omegabarSU(+1)*(1+RkSXU(+1))*qU*kbarSU/(qU*kbarSU-nSU); //c-32

CostFinancingSU - omegabarSU(+1)*(1+RkSXU(+1))*qU*kbarSU/(qU*kbarSU-nSU);//c-33 Z,

ntotU - etaSE*nSU - (1-etaSE)*nBU;//  c-34   

btotSU - qU*kbarSU + nSU;// c-35 btotBU - qU*kbarBU + nBU;//c-36  

levBU - qU*kbarBU/nBU;//as in BGG  // c-37 

levSU - qU*kbarSU/nSU;//as in BGG  // c-38 

levAU - etaSE*levSU - (1-etaSE)*levBU;// c-39 

btotAU - etaSE*btotSU - (1-etaSE)*btotBU;// c-40

ReXU - rhotilUU*ReXU(-1)-(1-rhotilUU)*(ReXUU+aptilUU*(piU(+1)-piUU)+aytilUU*(YU-YUU))+interest_;//c-41
//(1+betaUU*RcouponXU)*qU - betaUU*piU(+1)*(uBU(+1)*rkSU(+1)*( (uSU(+1)*kbarSU/(uBU(+1)*kbarBU))^(1-rhoEIS)) - rkBUU*(exp(sigmaaBUU*(uBU-1))-1)/sigmaaBUU + (1-deltaUU)*qU(+1));
end;

%----------------------------------------------------------------
% 4. Computation
%----------------------------------------------------------------

// Initial values, coinciding with steady-state values 
initval;
   piU = 1;//通货膨胀率
   rkSU = 0.0504;//高风险企业家的租金回报率
   iU = 0.0708;//投资
omegabarSU = 0.2562;
RkSXU = 0.0204;
nSU = 2.4312;//风险企业家的净值
qU = 1;//资本的影子价格
cU = 0.3047;//消费
wU = 2.0978;//真实工资
hU = hUU;//就业水平
kbarSU =3.2726  ;//安全企业家的资本存量
kbarBU = 2.3706;//风险企业家的资本存量
ReXU = 0.0127;//企业家的贷款利率
FpXU = 6.1983;//
FwXU = 2.2768;
KwXU = 0.1319;
KpXU = 6.1983;
RcouponXU = 0.0146;//息票率，债券收益率
chiU=0;
KtotU=2.6089;//
YU=0.4796;//产出
eps_analystU=510;
eps_couponU=510;//资金需求的利率弹性
RanalystXU=0.0146;
nBU=1.8817;//安全企业家的净值
//stockcapitalU=stockcapitalUU;//资本存量  
ntotU=2.034;//加总的净值
uSU=1;//高风险企业家的资本利用率
uBU=1;//安全企业家的资本利用率
RkBXU=0.0273;
levBU = 1.2598;//高风险企业的杠杆率
levSU = 1.3461;//安全企业的杠杆率
btotBU = 0.4889;//高风险企业的总贷款量
btotSU = 0.8414;//安全企业的总贷款量
levAU= 1.2837;//加总的杠杆率
btotAU=0.5866;//加总的贷款量
CostFinancingSU = 1.0166;//安全企业的融资成本
SpreadU= 1.0020;
lambdanU=3.3521;
PextSU=0.0039;

end;

check;
steady;

shocks;

var interest_; stderr 0.01;
end;

stoch_simul(order=1,irf=40);