<ul>
<li><p>EViews can do SVARs with custom restrictions, including some presets. You may check out their online <a href="http://www.eviews.com/help/helpintro.html#page/content/VAR-Structural_(Identified)_VARs.html" rel="nofollow noreferrer">documentation</a>. Btw, this one is the only one to my knowledge that also does long-term restrictions on the residuals.</p>
</li>
<li><p>Pretty sure that JMulti can also do the kind of restrictions you are after. You can get it <a href="https://sourceforge.net/projects/jmulti/" rel="nofollow noreferrer">here</a> for free. It's quite old so I am not sure about system requirements.</p>
</li>
<li><p><a href="https://www.statsmodels.org/stable/generated/statsmodels.tsa.vector_ar.svar_model.SVAR.html" rel="nofollow noreferrer">Statsmodels</a> (via python) might be able to do it too, but only with presets.</p>
</li>
<li><p>R has it as well.</p>
</li>
<li><p>Stata, but unsure about custom restrictions.</p>
</li>
</ul>
<p>Note that there are number conditions for implementing restrictions on contemporaneous relationships between variables. The EViews documentation explains that. From your comment it looks like you may have under-identified the A matrix (i.e. asking for too many coefficients to be estimated). That might be the reason why you get an error.</p>

CC BY-SA 4.0
2021-07-10T12:26:47.713Z
Anything more concrete about R? The universe of packages is so large there that practical relevance of the answer requires some further guidance than just listing R as such.
Richard Hardy
CC BY-SA 4.0
2021-07-10T15:23:30.567Z
Indeed. The package I have looked at is 'vars' (in conjunction with 'tseries'). For more sophisticated identification, for example via heteroskedasticity, you can use the 'svars' package on top.
BrsG
CC BY-SA 4.0
2021-07-10T08:04:37.557Z
2021-07-10T10:22:37.610Z
2021-07-10T10:22:37.610Z
BrsG
<p>Aside the solutions mentioned in the other answer you can also estimate it in:</p>
<ul>
<li><p><a href="https://lucabrugnolini.github.io/code/" rel="nofollow noreferrer">Julia</a></p>
</li>
<li><p><a href="https://www.mathworks.com/matlabcentral/fileexchange/34358-a-small-structural-var-package-for-impulse-response-analysis" rel="nofollow noreferrer">Matlab</a></p>
</li>
<li><p>Octave (this is just free version of matlab with some small changes)</p>
</li>
</ul>

CC BY-SA 4.0
2021-07-10T10:43:01.123Z
2021-07-10T10:43:01.123Z
WilliamT
<p>Which software can be used to estimate a non-recursive SVAR? Not sure though if this question belongs here but I found nothing so far on google. Or researchers using them do it manually?</p>

CC BY-SA 4.0
2021-06-24T15:52:53.470Z
If by nom recursive you mean identification comes from a strategy other than Cholesky (for example zero restrictions or long run restrictions) then you can use Stata or Eviews.
Pedro Ignacio Martinez Bruera
CC BY-SA 4.0
2021-06-25T02:42:27.993Z
@Pedro Ignacio Martinez Bruera. Thanks for the reply. It seems STATA only allows for matrix A to be lower triangular, thus, using the svar command. For the last two variables in my model (..., X, Y), I want them to contemporaneously affect each other...so I have something like this for the two rows of matrix A: (...\., ., ., ., 1, .\., ., ., ., ., 1). But I get an error. What works is  (...\., ., ., ., 1, 0\., ., ., ., ., 1), i.e., Y does not contemporaneously affect X. But I want X to contemporaneously affect Y and vice versa. Any resources on how to do that? Thanks!!
Emmanuel Ameyaw
CC BY-SA 4.0
2021-06-25T14:00:25.333Z
Hi! I haven't used stata for SVARs in a while. It's strange because I basically could do anything with matrices A and B. anyway, EViews is another software that does it for you.
Pedro Ignacio Martinez Bruera
CC BY-SA 4.0
2021-06-26T12:44:57.447Z
@Pedro Ignacio Martinez Bruera I have found an example in Eviews but I don't understand why given the model Ae = Bu, matrix A is an identity matrix in a non-recursive SVAR in Eviews, and matrix A is not an identity matrix in a recursive SVAR in Eviews. I have also asked the question here: https://economics.stackexchange.com/questions/45625/how-to-estimate-a-non-resursive-svar-in-eviews-stata
Emmanuel Ameyaw
<macroeconomics><applied-econometrics>
Which software can be used to estimate a non-recursive SVAR?
Emmanuel Ameyaw
# Which software can be used to estimate a non-recursive SVAR?

