If there is a model local variable that contains a lead of an endogenous variable, and that model local variable is never used, then Dynare crashes with “an instance of ‘DataTree::UnknownDerivIDException’”.
This happens in 4.1.1 and in the nightly build.
The attached model file demonstrates it. (A massively stripped down version of the model file I was working with.)
To see that the two conditions are above are necessary for the crash, change the first line of the file to:
@#define crash = 0
and rerun. It will then use the model local variable which is sufficient to remove the crash.
Then undo this change, and instead comment out line 44. Now the forward looking local variable does not get defined and again the crash disappears.
Sorry to pester, but is a fix to this in the works? I’m now working with a different model with more model local variables (declared in loops) and tracking down which are unused is a real pain.
For anyone else experiencing this bug, the attached C# programme will trim out all the unused model local variables from an already macro expanded model file, as a temporary work around. (You run dynare with “savemacro” in the command line, wait for the crash, then run this passing in the -macroexp.mod file. You then run dynare on this programmes output.)
It may also be useful to others as it cleans up the -macroexp file making it much more readable.
There’s a small residual bug related to this. Dynare currently adds auxiliary variables for leads and lags (of e.g. exogenous vars) which are only mentioned in the definition of unused model local variables.