# VAR fit (no constant term) results = VAR(mdata).fit(ic='bic', verbose=True, trend='nc') results.plot() print(results.summary()) # Selected lag order print('Selected Order:', results.k_ar) # AIC & BIC of different lags for p in range(8): res = VAR(mdata).fit(p, trend='nc') print(res.k_ar, '&', round(res.aic, 6), '&', round(res.bic, 6), '\\\\') # Stability print(results.is_stable(True)) # Residual normality print(results.test_normality().summary()) # Granger causality names = ['r', 'IndProd', 'Unemp'] for n in names: print('Granger for', n) # Factor `n` caused by its complement print(results.test_causality(n, list(set(names) - set(n))).summary()) # Impulse Response Analysis irf = results.irf(10) irf.plot(orth=False) plt.show()
# ============================================================================= # Granger causality test # ============================================================================= grangercausalitytests(df1.loc[:, ['atap', 'asvi']], 5) grangercausalitytests(df1.loc[:, ['asvi', 'atap']], 5) # ============================================================================= # Impulse response - daily # ============================================================================= df1_tmp = df1.loc[:, ['asvi', 'atap', 'ret']] results = VAR(df1_tmp).fit(5) # results.plot() # results.plot_acorr() irf = results.irf(10) fig = irf.plot(orth=True) out_dir = '/Users/leihao/Documents/ATAP/' fig.savefig(out_dir + 'daily13_impulse_final_norm_nooutlier.png', dpi=400) # ============================================================================= # Merge: 10 year T-Note # ============================================================================= tmp1 = pd.merge(df_tap.tap, df_gsvi_bond.Bonds, how='inner', left_index=True, right_index=True) df1 = pd.merge(tmp1, df10_daily.ret, how='inner',