I am trying to use the dynareOBC to compare the utilities with and without the ZLB constraint. The model I use is the baseline New Keynesian model of Jordi Galí (2015) Chapter 5 (with the help of the dynare codes provided by Professor Johannes Pfeifer).

It seems quite odd that the moments of the simulated variable for utility are exactly the same under the models with and without the ZLB. Gali3OBC_dscntshk_dobc.mod (5.0 KB)

I also checked the moments of the utility by using the dynare perfect foresight simulation, and the utility under the ZLB is lower than that without the ZLB.

Are there any reasons why I get identical utility values when using the dynareOBC?

The simulated path for the interest rate does hit the ZLB occasionally.

Here’s a plot of the simulated path for the gross interest rate under the model without accounting for the ZLB constraint, with a Taylor rule of the form: R=1/betta*Pi^phi_pi*(Y/steady_state(Y))^phi_y;

After running the simulation with 1000 periods (order=2, drop=100, pruning), dynareOBC reports the moments of the simulated variables. I used a non-linear model in this simulation, with utility defined in recursive form: Util = ( C ^ ( 1 - siggma) ) / ( 1 - siggma) - N ^ ( 1 + varphi) / (1 + varphi) + betta * Util(+1);
The reported moments for the simulated variables (including the utility) under the models without and with ZLB are, respectively:
Without ZLB:

The mean of gross interest rate R is higher and the consumption lower under the model with ZLB, but the moments for the price dispersion S and utility Util are exactly the same.

Here’s a more simplified version of the mod file I attached in the first post. Gali3OBC_dobc.mod (3.3 KB)

This doesn’t look like a DynareOBC issue. Without the ZLB, consumption and hours are higher than with the ZLB. By some weird coincidence, the two happen to offset in approximated utility. It is so perfect it has to be a result that could be proved theoretically. Still, it probably disappears with more accurate approximations, e.g. turning on cubature, or making utility an MLV and using DynareOBC’s MLV simulation option (you can get rid of the + betta * Util(+1) term as you’re just looking at average utility anyway).

Thank you very much for your suggestion. Both options on cubature and MLV simulation didn’t change the results. I’m currently using other models and simulations to check if the results above are actually model-driven. I’ll come back to you if I still see similar issues in other models.