Page 1 of 1

Small open economy-steady state

PostPosted: Mon Jun 16, 2014 3:24 pm
by carlosvasco
Hello,

I'm trying to run this "small open economy" model on Dynare. But it says that there is not steady state:

"Impossible to find the steady state. Either the
model doesn't have a steady state, there are an
infinity of steady states, or the guess values
are too far from the solution"

Can someone tell me what I'm doing wrong? :oops: I upload the .mod file as .txt

Re: Small open economy-steady state

PostPosted: Tue Jun 17, 2014 7:01 pm
by jpfeifer
Try to compute the steady stata analytically using pencil and paper. For your model, this should be straightforward. On my machine, Dynare finds the following steady state:
STEADY-STATE RESULTS:

y -4.08625
c 1.95484
k -6.1014
l 0.0958977
w 0.697914
r 0.235592
z 1
b -0.353146
Te 0.579002

But negative capital makes no sense. Check your parameters. Particularly the beta seems really low.

Finally, not that you are violating Dynare's timing convention. You will need:

Code: Select all
predetermined_variables k b;

Re: Small open economy-steady state

PostPosted: Sat Jun 28, 2014 5:20 pm
by carlosvasco
We try another model. But still we can't find a steady state.

We are trying to replicate a paper: "Optimal oil taxation in small open economy". We think we have trouble with the initial values.

----
var c l k b w r tc e p z te y tb;

varexo x;

parameters mu r1 beta teta gama phi alpha pe prho rho sigma delta;

mu = 1/3;
r1 = 0.04;
beta = 1/(1+r1);
teta = 1/3;
gama = 1/3;
phi = 0.2;
alpha = 2;
pe = -0.176;
prho = 0.94;
rho = 0.96;
sigma = 1;
delta = 0.028;

model;
y = z*(k^(teta))*(l^gama)*(e^(1-teta-gama)); % eq 1
c+k(+1) - (1-delta)*k + 0.15*y + tb = y; % eq 3
tb = p*e +b(+1) - (1+r1)*b; % eq 5
(c/(1-l)) = ((1-mu)/mu)*(w/(1+tc)); % eq 6
((c/(1-l))^(-mu))*((1+phi*y)^(-alpha))/(1-tc) = beta*((((c(+1)/(1-l(+1)))^(-mu)))*((1+phi*y(+1))^(-alpha))*(1-delta+r(+1))/(1+tc(+1))); % eq 7
r(+1) - delta = r1; % eq 8
(1+tc)*c + k(+1)-(1-delta)*k + b(+1) = w*l + r*k + (1+r1)*b; % eq 9
w = gama*(y/l) ; % eq 10
r = teta*(y/k) ; % eq 11
(1+te)*p = (1-teta-gama)*(y/e); % eq 12
0.15*y = tc*c + te*p*e; % eq 13

% Shock de productividad
log(z(+1)) = rho*log(z)+ x; % eq 2

% Shock de precios
log(p(+1)) = pe + prho*log(p)+ x; % eq 2
end;

initval;

c = 3;
l = 2;
k = 2;
y = 5;
b = 3;
w = gama*(y/l);
r = teta*(y/k);
tc = -(((1-mu)/mu)*(1-l)*w/c)+1 ;
e = 1;
p = 1;
z = 1.2;
te = (0.15*y-tc*c)/(p*e);
tb = p*e+b-(1+r1)*b;

end;

steady;

check;
shocks;
var x = sigma^2;
end;

stoch_simul(periods=1000);

Re: Small open economy-steady state

PostPosted: Mon Jun 30, 2014 2:04 pm
by jpfeifer
Apart from completely wrong timing for x and the predetermined stocks (which do not affect the steady state, but need to be fixed later), your initial values are too poor. In particular, l needs to be between 0 and 1, but you start it at 2. Please try to compute the steady state analytically.

Re: Small open economy-steady state

PostPosted: Tue Jul 01, 2014 6:07 pm
by carlosvasco
Ok, we fixed the initial values with the authors data. Now the problem is this:

STEADY-STATE RESULTS:

c -0.308473
l 1.79118
k 3.4918
b -12.6259
w 0.194944
r 0.1
tc -1.27679e-09
e 0.18379
p 1.04494
z 1
te 0.818182
y 1.04754
tb 1.1011

Error using print_info (line 54)
One of the eigenvalues is close to 0/0 (the absolute value of numerator and denominator is
smaller than 1e-06!

If you believe that the model has a unique solution you can try to reduce the value of
qz_zero_threshold.


How can we fix this and get the shocks? What do you mean with wrong timing x?

Re: Small open economy-steady state

PostPosted: Wed Jul 02, 2014 2:11 pm
by jpfeifer
model_diagnostics says:
Code: Select all
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:
c
l
k
b
e
y
tb
Colinear equations
     3     5     9    10    11    12    13

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.


There must still be a mistake in your model equations. Your steady state for l is not between 0 and 1.

Bond and capital are predetermined. Given the way you entered these variables with beginning of period stock notation, you need
Code: Select all
predetermined_variables k b;

Moreover, the exogenous processes should be backward-looking, i.e.
Code: Select all
log(z) = rho*log(z(-1))+ x;   % eq 2

instead of
Code: Select all
log(z) = rho*log(z(+1))+ x;   % eq 2