Continous Zero Lower Bound Implementation

In order to replicate recent NK models which implement the Zero Lower Bound, so an interest rate which is subject to the constrained of being positive,
I have derived a continuous version of the Kronecker Delta function(an IF function) for the monetary policy rule, so it gives Rzlb(R)=R for R>0 and Rzlb(R)=0 for R<0.
The function I used is:
Rzlb = k*log(1-exp(-1/k)+exp(r/k));
Which perfectly approximates the "If" function for when k tends to zero.
So I have set k=1/1000 #so some very small value ( a plot can be seen here: http://www.wolframalpha.com/input/?i=%281%2F1000%29*log%281-exp%28-1%2F%281%2F1000%29%29%2Bexp%28x%2F%281%2F1000%29%29%29 )
Also the taylor series approximation follows the "If" function, although it is dependant from which value the approximation is made whether it will give zero everywhere or Rzlb=R everywhere.
I figured for small deviations in R this shouldn't be a problem, only when crossing between negative and positive values.
however, after I ran some models, and saved the output using the dynasave command, I found when comparing the Rzlb output with its R input, the Rzlb function still gave negative values.
I am using the Stoch simulate command, and the function within the log shouldnt be zero.
Any ideas why it doesn't work?
I have derived a continuous version of the Kronecker Delta function(an IF function) for the monetary policy rule, so it gives Rzlb(R)=R for R>0 and Rzlb(R)=0 for R<0.
The function I used is:
Rzlb = k*log(1-exp(-1/k)+exp(r/k));
Which perfectly approximates the "If" function for when k tends to zero.
So I have set k=1/1000 #so some very small value ( a plot can be seen here: http://www.wolframalpha.com/input/?i=%281%2F1000%29*log%281-exp%28-1%2F%281%2F1000%29%29%2Bexp%28x%2F%281%2F1000%29%29%29 )
Also the taylor series approximation follows the "If" function, although it is dependant from which value the approximation is made whether it will give zero everywhere or Rzlb=R everywhere.
I figured for small deviations in R this shouldn't be a problem, only when crossing between negative and positive values.
however, after I ran some models, and saved the output using the dynasave command, I found when comparing the Rzlb output with its R input, the Rzlb function still gave negative values.
I am using the Stoch simulate command, and the function within the log shouldnt be zero.
Any ideas why it doesn't work?
- Code: Select all
y = y(+1) - 1/sigmaC*(r-pi(+1)) + s_b;
pi = beta*pi(+1) + ((1-theta)*(1-beta*theta)/theta)*(sigmaC+sigmaL)*y + s_p;
% Monetary Policy Rule
% R input where rz is the unbounded r, and r is the interest rate constrained to be positive
rz = rho*r(-1) + (1-rho)*( phi_pi*pi + phi_y*y ) + phi_dy*(y-y(-1)) + s_r ;
r = k*log(1-exp(-1/k)+exp(rz/k));