# Correct specification of fiscal rules in a non-stationary environment

Hi, I was wondering how to correctly specify fiscal rules in a non-stationary environment with TFP trend, when using Dynare’s deflating capabilities?

Usually, fiscal rules are specified to be activated if there are some deviation from the steady-state:

T_t =\rho T_{t-1} + (1-\rho) \bar{T} + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(g_t -\bar{g})+e_t

But to my understanding, if I am using deflator of Dynare, s.t. var(deflator=z) Tt gt Bt; Dynare will assume the rule of this form
\frac{T_t}{z_t} =\rho \frac{T_{t-1}}{z_{t-1}}\frac{z_{t-1}}{z_t} + (1-\rho) \bar{T} \frac{1}{z_t} + \phi_b \frac{1}{z_t}\left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(\frac{g_t}{z_t} -\frac{\bar{g}}{z_t})+e_t

which seems rather unusual rule. Please correct me if I am wrong, but to recover the “conventional” rule, does one should already detrend the rule even though command var(deflator=z) Tt gt Bt; is used?

\frac{T_t}{z_t} =\rho \frac{T_{t-1}}{z_{t-1}} + (1-\rho) \bar{T} + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(\frac{g_t}{z_t} -\bar{g})+e_t

Note that for \bar{T}, I am using steady_state(T), that comes from the steady-state file (already detrended).

Also, could you happen to know some papers that specify fiscal rules in a non-stationary environment?

Thanks a lot!

1 Like

I would need to check what happens in this case. Can you provide me with the file? I guess that T(-1) would be detrended by z(-1), so that would not be an issue. But I would like to check what happens with the steady state operator.

I’ve send you via private message. Thanks

As of Dynare 5, when you use steady_state(T) where T trends with

trend_var(growth_factor=gz) z;
var(deflator=z) T


it will use the steady state of the detrended T. Denote with a tilde the detrended stationary objects and with a bar the steady state. steady_state(T) will use \bar {\tilde{T}}= steady\_state\left(\frac{T_t}{z_t}\right). In contrast, if you use steady_state(T(-1)) it will use \bar{\tilde{T_{-1}}}=steady\_state\left(\frac{T_{t-1}}{z_t}\right)=steady\_state\left(\frac{\tilde{T_{t-1}}}{gz_t}\right)=\frac{\tilde T}{gz}.
Put differently, an equation will always be divided by the respective time t trends and the required growth factors for variables containing other trend timings are preserved when applying the steady_state()-operator to variables with a different timing.

Note that you can inspect the transformed model using write_latex_dynamic_model.

Thank you a lot for taking a look at this.

But what about endogenous variables? Similarly to what I was saying in the previous post for the specification of the fiscal rule:

T_t =\rho T_{t-1} + (1-\rho) \bar{T} + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(g_t -\bar{g})+e_t

After your clarification, dynare exchanges steady state terms in the following way

T_t =\rho T_{t-1} + (1-\rho) steadystate(\frac{T}{z_t}) + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(g_t - steadystate(\frac{\bar{g}}{z_t}))+e_t

Does dynare use the same adjustment for endogenous variables as it uses for variables with the steady_state operator? Meaning that it recompiles:

T_t as \frac{T_t}{z_t} and T_{t-1} as \frac{T_{t-1}}{z_t}=\frac{T_{t-1}}{z_{t-1}}\frac{1}{gz_{t}}

In this case, the rule becomes as follows:

\frac{T_t}{z_t} =\rho \frac{T_{t-1}}{z_{t-1}}\frac{1}{gz_{t}} + (1-\rho) steadystate(\frac{T}{z_t}) + \phi_b \left(\frac{\frac{B_{t-1}}{z_{t-1}}\frac{1}{gz_{t}}}{\frac{Y_{t-1}}{z_{t-1}}\frac{1}{gz_{t}}} - \bar{\frac{B}{Y}} \right) +\phi_g(\frac{g_t}{z_t} - steadystate(\frac{\bar{g}}{z_t}))+e_t

Because I thought that what Dynare does for endogenous variables is follow the same approach as how researchers would manipulate the equation:
T_t as T_t \frac{z_t}{z_t}=\frac{T_t}{z_t} z_t and T_{t-1} as T_{t-1} \frac{z_{t-1}}{z_{t-1}}=\frac{T_{t-1}}{z_{t-1}} z_{t-1}

