Perfect foreseight simulations with large shocks

Dear community,

I build and extension of ‘A baseline DSGE model’ from Fernandez-Villaverde and Rubio-Ramirez (2006/2020) and would like to run a perfect foresight simulation where a tax (taubar) is phased in in the following way:

var taubar;
periods 1:64 65:1000;
values (transpose(linspace(0.00028,0.01, 64))) 0.01 ;

It works for this example. However, the model cannot handle more ambitious tax paths. To see this, in the attached mod-file, please comment out line 491 and comment in line 492. Running the simulation produces an error ‘Last iteration provided complex number for the following variables: c,’. This is cryptic to me, could somebody explain what this error means and where it potentially originates from? Or, more generally, are there any tricks to improve the model’s ability to handle large shocks in perfect foresight simulations?

Any help is much appreciated.

SLYM2021A.mod (21.5 KB)

Is there a reason you do not provide a proper terminal steady state?

Hello jpfeifer,

no particular reason. I also tried including the endval but it did not seem to improve the simulations.

Can you provide a file with a valid endval-block?

Thank you for looking into this, I appreciate your effort to help. Please find a mod file with endval-block attached.

SLYM2021Aendval.mod (22.8 KB)

It seems to me that your new specification does not have a solution. The simulation always terminates with infeasible values, particularly

Variable r_O (33) returns an undefined value

Might this be due to the rather large shock on taubar or rather due to some other issue with the model? Do you have any feeling about this?

May I ask, how did you get the information

It seems that I am lacking some knowledge on how to generate error reports in dynare. Thank you.

  1. I don’t really know the answer. But you could try whether smaller shocks/perturbations help.
  2. I use the unstable version together with model(block). That generates a bit more output.
  1. The model works well with smaller shocks. Only the large shocks seem to cause the problems. Solving the model for smaller shocks and feeding resulting oo_.endo.simul to the solver for a slightly larger shock (then iterating) works for some steps. But unfortunately not far enough. I am trying to understand why that is, and what specifically is responsible for that.
  2. Thank you.

Point 1 is essentially the idea of homotopy. Dynare already tries that an fails. Can you spot any suspicious behavior in the solution when you move closer to the solution boundary?

I am not entirely sure that I have a good answer at the moment.

The model features three energy sectors (Oil&gas, coal, green energy). I am attempting simulations where a carbon tax (taubar) is phased-in. It seems that solutions become infeasible as soon as the tax leads to a reduction of coal power generation (E_C) by 60 percent compared to the initial steady state. If I exclude the coal sector from being subject to the tax, solutions become infeasible as soon as the oil&gas sector gets close to a 60 percent reduction (E_O). However, in both cases, everything seems to behave well and results make sense.

Do all asset returns also look normal when you move there? That’s where the first problems appeared during the solution attempt.

Yes, they look normal to me. None of them get too close to zero.

For the case where the tax applies to both sectors and production in the coal sector drops by approx. 60%: Rental rates of capital in the coal sector (r_C) drop most, from approx. 1.8% in the initial steady state to approx. 1.1% in the minimum.

Does that still apply if you move as close as possible to the breaking point? The asymptote could simply be very steep.

I’d say so, yes.

Please have a look at the attached figure. It shows the minimum value [min(oo_.endo_simul(34,:))] for returns in the coal sector (r_C) given a final tax level (x-axis) and an associated transition path.

Please note that my statement in the previous post was not correct, the minimum is approx. 0.7% instead of 1.1%.

fig1.eps (77.1 KB)

I mean for all variables. Is there anything suspicious going on?

I just looked at all response functions again and fail to detect anything really suspicious to me. The only things that might be worth mentioning here:

  1. Inflation figures fall such that we get deflation for some periods (I do not see how this should be problematic in this model);
  2. Figures for investment (x_C), capital stock (k_C) and resource use (M_C) drop from relatively low levels to even lower levels. For investment x_C from 0.000089 to 0.0000013. Is already an issue when it comes to rounding?

Potentially, it could be about the second point. Having the capital stock go even slightly negative during solution attempts would typically cause problems.

Dear Prof. Pfeifer,
thank you for continuous effort to help and I apologize for my late reply. Can you tell me, is there a common way to approach this?

First thing that comes to my mind is a variable transformation for capital stocks and/or investment in the FOC for investment and the capital accumulation equation. I am not sure that I am on the right path though.

Thank you

A variable transformation is also the first thing I would try.