Small open economy in a currency union

Then there must be something fundamentally wrong somewhere. Timing must matter, even in the closed economy version. You are correct that if you use the end of period notation, you do not have to declare the state as predetermined. That omitting this statement results in indeterminacy confirms that there is still a timing problem somewhere.

Now, one problem for the steady state results (which are never zero, except for the shocks) could be simultaneous calculation of wage and labor, which are both endogenous in my model. When I set labor to a constant parameter, the model no longer works. On the other hand, when I write output gap as the difference between the goods market equilibrium and the production function, the model says there is one equation less than endogenous variables. This implies that labour is endogenously determined by the production function, which also contains labor. Therefore, I tried to define the output gap as the difference between a sticky price and a flexible price economy, so that the number of equations matches the number of endogenous variables.
However, this gives the following error message (although this time the steady state results are now zero for all variables!):

Modulus Real Imaginary

      0.2974           0.2974                0
      0.4615           0.4615                0
         0.5              0.5                0
         0.5              0.5                0
         0.5              0.5                0
         0.5              0.5                0
         0.5              0.5                0
         0.5              0.5                0
         0.5              0.5                0
      0.6011           0.6011                0
      0.6044           0.3587           0.4865
      0.6044           0.3587          -0.4865
      0.6891           0.6891                0
      0.7549           0.7549                0
      0.9483           0.9477          0.03529
      0.9483           0.9477         -0.03529
      0.9835           0.9835                0
       1.059            1.059                0
       1.189           0.9677            0.691
       1.189           0.9677           -0.691
       1.263            1.233           0.2766
       1.263            1.233          -0.2766
       2.996            2.421            1.765
       2.996            2.421           -1.765
  1.213e+016       1.213e+016                0
         Inf             -Inf                0
         Inf             -Inf                0
         Inf             -Inf                0

There are 11 eigenvalue(s) larger than 1 in modulus
for 12 forward-looking variable(s)

The rank condition ISN’T verified!

MODEL_DIAGNOSTICS: No obvious problems with this mod-file were detected.
error: Blanchard Kahn conditions are not satisfied: indeterminacy

Once again, I have not defined k as predetermined, because it’s already in the end-of-period formulation. If it is predetermined, it makes indeed a difference, but the graphs are weird and it does not make a sense from an economic point of view. Please find attached the new model:

model2.mod (2.8 KB)


I have now found a way to model a small open economy in a currency union. However, I get the following error message:

There are 8 eigenvalue(s) larger than 1 in modulus
for 9 forward-looking variable(s)

The rank condition ISN’T verified!

MODEL_DIAGNOSTICS: The Jacobian of the static model is singular
MODEL_DIAGNOSTICS: there is 1 colinear relationships between the variables and the equations
Colinear variables:
Colinear equations
1 14 17 18 25
MODEL_DIAGNOSTICS: The singularity seems to be (partly) caused by the presence of a unit root
MODEL_DIAGNOSTICS: as the absolute value of one eigenvalue is in the range of ±1e-6 to 1.
MODEL_DIAGNOSTICS: If the model is actually supposed to feature unit root behavior, such a warning is expected,
MODEL_DIAGNOSTICS: but you should nevertheless check whether there is an additional singularity problem.
MODEL_DIAGNOSTICS: The presence of a singularity problem typically indicates that there is one
MODEL_DIAGNOSTICS: redundant equation entered in the model block, while another non-redundant equation
MODEL_DIAGNOSTICS: is missing. The problem often derives from Walras Law.
error: Blanchard Kahn conditions are not satisfied: indeterminacy

What do I have to do now?
model3.mod (2.9 KB)

The collinearity comes from the unit root. Don’t bother with it for now. You still need to correct the timing. Are you for example sure that
has the correct timing of k?

I am sure that the timing of k in r is correct. It’s the same timing that can be found in your Smets/Wouters code on your github site. The timing in the capital accumulation equation (which does not require to declare k as predetermined) and the timing of k in the effective capital stock (with variable capital utilization) also corresponds to the original SW paper as well as to your code.

