Asymmetric Dynamic Multipliers
Asymmetric Dynamic Multipliers
Dear all,
I am currently trying to programm features of "Modelling Asymmetric Cointegration and Dynamic
Multipliers in a Nonlinear ARDL Framework" by Chinn et al. (2011) which I have attached
For me, the most interesting features are the Asymmetric Multipliers. The starting points are the conditional nonlinear ECM (Page 13, 2.10) which can for example be written as follows:
linreg(define=ECM) dy 2003:01 2011:11
# res_y{1} dy{1 to j} deonia_pl{0 to k} deonia_min{0 to k}
Now my question is: Is there a straight way using Rats to achieve the ARDL-in-levels representation (Page 16, 2.11) for the equation above? This is necessary since the multiplier is caluclated based on this representation
By the way, I have already figured out how to specify the multiplier without being able to inccoperate the levels representation
linreg(define=NARDL) y 2003:01 2011:11
# constant y{1} eonia_pl{1} eonia_min{1}
equation(empty) dummyeqn eonia_pl
group nardlmodel nardl dummyeqn
impulse(model=nardlmodel,shocks=||0.0,1.0||,results=responses,steps=36
Thanks for your help
I am currently trying to programm features of "Modelling Asymmetric Cointegration and Dynamic
Multipliers in a Nonlinear ARDL Framework" by Chinn et al. (2011) which I have attached
For me, the most interesting features are the Asymmetric Multipliers. The starting points are the conditional nonlinear ECM (Page 13, 2.10) which can for example be written as follows:
linreg(define=ECM) dy 2003:01 2011:11
# res_y{1} dy{1 to j} deonia_pl{0 to k} deonia_min{0 to k}
Now my question is: Is there a straight way using Rats to achieve the ARDL-in-levels representation (Page 16, 2.11) for the equation above? This is necessary since the multiplier is caluclated based on this representation
By the way, I have already figured out how to specify the multiplier without being able to inccoperate the levels representation
linreg(define=NARDL) y 2003:01 2011:11
# constant y{1} eonia_pl{1} eonia_min{1}
equation(empty) dummyeqn eonia_pl
group nardlmodel nardl dummyeqn
impulse(model=nardlmodel,shocks=||0.0,1.0||,results=responses,steps=36
Thanks for your help
- Attachments
-
- shin et al - modelling asymmetric cointegration and dynamic multipliers-1.pdf
- (506.49 KiB) Downloaded 2141 times
Re: Asymmetric Dynamic Multipliers
Isn't their (2.11) just a reduced form of (2.10)? It looks like you would estimate (2.11) with OLS.
Re: Asymmetric Dynamic Multipliers
Dear Tom,
I am not sure about that since it is not clear where the equilibrium error in 2.10 enters in 2.11.
Indeed, all estimations are carried out by OLS. However, we estimate 2.10 for about 40 different models. The calculation of the dynamic multiplier in the end obviously just corresponds to a simple shock impact analysis as indicated by the code of my previous post.
Is there any way in Rats to achieve 2.12. based on the estimation of 2.10/2.11 which is carried out as described in my previous post? This would mostly correspond to an automatic respectively programmed multiplication of 2.10/2.11 with lagged multipliers. As 2.11 seems to be a reformulation of 2.10 with all terms containing lagged endogenous variables on the left hand side, 2.12 is achieved by premultiplying 2.11 with the inverse lag polynomial phi(L). Is there a way to invert lag polynomials in Rats?
Calculating by hand based on the estimation results would be an extensive exercise. As mentioned above I am also unsure where the equilibrium error enters in 2.11 and 2.12.
Thanks for any help
I am not sure about that since it is not clear where the equilibrium error in 2.10 enters in 2.11.
Indeed, all estimations are carried out by OLS. However, we estimate 2.10 for about 40 different models. The calculation of the dynamic multiplier in the end obviously just corresponds to a simple shock impact analysis as indicated by the code of my previous post.
Is there any way in Rats to achieve 2.12. based on the estimation of 2.10/2.11 which is carried out as described in my previous post? This would mostly correspond to an automatic respectively programmed multiplication of 2.10/2.11 with lagged multipliers. As 2.11 seems to be a reformulation of 2.10 with all terms containing lagged endogenous variables on the left hand side, 2.12 is achieved by premultiplying 2.11 with the inverse lag polynomial phi(L). Is there a way to invert lag polynomials in Rats?
Calculating by hand based on the estimation results would be an extensive exercise. As mentioned above I am also unsure where the equilibrium error enters in 2.11 and 2.12.
Thanks for any help
Re: Asymmetric Dynamic Multipliers
Have you looked at the %POLYDIV function? That would do the same calculation, but would probably be simpler to automate. See, for instance, the Hill, Griffiths and Lim example hillp251.rpf.Gilbril wrote:Dear Tom,
I am not sure about that since it is not clear where the equilibrium error in 2.10 enters in 2.11.
Indeed, all estimations are carried out by OLS. However, we estimate 2.10 for about 40 different models. The calculation of the dynamic multiplier in the end obviously just corresponds to a simple shock impact analysis as indicated by the code of my previous post.
Is there any way in Rats to achieve 2.12. based on the estimation of 2.10/2.11 which is carried out as described in my previous post? This would mostly correspond to an automatic respectively programmed multiplication of 2.10/2.11 with lagged multipliers. As 2.11 seems to be a reformulation of 2.10 with all terms containing lagged endogenous variables on the left hand side, 2.12 is achieved by premultiplying 2.11 with the inverse lag polynomial phi(L). Is there a way to invert lag polynomials in Rats?
Calculating by hand based on the estimation results would be an extensive exercise. As mentioned above I am also unsure where the equilibrium error enters in 2.11 and 2.12.
Thanks for any help
Re: Asymmetric Dynamic Multipliers
Dear Tom,
I have now written a procedure which is based on the %POLYDIV function. As a first step, I have carried out a transfomation into levels before using the function. However, if I calculate the long-run multiplier, they do not converge towards the long-run values but to zero which is somewhat puzzling. I am unsure whether this is due to a mistake in the procedure (Which I think should be correct). Any help would be greatly appreciated.
I have attached the whole procedure and the data. However, the main part is the following
***Choose optimal NARDL Model
set y = ih_1_0
set dy = y-y{1}
*j is the lag-lentg of DY, determined before
compute j = 1
*k j is the lag-lentg of DEONIA_PL und DEONIA_MIN, determined before,
compute k = 0
linreg(define=NARDL) dy 2003:01 2011:11
# constant y{1} eonia_pl{1} eonia_min{1} dy{1 to j} deonia_pl{0 to k} deonia_min{0 to k}
***Calculating Lagpolynom
*Calculating coefficients in Level
compute y_1 = %beta(2)+%beta(5)+1
dis "Y(t-1)" y_1
compute y_2 = %beta(5)*(-1)
dis "Y(t-2)" y_2
compute pl = %beta(6)
dis "EONIA_PL(t)" pl
compute pl_1 = %beta(3)+%beta(6)*(-1)
dis "EONIA_PL(t-1)" pl_1
compute min = %beta(7)
dis "EONIA_MIN(t)" min
compute min_1 = %beta(4)+%beta(7)*(-1)
dis "EONIA_PL(t-1)" min_1
*Create Equation
equation(coeffs=||y_1,y_2,pl,pl_1,min,min_1||) yeq y
# y{1} y{2} eonia_pl eonia_pl{1} eonia_min eonia_min{1}
*Extracting Lagpolynoms
compute poly_y = %eqnlagpoly(yeq,y)
dis "Y-Polynom" poly_y
compute poly_pl = %eqnlagpoly(yeq,eonia_pl)
dis "EONIA_PL-Polynom" poly_pl
compute poly_min = %eqnlagpoly(yeq,eonia_min)
dis "EONIA_MIN-Polynom" poly_min
*Division of EONIA_PL- und EONIA_MIN-Polynom by Y-Polynom
compute pl_inv = %polydiv(poly_pl,poly_y,13)
dis "durch Y_inv dividiertes EONIA_PL-Polynom" pl_inv
compute min_inv = %polydiv(poly_min,poly_y,13)
dis "durch Y_inv dividiertes EONIA_MIN-Polynom" min_inv
*Direct new coefficients
equation(coeffs=||pl_inv(1),pl_inv(2), pl_inv(3), pl_inv(4), pl_inv(5), pl_inv(6),pl_inv(7),pl_inv(8),pl_inv(9),pl_inv(10),pl_inv(11),pl_inv(12),pl_inv(13),pl_inv(14), $
min_inv(1),min_inv(2),min_inv(3),min_inv(4),min_inv(5),min_inv(6),min_inv(7),min_inv(8),min_inv(9),min_inv(10), min_inv(11), min_inv(12),min_inv(13),min_inv(14)||) shockeqn y
# eonia_pl{0 to 13} eonia_min{0 to 13}
*Impuls-Response
equation(empty) dummyeqn eonia_pl
group nardlmodel shockeqn dummyeqn
impulse(model=nardlmodel,shocks=||0.0,1.0||,results=responses,steps=36)
Thanks and Regards
Gilbril
I have now written a procedure which is based on the %POLYDIV function. As a first step, I have carried out a transfomation into levels before using the function. However, if I calculate the long-run multiplier, they do not converge towards the long-run values but to zero which is somewhat puzzling. I am unsure whether this is due to a mistake in the procedure (Which I think should be correct). Any help would be greatly appreciated.
I have attached the whole procedure and the data. However, the main part is the following
***Choose optimal NARDL Model
set y = ih_1_0
set dy = y-y{1}
*j is the lag-lentg of DY, determined before
compute j = 1
*k j is the lag-lentg of DEONIA_PL und DEONIA_MIN, determined before,
compute k = 0
linreg(define=NARDL) dy 2003:01 2011:11
# constant y{1} eonia_pl{1} eonia_min{1} dy{1 to j} deonia_pl{0 to k} deonia_min{0 to k}
***Calculating Lagpolynom
*Calculating coefficients in Level
compute y_1 = %beta(2)+%beta(5)+1
dis "Y(t-1)" y_1
compute y_2 = %beta(5)*(-1)
dis "Y(t-2)" y_2
compute pl = %beta(6)
dis "EONIA_PL(t)" pl
compute pl_1 = %beta(3)+%beta(6)*(-1)
dis "EONIA_PL(t-1)" pl_1
compute min = %beta(7)
dis "EONIA_MIN(t)" min
compute min_1 = %beta(4)+%beta(7)*(-1)
dis "EONIA_PL(t-1)" min_1
*Create Equation
equation(coeffs=||y_1,y_2,pl,pl_1,min,min_1||) yeq y
# y{1} y{2} eonia_pl eonia_pl{1} eonia_min eonia_min{1}
*Extracting Lagpolynoms
compute poly_y = %eqnlagpoly(yeq,y)
dis "Y-Polynom" poly_y
compute poly_pl = %eqnlagpoly(yeq,eonia_pl)
dis "EONIA_PL-Polynom" poly_pl
compute poly_min = %eqnlagpoly(yeq,eonia_min)
dis "EONIA_MIN-Polynom" poly_min
*Division of EONIA_PL- und EONIA_MIN-Polynom by Y-Polynom
compute pl_inv = %polydiv(poly_pl,poly_y,13)
dis "durch Y_inv dividiertes EONIA_PL-Polynom" pl_inv
compute min_inv = %polydiv(poly_min,poly_y,13)
dis "durch Y_inv dividiertes EONIA_MIN-Polynom" min_inv
*Direct new coefficients
equation(coeffs=||pl_inv(1),pl_inv(2), pl_inv(3), pl_inv(4), pl_inv(5), pl_inv(6),pl_inv(7),pl_inv(8),pl_inv(9),pl_inv(10),pl_inv(11),pl_inv(12),pl_inv(13),pl_inv(14), $
min_inv(1),min_inv(2),min_inv(3),min_inv(4),min_inv(5),min_inv(6),min_inv(7),min_inv(8),min_inv(9),min_inv(10), min_inv(11), min_inv(12),min_inv(13),min_inv(14)||) shockeqn y
# eonia_pl{0 to 13} eonia_min{0 to 13}
*Impuls-Response
equation(empty) dummyeqn eonia_pl
group nardlmodel shockeqn dummyeqn
impulse(model=nardlmodel,shocks=||0.0,1.0||,results=responses,steps=36)
Thanks and Regards
Gilbril