I have two equations which differ only by a variable to which they are multiplied (weight_i, weight_e)
R_bi = kappa_b*(nu_b - 1/RWA)*((1/RWA)^2)*weight_i;
R_be = kappa_b*(nu_b - 1/RWA)*((1/RWA)^2)*weight_e;
The variables (weight_i, weight_e) have different laws of motion, but start from the same steady state. The steady state of ** kappa_b*(nu_b - 1/RWA)*((1/RWA)^2)** is 0, so the two equations are 0 at the steady state. Then I plot the IRF of (R_bi-R_be) and observe the following:
- If (weight_i, weight_e) start from same SS, a 1st order solution shows that (R_bi-R_be) doesn’t vary. => The equations are regarded as equivalent
- If (weight_i, weight_e) start from slightly different SS, a 1st order solution shows that (R_bi-R_be) varies.
- If (weight_i, weight_e) start from same SS, a 2nd order solution shows that (R_bi-R_be) varies.
Is there anyway to avoid this without higher order solutions? The problem with changing the SS’s is that then the (R_bi-R_be) trajectory becomes dependent on the steady states (i.e. it is dependent on whether SS(weight_i) > SS(weight_i) or the opposite).
How is this possible?
I am attaching a simplified version of the model including only those equations.
BugTest.mod (1.09 KB)
You cannot do this. Looking at the policy functions
POLICY AND TRANSITION FUNCTIONS
weight_i weight_e RWA R_bi R_be R_DIFFERENCE
Constant 1.000000 1.000000 3.000000 0 0 0
ee_c(-1) 0.800000 -0.800000 -0.800000 -0.098765 -0.098765 0
e_c 1.000000 -1.000000 -1.000000 -0.123457 -0.123457 0
ee_c(-1),ee_c(-1) 0 0.640000 1.280000 0 0.158025 -0.158025
e_c,e_c 0 1.000000 2.000000 0 0.246914 -0.246914
ee_c(-1),e_c 0 1.600000 3.200000 0 0.395062 -0.395062
you can see that the nonlinearity of the two laws of motion introduces different second order terms, explaining the differences. At higher order *ee_c is very different from /ee_c. This explains the difference.
Thank you for the reply.
Can you clarify what exactly do you mean by “You cannot do this”? Cannot change the SS’s or cannot solve at higher order, or?
Also what do you denote with “*ee_c” and “/ee_c”?
If I need the two weights to affect the two rates separately as a model feature, what would you suggest? Using different functional form?
It referred to
The problem is that even with the same steady state for the weights, the laws of motion are different. You have
weight_i = weight_i_ss*ee_c;
weight_e = weight_e_ss*(1/ee_c);
The first equation multiplies with ee_c, the second divides by ee_c. When doing a second order Taylor approximation, those two equations are very different, as can be seen by the policy functions. The first one is linear so that all higher order terms are 0. The second is a hyperbola that has a non-finite Taylor approximation so that the second order terms are non-zero. As a consequence, at higher order you cannot enforce two different equations to have the same dynamics.
On the contrary, I never wanted to enforce the two equations to have same dynamics. I want them to have different dynamics driven by the different laws of motion of **weight_i and weight_e **. It is the 1st order solution and the equal steady states that enforces the equal dynamics which are undesired so I am looking for a way to avoid this.
The example code is just illustrative, in the whole model those variables are endogenous.
I was just wondering if I should change the SSs or go to 2nd order or try to use different functional form.
I see, it is hard to tell how to proceed. But going to second order introduces several additional complications, e.g. often requiring the use of pruning and making estimation via the Kalman filter impossible. I would only go this route if really necessary.