print 'is AR({0}) model stable: {1}'.format(my_res_ar['maxlag'], is_stable(my_res_ar['roots'])) # Cross-checks print "\ AR({12}).fit.params={0} \n MY_AR({13}) params={1} \n\ AR({12}).fit.llf={2} \n MY_AR({13}) llf={3} \n\ AR({12}).fit.nobs={4} \n MY_AR({13}) nobs={5} \n\ AR({12}).fit.cov_params(scale=ols_scale)={6} \n MY_AR({13}) cov_params={7} \n\ AR({12}).fit.bse={8} \n MY_AR({13}) bse={9} \n\ AR({12}).fit.tvalues={10} \n MY_AR({13}) tvalue={11} \n\ AR({12}).fit.k_ar={12} \n MY_AR({13}) maxlag={13} \n\ ".format( sm_res_ar.params, my_res_ar['params'], sm_res_ar.llf, np.array(my_res_ar['llf']), sm_res_ar.nobs, my_res_ar['nobs'], sm_res_ar.cov_params(scale=my_res_ar['ols_scale']), my_res_ar['cov_params'], sm_res_ar.bse, my_res_ar['bse'], sm_res_ar.tvalues, my_res_ar['tvalue'], sm_res_ar.k_ar, my_res_ar['maxlag'] ) tau = 1. / 252. # ok for daily frequency data # AR(1) my_C = my_res_ar['params'][0] my_B = my_res_ar['params'][1] my_theta = - np.log(my_B) / tau my_mu_e = my_C / (1. - my_B) my_sigma_ou = np.sqrt((2 * my_theta / (1 - np.exp(-2 * my_theta * tau))) * my_res_ar['sigma']) my_sigma_e = my_sigma_ou / np.sqrt(2 * my_theta) my_halflife = np.log(2) / my_theta