'Fit the SVAR model and solve for structural parameters
Parameters
A_guess : array-like, optional
A vector of starting values for all parameters to be estimated
in A.
B_guess : array-like, optional
A vector of starting values for all parameters to be estimated
in B.
maxlags : int
Maximum number of lags to check for order selection, defaults to
12 * (nobs/100.)**(1./4), see select_order function
method : {\'ols\'}
Estimation method to use
ic : {\'aic\', \'fpe\', \'hqic\', \'bic\', None}
Information criterion to use for VAR order selection.
aic : Akaike
fpe : Final prediction error
hqic : Hannan-Quinn
bic : Bayesian a.k.a. Schwarz
verbose : bool, default False
Print order selection output to the screen
trend, str {"c", "ct", "ctt", "nc"}
"c" - add constant
"ct" - constant and trend
"ctt" - constant, linear and quadratic trend
"nc" - co constant, no trend
Note that these are prepended to the columns of the dataset.
s_method : {\'mle\'}
Estimation method for structural parameters
solver : {\'nm\', \'newton\', \'bfgs\', \'cg\', \'ncg\', \'powell\'}
Solution method
See statsmodels.base for details
override : bool, default False
If True, returns estimates of A and B without checking
order or rank condition
maxiter : int, default 500
Number of iterations to perform in solution method
maxfun : int
Number of function evaluations to perform
Notes
Lutkepohl pp. 146-153
Hamilton pp. 324-336
Returns
est : SVARResults'

def fit(self, A_guess=None, B_guess=None, maxlags=None, method='ols', ic=None, trend='c', verbose=False, s_method='mle', solver='bfgs', override=False, maxiter=500, maxfun=500):

    lags = maxlags
    if (ic is not None):
        selections = self.select_order(maxlags=maxlags, verbose=verbose)
        if (ic not in selections):
            raise Exception(('%s    not    recognized,    must    be    among    %s' % (ic, sorted(selections))))
        lags = selections[ic]
        if verbose:
            print(('Using    %d    based    on    %s    criterion' % (lags, ic)))
    elif (lags is None):
        lags = 1
    self.nobs = (len(self.endog) - lags)
    start_params = self._get_init_params(A_guess, B_guess)
    return self._estimate_svar(start_params, lags, trend=trend, solver=solver, override=override, maxiter=maxiter, maxfun=maxfun)
