6231 7

[DSGE讨论专题] dynare中BK条件不满足怎么解决 [推广有奖]

  • 0关注
  • 0粉丝

本科生

59%

还不是VIP/贵宾

-

威望
0
论坛币
438 个
通用积分
1.2000
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1117 点
帖子
22
精华
0
在线时间
183 小时
注册时间
2017-5-1
最后登录
2024-3-15

楼主
Mr.Cheng被占用 发表于 2018-9-7 10:39:40 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我按照GK2010的论文用dynare模拟结果,运行之后显示“The rank condition ISN'T verified!”以及“Blanchard Kahn conditions are not satisfied: indeterminacy due to rank failure”,请各位大佬指点!
代码如下:
var y k c z l uc r qi i phin ni nn n d qbar phii nu omegai omegan mui qn rkii rkin rkni rknn wuc wc wi womegai womegan wrkii wrkin wrkni wrknn a psi phic psig;
varexo ea epsi;
parameters alpha gamma beta pii pin chi epsilon theta xi rhoa rhopsi sigmaa sigmapsi delta sigma kappa C Y Z I Ni Nn K Qn RKin RKii N D Qbar MUi PHIi PHIn OMEGAi OMEGAn NU RKni RKnn etac etauc etai etaomegai etaomegan etarkii etarkin etarkni etarknn nug;
alpha = 0.33;
gamma = 0.5;
beta = 0.99;
pii = 0.25;
pin = 1-pii;
chi = 5.013;
epsilon = 0.1;
theta = 0.1288;
xi = 0.0019;
rhoa=0.95;
sigmaa=0.02;
rhopsi=0.66;
sigmapsi=-0.05;
delta = 0.025;
sigma = 0.972;
kappa = 1;
C = 3.2706;
Y = 4.1817;
Z = 0.0379;
I = 0.9110;
Ni = 2.2781;
Nn = 6.8323;
K = 36.4417;
Qn = 1.0094;
RKin = 1.0220;
RKii = 1.0129;
N = 9.1104;
D = 27.3313;
Qbar = 1.0070;
MUi = 0.0050;
PHIi = 4.2991;
PHIn = 3.9369;
OMEGAi = 0.5661;
OMEGAn = 0.5207;
NU = 0.5321;
RKni = 1.0034;
RKnn = 1.0125;
etac = 0;
etauc = 0;
etai = 0;
etaomegai = 0;
etaomegan = 0;
etarkii = 0;
etarkin = 0;
etarkni = 0;
etarknn = 0;
nug =0;

model(linear);
y = a + alpha*k +(1-alpha)*l;  // prod f
k(+1) - psi(+1) = (1-delta)*k+delta*i;  // k accum
y -C/Y*c -I/Y*i=0;  // mkt clearing
z -a - (1-alpha)*l+(1-alpha)*k=0;  // k gross return
l - 1/(epsilon + alpha)*a - alpha/(epsilon + alpha)*k - 1/(epsilon + alpha)*uc=0;  // labor
(1-beta*gamma)*(1-gamma)*uc + (1+beta*gamma^2)*c - (beta*gamma)*wc = gamma*c(-1);  // mg U of C
r - uc + wuc = 0;  // risk-free rate
qi -(1-beta)*kappa*i - beta*kappa*wi = -kappa*i(-1); // qi
qi + delta/(delta+pii*(1-delta))*i + pii*(1-delta)/(delta+pii*(1-delta))*k - phic- ni=0;  // investment demand
qn + k -phin - nn =0; // leverage of n-banks
ni - (sigma+xi)*pii*K*Z/Ni*z - (sigma+xi)*pii*K*(1-delta)/Ni*qi -(sigma+xi)*pii*K*RKii/Ni*k(-1) = -sigma*pii*D/(beta*Ni)*r - sigma*pii*D/(beta*Ni)*d(-1); // net worth of i-banks
nn -(sigma+xi)*pin*K*Z/Nn*z -(sigma+xi)*pin*K*(1-delta)*Qn/Nn*qn -(sigma+xi)*pin*K*RKin/Nn*k(-1) = -sigma*pin*D/(beta*Nn)*r - sigma*pin*D/(beta*Nn)*d(-1);  // net worth of n-banks
n -Ni/N*ni-Nn/N*nn = 0;  // Aggregate net worth
D*d -Ni*PHIi*phic - (PHIi-1)*Ni*ni - PHIn*Nn*phin - (PHIn-1)*Nn*nn = 0;   // debt
qbar -pii/Qbar*qi - pin*Qn/Qbar*qn = 0;  // qbar
phii - nu - MUi/(theta-MUi)*mui = 0;  // phii (leverage of i-banks)
(pii*OMEGAi+pin*OMEGAn)*nu - pii*OMEGAi*womegai - pin*OMEGAn*womegan = 0;  // nu
omegai -(sigma*theta*PHIi)/(1-sigma+sigma*theta*PHIi)*phii = 0;   // omega_i
omegan -sigma*NU/(1-sigma+sigma*NU)*nu = 0;  // omega_n
MUi*mui -pii*OMEGAi*beta*RKii*wrkii-pin*OMEGAn*beta*RKin +beta*(pii*OMEGAi*RKii+pin*OMEGAn*RKin)*r -pii*OMEGAi*(beta*RKii-1)*womegai -pin*OMEGAn*(beta*RKin-1)*womegan =0;  // mui
pii*OMEGAi*beta*RKni*wrkni +pin*OMEGAn*beta*RKnn*wrknn -(pii*OMEGAi*beta*RKni+pin*OMEGAn*beta*RKnn)*r + pii*OMEGAi*(beta*RKni-1)*womegai +pin*OMEGAn*(beta*RKnn-1)*womegan = 0;  // mun=0
rkii(+1) - psi(+1) -Z/(Z+1-delta)*z(+1) - (1-delta)/(Z+1-delta)*qi(+1) = -qi;   // rkii
rkin(+1) - psi(+1) -Z/(Z+(1-delta)*Qn)*z(+1) -(1-delta)*Qn/(Z+(1-delta)*Qn)*qn(+1) = -qi;  // rkin
rkni(+1) - psi(+1) -Z/(Z+1-delta)*z(+1) -(1-delta)/(Z+1-delta)*qi(+1) = -qn;  // rkni
rknn(+1) - psi(+1) -Z/(Z+(1-delta)*Qn)*z(+1) -(1-delta)/(Z+(1-delta)*Qn)*qn(+1) = -qn;  // rknn
c = wc(-1) + etac;  // wc
uc = wuc(-1) +etauc;  // wuc
i = wi(-1) +etai;  // wi
omegai = womegai(-1) +etaomegai;  // womegai
omegan = womegan(-1) +etaomegan;  // womegan
rkii(+1) = wrkii +etarkii(+1);  // wrkii
rkin(+1) = wrkin +etarkin(+1);  // wrkin
rkni(+1) = wrkni +etarkni(+1);  // wrkni
rknn(+1) = wrknn +etarknn(+1);  // wrknn
a = rhoa*a(-1) +sigmaa*ea;  //a
psi = rhopsi*psi(-1)+sigmapsi*epsi;  //psi
phic - phii -psig = 0;  // effective leverage of investing banks
psig -nug*pii*RKii*wrkii -nug*pin*RKin*wrkin + nug/beta*r = 0;  // policy response to spread
end;
initval;
y = 0;
k = 0;
c = 0;
z = 0;
l = 0;
uc = 0;
r = 0;
qi = 0;
i = 0;
phin = 0;
ni = 0;
nn = 0;
n = 0;
d = 0;
qbar = 0;
phii = 0;
nu = 0;
omegai = 0;
omegan = 0;
mui = 0;
qn = 0;
rkii = 0;
rkin = 0;
rkni = 0;
rknn = 0;
wuc = 0;
wc = 0;
wi = 0;
womegai = 0;
womegan = 0;
wrkii = 0;
wrkin = 0;
wrkni = 0;
wrknn = 0;
a = 0;
psi = 0;
phic = 0;
psig = 0;
end;
steady;
check;
shocks;
var ea = sigmaa^2;
var epsi = sigmapsi^2;
end;