In this case, I would suspect that the rule becomes:
\frac{T_t}{z_t} z_t =\rho \frac{T_{t-1}}{z_{t-1}} z_{t-1} + (1-\rho) steadystate(\frac{T}{z_t}) + \phi_b \left(\frac{\frac{B_{t-1}}{z_{t-1}}z_{t-1}}{\frac{Y_{t-1}}{z_{t-1}}z_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(\frac{g_t}{z_t}z_t - steadystate(\frac{\bar{g}}{z_t}))+e_t
that can be simplified to
\frac{T_t}{z_t} =\rho \frac{T_{t-1}}{z_{t-1}} \frac{1}{gz_t} + (1-\rho) steadystate(\frac{T}{z_t})\frac{1}{z_t} + \phi_b\frac{1}{z_t} \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(\frac{g_t}{z_t}- steadystate(\frac{\bar{g}}{z_t})\frac{1}{z_t})+e_t

After some trials in Dynare, I think I understand what it does. Please let me know if I am still mistaken.

Dynare basically exchanges trending variables in the same way as Prof Pfeifer explained for the steady-state variables.

T_t is exchanged to \frac{T_t}{z_t} and T_{t-1} as \frac{T_{t-1}}{z_{t-1}} \frac{z_{t-1}}{z_{t}}=\frac{T_{t-1}}{z_{t-1}} \frac{1}{gz_{t}}

The non-trading variables are not changed, meaning they are not subject to any manipulation. What I also learnt is that the trend variable z_t is also exchanged after the compilation:
z_t as 1 or \frac{1}{z_t} as 1. For the lagged: z_{t-1} as \frac{1}{gz_t} or \frac{1}{z_{t-1}} as gz_t.

For that reason, both T_t and \frac{T_t}{z_t} are exchanged to \frac{T_t}{z_t}.

In my case, the correct way to specify the fiscal rule that ensures a stable path would be:

T_t =\rho \frac{T_{t-1}}{z_{t-1}} + (1-\rho) \bar{T} + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(g_t -\bar{g})+e_t

You need to provide a consistent rule in trending form, because Dynare will still do the detrending if asked to. If you specify

T_t =\rho \frac{T_{t-1}}{z_{t-1}} + (1-\rho) \bar{T} + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(g_t -\bar{g})+e_t

that will cause a problem. You have something trending on the left and now you link it to a bunch of things that do not trend on the right. The critical part is the one related to T. It’s a trending variable that Dynare will try to detrend. But you already manually detrended T_{t-1} on the right.

On paper, the rule is indeed wrong. But my intention is to know how I can write the rule into dynare so that it would give me a stable relationship.

After dynare compilation, the relationship becomes:
\frac{T_t}{z_t} =\rho \frac{T_{t-1}}{z_{t-1}}\frac{gz_t}{gz_t} + (1-\rho) \bar{T} + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(\frac{g_t}{z_t} -\bar{g})+e_t

It is rather unintuitive, as you’ve said. The only other way (which may be more intuitive) is to detrend by hand:
\frac{T_t}{z_t} =\rho \frac{T_{t-1}}{z_{t-1}} + (1-\rho) \bar{T} + \phi_b \left(\frac{B_{t-1}}{Y_{t-1}} - \bar{\frac{B}{Y}} \right) +\phi_g(\frac{g_t}{z_t} -\bar{g})+e_t

Are you sure the first one is really the output? The gz_t would cancel.

I am pretty sure. It does cancel out.

I attach the mod file and latex output that I used.

out.pdf (115.9 KB)
main.mod (1.2 KB)

We will have to have a deeper look. Something strange is going on in the file. I would have said that only the first rule make sense.

It turns out the \LaTeX-output is not reliable to check the proper detrending, unless you provide sensible initval for a proper check of balanced growth to happen.

t/z = rhho*t(-1)/z(-1)+ (1-rhho)*steady_state(t/z) + PHIIB*(b(-1)/y(-1) - B2YSS) + PHIIG*(g/z - steady_state(y/z))


seems to be the proper equation, I guess.

Thanks a lot for taking a look at this. So there seems that the best way is to do the manual detrending.