Cholesky decomposition failed

Dear Professors:

I am currently estimating a Bayesian DSGE model with Dynare 6.2, based on quarterly Japanese macroeconomic data. It satisfies Blanchard Kahn condition, however, I came across errors and warnings as follows:

  1. Cholesky decomposition error (matrix not positive definite)
  2. “Matrix is singular to working precision”.

More details of my model:
I follow the basic structure of New Keynesian model, while I extend the household sector into restricted and unrestricted households to study the market separation hypothesis.
I introduced a transaction cost for unrestricted households to pay when trading long-term bonds.

Data:
I am using 9 time series data.
Real variables (dyobs, piobs, dcobs, diobs, dwobs, dlobs) are log differenced,
Short and long term interest rates (rsobs, rlobs) are level data,
Stock of Japanese government bond holding by central bank (blobs) and it is expressed as the fraction of nominal GDP.

I attach my .mod file, data and other necessary folders.
I greatly appreciate any suggestions. Thank you very much for your guidance.

Bayesian_QE3_model.mod (11.2 KB)
df.csv (15.3 KB)
func.zip (10.6 KB)

  1. Are you sure you handled parameter dependency correctly? Don’t the estimated parameters affect the S_ parameters?
  2. You should have a steady_state_model block instead of initval. For some parameters, there seems to be a problem with steady state finding.
1 Like

Dear Professor:

Thank you very much for your helpful feedback. I deeply apologise for the delayed response. I initially didn’t fully understand your suggestions and needed time to work through the implementation details.

1, Parameter dependency problem: I was calculating the steady state coefficients when doing log linearisation by hand. Therefore, I cannot set them as 0 as in the initval block. While, you are correct that I am unsure whether these ss values are correct or now. In this case, how should I handle them?

2, My current understanding is:

  1. I need to insert steady_state_model block into steady state calibration (SS = steadystate_QE_dy(P)).
  2. Then it recalculate the S_ each time.
    Is my understanding correct?

I would greatly appreciate any additional guidance on the implementation.Your original feedback identified some core issues, but I’m still working through the technical details.

Best regards,

Yes, that is correct. You can use a steady_state_model block to update the dependent parameter or use a model-local variable (the one with the #.)

1 Like