stoch_simul;

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 1 人评分经验 论坛币 收起 理由
linmengmiki + 20 + 20 鼓励积极发帖讨论

总评分: 经验 + 20  论坛币 + 20   查看全部评分

沙发
Mr.Cheng被占用 发表于 2018-9-7 10:40:43
运行结果显示:
There are 9 eigenvalue(s) larger than 1 in modulus
for 9 forward-looking variable(s)

The rank condition ISN'T verified!

Warning: Log of zero.
> In dyn_first_order_solver at 270
  In stochastic_solvers at 267
  In resol at 144
  In stoch_simul at 89
  In LGK at 528
  In dynare at 235
??? Error using ==> print_info at 48
Blanchard Kahn conditions are not satisfied: indeterminacy due to rank
failure

Error in ==> stoch_simul at 100
    print_info(info, options_.noprint, options_);

Error in ==> LGK at 528
info = stoch_simul(var_list_);

Error in ==> dynare at 235
evalin('base',fname) ;

藤椅
ddx2009 发表于 2018-9-9 18:53:59
模型是不是自己写的?可能是模型本身有问题,需要改。(但具体是哪一个/哪几个方程有问题,无法直接看出来。)有时候是参数赋值的问题,可能有些参数在某一个范围内BK条件是满足的,但是超出了某一个范围,就不行了。当然,也有可能模型和参数没问题,是你dynare代码打字的时候打错字了,可以自己先认真检查下看看排除这个可能性。

如果是从某一个经典模型改编过来的,可以采取如下方式尝试:
先把那个原始模型的dynare代码编出来,然看是否能运行。如果能运行,再往上面一个一个添加方程或者改方程,这样就有可能找到出问题的地方。

板凳
ddx2009 发表于 2018-9-9 18:56:40
看了你的代码,感觉你这个方程的timing可能有问题,具体可以参见dynare的说明手册中的相关资料。
k(+1) - psi(+1) = (1-delta)*k+delta*i;  // k accum

报纸
Mr.Cheng被占用 发表于 2018-9-10 15:43:48
ddx2009 发表于 2018-9-9 18:56
看了你的代码,感觉你这个方程的timing可能有问题,具体可以参见dynare的说明手册中的相关资料。
k(+1) -  ...
谢谢老师的耐心回复。我是直接用的原程序,原程序是matlab,我把它改写成了dynare。我把模型都表示成了线性化的模式(原matlab里面有),然后把参数换成了稳态值,结果还是不满足BK条件。

地板
ddx2009 发表于 2018-9-11 13:16:55
Mr.Cheng被占用 发表于 2018-9-10 15:43
谢谢老师的耐心回复。我是直接用的原程序,原程序是matlab,我把它改写成了dynare。我把模型都表示成了线 ...
感觉你dynare代码中涉及到state variable的几个方程的timing可能有问题

7
Carson~~ 在职认证  发表于 2018-9-17 12:38:58
一般都是Timing的问题,forward-looking variables多改改,参数值多调一调,应该能够解决,多试几次推荐Dynare forum,上面很多大神~
醉卧云端仰天笑,挥剑当歌越今朝

8
gengshen007 发表于 2021-7-8 15:34:01
楼主,你好!请问解决了没?我现在也是遇到这种情况!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
扫码
拉您进交流群
GMT+8, 2026-2-7 23:05