you should not do factorization manually, use param ortho=True
import statsmodels.tsa as sm
model = sm.vector_ar.var_model.VAR(endog = df)
fitted = model.fit(maxlags=8, ic='aic')
irf= fitted.irf(10)
irf.plot(orth=True)
plt.show()
for lutkepohl_data
you'll get such result