This project is read-only.

Sign restrictions + coefficient restrictions

Jun 19, 2015 at 8:51 PM
Edited Jun 20, 2015 at 12:29 AM
Hey guys,

I would like to estimate an SVAR model with sign restrictions.
Having demand and supply relations in the model I would like to impose restrictions on short-run supply and demand elasticities in addition to restrictions on the signs of the short-run reactions.

These can in principle be retrieved from the model by dividing estimated coefficients (say a_11/a_33 for supply elasticity). Is there any possibility to build such a restriction into the test string (e.g. a_11/a_33<0.1)?

Thanks a lot in advance. I really appreciate your work, this is a great site!

Jun 22, 2015 at 2:39 AM
Hi Eugen,

Officially this is not a supported feature. However I think you can pretty much do this because you have access to the entire SVAR object at the time the test is evaluated, so you should be able to make reference to any property of the SVAR object.

When the test is evaluated the name of the SVAR object is "This" and the coefficient matrices are property "A". Therefore your test string might look something like this:

test = 'This.A(1,1)/This.A(1,3)<0.1'

Try it out and let us know how it works for you.


Jun 27, 2015 at 6:44 PM
Hi Michael,

thank you for your answer. I've tried several things, but I'm afraid it is still not working out.

Just to give a little bit of context: I have a 4-variable framework with changes in oil production, an economic activity index, changes in real oil price and changes in inventories (I am following Kilian and Murphy (2014)). The idea of this SVAR framework is not only to identify the structural response functions using sign restrictions, but in addition to impose limits on the short-run supply elasticity to further narrow down the set of admissible SRFs.

Kilian and Murphy suggest to use the fact that short-run supply elasticity can be retrieved from the impact coefficients b11/b33. I have encountered several problems trying to implement the constraint (please correct me if I missed something):
  1. I cannot really implement it into the test_string, as I would need (or at least I think so) to restrict the impact matrix B which I only get as a result of running the SVAR function.
  2. So I tried to estimate B first (without elasticity restrictions) and then eliminate those impact matrices from the array that don't satisfy b11/b33 < x.
    Now, I started having doubts about this approach for several reasons
    --> I don't know how to get the new SRFs from my restricted B
    --> I am not really sure what B actually represents. In my case it is 4x4x500 i.e. 500 impact matrices (4x4). However, I thought that I would need an impact matrix for each individual lag, that is for a 2nd order SVAR: 4x4x1000 (or am I confusing something?)
  3. My third thought was: maybe I could use the impulse responses S(i,j,k). After all, S(1,3,1) represents the short-run (i.e. first period) response akin to b11 (is this correct?) and similarly S(3,3,1) for b33. Unfortunately, this didn't change the results a lot and I still get quite a high "jump" for oil production in the first period (which I wanted to rule out).
I think, I am just confusing what the inputs/outputs S(i,j,k), B etc. are standing for. I would be really grateful if you can explain this to me.

Best wishes

Jun 29, 2015 at 7:47 AM
I think (2) will prob be the way to go. But I will send you an e-mail and we can discuss.