gboehl / pydsge

A package to simulate, filter, and estimate DSGE models with occasionally binding constraints
MIT License
54 stars 23 forks source link

Solving models and steady state #17

Open trangefr opened 1 year ago

trangefr commented 1 year ago

Hi, as a Python fan and econ grad student I'd like to use this package to do everything that one would do in matlab.

I see that in the getting started example file (dfi.yaml) there is no part where one sets the steady state. I'm trying to understand: 1.) What ss values are being used by default? If I interpret parser.py correctly, ss values are being set as 0 2.) Can I set the steady state manually, for example like it's being done in econpizza package (Using steady_state/ fixed_values/ init_guesses headers). I tried, didn't get an error, but don't know how to check whether this worked. 3.) How can I see the steady state values in the estimated model? 4.) (unrelated), why does policy reacts by loosening if you put in a policy shock (shock_list = ('e_r', 4.0, 0) ) in the example (dfi.yaml) model? And why does every line starts with ~ ?

Many thanks for a wonderful package!

gboehl commented 1 year ago

Hi, great that the package is useful!

1.) What ss values are being used by default? If I interpret parser.py correctly, ss values are being set as 0 2.) Can I set the steady state manually, for example like it's being done in econpizza package (Using steady_state/ fixed_values/ init_guesses headers). I tried, didn't get an error, but don't know how to check whether this worked. 3.) How can I see the steady state values in the estimated model?

pydsge (other than econpizza) assumes that your model is already linearized. That means the steady state is always zero and there is no point to use a steady state other than that.

4.) (unrelated), why does policy reacts by loosening if you put in a policy shock (shock_list = ('e_r', 4.0, 0) ) in the example (dfi.yaml) model?

This is an economics question concerning the magic of general equilibrium. In response to a contractionary interest rate shock (you increase the interest rate), inflation will fall. The central bank responds by lowering the interest rate via the monetary policy rule. In general equilibrium this effect can be so strong that the interest rate actually falls. The shock can thus rather be understood as a wedge added to the monetary policy rule implied interest rate.

And why does every line starts with ~ ?

You need some sort of identifier for a new line without having to re-invent the yaml format. In dynare, this would be ;. I could have chosen something else (the default in yaml format is -, so you could also use that), but I find ~ rather unique.

Cheers, Gregor

trangefr commented 1 year ago

Hi! Many thanks for the quick reply, this was super useful for me and I guess it'll be useful for other people as well. So if I deal with linearized equations I should be fine with sticking to this package. Otherwise, would need to go for econpizza (please shout if I'm missing something). Many thanks!

gboehl commented 1 year ago

Great. Exactly, econpizza can do all the nonlinear stuff.