SDF approximation


I’m trying to do something very simple. I just want to write down a standard bond pricing model. Specifically, suppose my model block is

r=mu*r(-1) = eps_r;

p = exp((1+r)*eps_r(+1) + (1+r)^2)

where eps_r has sd=1.

We know that p=1 always since eps_r(+1) is normal. But when I do an approximation, no matter how many orders, I find a nonzero and potentially large coefficient on r (it must be zero). is there any way to get around this problem?

Thanks in advance!

Actually, I can ask a better question. When one does a taylor approximation, there is a sigma term that is set to zero to get the deterministic steady state. Can I access that variable? I want to include a sigma^2. That would make the whole thing work.

I don’t understand why you say p=1 always.

It seems to be that at the deterministic steady state, we have r=0 and therefore p = exp(1), isn’t it?


That’s precisely the issue. In deterministic steady state, p=exp(1), but taking into account the normality of eps_r, p=1.

The correct way to do this would be to write the function as

p = exp((1+r)SIGMAeps_r(+1) + (1+r)^2*SIGMA^2)

and then approximate around SIGMA=0 and r=0. but in Dynare, I don’t know how to control SIGMA.

Does that make sense? dynare inserts its own SIGMA in front of all of the shocks when it does the approximation, but I also want SIGMA to show up in the (1+r)^2*SIGMA^2 term. Is there any way to do that?


The point is that Dynare computes the approximation around the deterministic steady state, this cannot be changed for strong theoretical reasons.

The sigma term that you are talking about is never explicitly used internally: it is only a convenience for presenting the approximation method to people.

I think that what you want to do is not feasible with Dynare, because what you want to do is to approximate your model around a point in the parameter space, while Dynare computes approximations around a point in the state space.