If k is capital services, then the timing is correct. But I thought that ks in
is capital services.

k is capital and ks is capital services. But why should the timing change when I move from a closed economy to an open economy?

I don’t know your model, but the interest rate usually depends on capital services, not capital if there is variable utilization. That would be a problem in both closed and open economies. Please try to simplify your model to find out where the problem comes from. A first step is to eliminate variable capital utilization.

Thanks for your answer. Without variable capital utilization, the model does not work. But with variable capital utilization that influences the rental rate, I get reasonable irfs, but no shock decomposition.
Instead, there is one error message:

error: lyapunov_solver: operator *: nonconformant arguments (op1 is 0x0, op2 is 10x10)

Capital services depends on capital and u, but u depends on the rental rate, which again depends on capital services. So there might be a kind of circularity there, however, a model version without variable capital utilization means indeterminacy

  1. Please provide me with the version generating the problem in the lyapunov_solver. I guess this affects Octave 4.2.1.
  2. It cannot be that your model does not work without variable capital utilization. This indicates that there is a problem in the simpler model. You should continue dropping features from the model until it works. Did you manually eliminate capital utilization or did you just set the cost parameter to infinity? The latter often causes problems.
  1. Here is the model version, where r depends on ks, but which produces the error message:
    model3a.mod (2.9 KB)
  2. I eliminated capital utilization manually. In the closed economy, the model always works, independent of whether I have variable capital utilization or not. But in the open economy, only the model version with ks works.
  1. That is because your model has a unit root and you need to set
    options_.diffuse_filter=1 before calling the smoother.
  2. Nevertheless there is a problem here. Again, please start from the simplest model that works. Your current approach is looking for a needle in a haystack.

I think that the problem comes from capital or the timing of capital or investment-related variables. When I eliminate wages and labor hours, this has no effect on the determinacy of the model. A model without capital works even in the context of an open economy. The problem introduced by capital disappears once variable capital utilization is considered, so there must be some countervailing effect of ks or u. Nevertheless, I do not want unit root behavior in my model, which might not come from the real exchange rate (because there is no unit root in open economy models without capital), but from the circularity mentioned above (ks depends on both k and u, but u depends on ks). The question is how to re-introduce capital or investment-related variables.

The most simple model that works is the canonical New Keynesian dsge linked to a similar 3-equation model with a common monetary rule and an expression for the real exchange rate. This expression and leads to an eigenvalue of 0.91.
The real exchange rate is defined as qq-qq(-1)=pif-pih+eqq-eqq(-1)
However, in a three equation version with different parameter values as well as lags of consumption and inflation, this real exchange rate leads to an eigenvalue of 1 and hence there is a unit root, with dynare being unable to conduct a shock decomposition (unless options_.diffuse_filter=1 is used).
I don’t think it’s a matter of calibration, because I have already replaced the parameter values in the model that works, and it still works, so it must be caused by the lags of endogenous variables, which appear on the right hand side of consumption and inflation or by the assumption regarding the development of the real exchange rate?

Nominal variables in the canonical New Keynesian have a unit root, regardless of the parameterization. That is normal. You would get rid of it by replacing the nominal variables by their growth rates, i.e. replacing qq-qq(-1) by e.g. dqq.
But that is not the reason your more complicated model does not solve. Having a unit root is fine, but you need to invoke the diffuse filter.

1 Like

But is it also possible to estimate a model with a unit root? I thought that I have to get rid of it in any case.

Yes, that is what the diffuse Kalman filter is used for.

1 Like

Is this graph for the historical shock decomposition of consumption using simulated data correct? My model has no unit root/collinear relationship and model_diagnostics says No obvious problems with this mod-file were detected.

What do you mean with correct? It doesn’t look too crazy, but without knowing the model and having the labeling in the figure, it is impossible to tell.