It still can run but the rank condition isn't verified! why?

Dear Pro. Pfeifer,
I wrote a dynare code about the housing market. I’ve already know which parameter(miu) cause indeterminacy or multiple equilibrium. But the interesting thing is that although the rank condition isn’t verified, the estimation could still work. Could you please explain the reason.

"…EIGENVALUES:
Modulus Real Imaginary

           0                0                0
   7.659e-16        7.659e-16                0
      0.4437           0.3961           0.1999
      0.4437           0.3961          -0.1999
      0.4893           0.4893                0
         0.6              0.6                0
         0.6              0.6                0
         0.6              0.6                0
         0.6              0.6                0
         0.6              0.6                0
      0.6223           0.6223                0
      0.9449           0.9445          0.02866
      0.9449           0.9445         -0.02866
       1.002           -1.002                0
       1.011            1.011                0
       1.046            1.046                0
       1.079            1.079                0
       1.581            1.581                0
       2.069            2.069                0
        3.93             3.93                0
   1.333e+16        1.333e+16                0
   3.308e+17       -3.308e+17                0

There are 9 eigenvalue(s) larger than 1 in modulus
for 8 forward-looking variable(s)

The rank condition ISN’T verified!

Loading 72 observations from china_data.m

Initial value of the log posterior (or likelihood): -909.1994
Gradient norm 23658.2118
Minimum Hessian eigenvalue 0.10647
Maximum Hessian eigenvalue 25801699.2611

Iteration 1
Correct for low angle: 0.000547277
Predicted improvement: 209.449621809
lambda = 1; f = 909.1996753
lambda = 0.33333; f = 909.1993733
lambda = 0.11111; f = 866.9606148
lambda = 0.2148; f = 909.1993606
lambda = 0.14463; f = 857.1288476…"

Here are the attachments including code and data.

Best!
Thank you
Zixiang Zhu
LWZ_Estimation.mod (6.32 KB)
china_data.m (4.14 KB)

My best guess would be that bayesian estimation is based on maximising the posterior distribution (i.e. likelihood based on prior distribution), which is independent of the stability conditions associated with the Jacobian. All that matters is that the disturbances are Gaussian, which they are by default (unless you specify otherwise). But you won’t obtain any irfs, because they will be divergent.

However, Johannes always advises people to run the model without estimation first, because what’s the point in estimating a model if the results are all over the place? As usual, one of the variables you specify as forward-looking (FL) needs to be backward-looking (BL). Or what’s less likely is that your calibrated parameters (the ones you do not estimate) are inducing an eigenvalue less than unity. My advice would be to make sure you get the timing right. Most often, the timing seems fine on paper when you’re deriving the FOCs, but you have to re-think the timing of the model once you get to the simulation stage. Also, don’t start changing the timings in an ad hoc way, because if you specify some variables as FL (BL) while they should be BL (FL), chances are you will obtain oscillating irfs.

No, the reason is quite simple. The check command is based on the parameters you provide before the model block. At those values, the Blanchard-Kahn conditions are not satisfied. In contrast, estimation is started at the prior mean (unless you specify anything else). At this parameter set the model satisfies the BK conditions. As estimation will reject all parameter vectors that do not satisfy these conditions, you will never move into the problematic region of the prior space.