(Asked by: username_0 on 2021-06-24)

Which software can be used to estimate a non-recursive SVAR? Not sure though if this question belongs here but I found nothing so far on google. Or researchers using them do it manually?

**Tags:** macroeconomics, applied-econometrics
> **Comments:**
> **username_1**: If by nom recursive you mean identification comes from a strategy other than Cholesky (for example zero restrictions or long run restrictions) then you can use Stata or Eviews.  
> **username_0**: @Pedro Ignacio Martinez Bruera. Thanks for the reply. It seems STATA only allows for matrix A to be lower triangular, thus, using the svar command. For the last two variables in my model (..., X, Y), I want them to contemporaneously affect each other...so I have something like this for the two rows of matrix A: (...\., ., ., ., 1, .\., ., ., ., ., 1). But I get an error. What works is  (...\., ., ., ., 1, 0\., ., ., ., ., 1), i.e., Y does not contemporaneously affect X. But I want X to contemporaneously affect Y and vice versa. Any resources on how to do that? Thanks!!  
> **username_1**: Hi! I haven't used stata for SVARs in a while. It's strange because I basically could do anything with matrices A and B. anyway, EViews is another software that does it for you.  
> **username_0**: @Pedro Ignacio Martinez Bruera I have found an example in Eviews but I don't understand why given the model Ae = Bu, matrix A is an identity matrix in a non-recursive SVAR in Eviews, and matrix A is not an identity matrix in a recursive SVAR in Eviews. I have also asked the question here: https://economics.stackexchange.com/questions/45625/how-to-estimate-a-non-resursive-svar-in-eviews-stata  

---

## 2 answers

### Answer by username_4 on 2021-07-10. Score: 2 | Accepted answer

Aside the solutions mentioned in the other answer you can also estimate it in:

* [Julia](https://lucabrugnolini.github.io/code/)
* [Matlab](https://www.mathworks.com/matlabcentral/fileexchange/34358-a-small-structural-var-package-for-impulse-response-analysis)
* Octave (this is just free version of matlab with some small changes)


---

### Answer by username_2 on 2021-07-10. Score: 2

* EViews can do SVARs with custom restrictions, including some presets. You may check out their online [documentation](http://www.eviews.com/help/helpintro.html#page/content/VAR-Structural_(Identified)_VARs.html). Btw, this one is the only one to my knowledge that also does long-term restrictions on the residuals.
* Pretty sure that JMulti can also do the kind of restrictions you are after. You can get it [here](https://sourceforge.net/projects/jmulti/) for free. It's quite old so I am not sure about system requirements.
* [Statsmodels](https://www.statsmodels.org/stable/generated/statsmodels.tsa.vector_ar.svar_model.SVAR.html) (via python) might be able to do it too, but only with presets.
* R has it as well.
* Stata, but unsure about custom restrictions.

Note that there are number conditions for implementing restrictions on contemporaneous relationships between variables. The EViews documentation explains that. From your comment it looks like you may have under-identified the A matrix (i.e. asking for too many coefficients to be estimated). That might be the reason why you get an error.

> **Comments:**
> **username_3**: Anything more concrete about R? The universe of packages is so large there that practical relevance of the answer requires some further guidance than just listing R as such.  
> **username_2**: Indeed. The package I have looked at is 'vars' (in conjunction with 'tseries'). For more sophisticated identification, for example via heteroskedasticity, you can use the 'svars' package on top.  

---

