def VarianceRatioTest(data, printResults=True, trend=None, lags=None): options_Trend = trend if trend != None else {'nc','c'} options_Lags = lags if lags != None else {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24} results = dict() for column in data.columns: print("Variance Ratio test for column: " + column) results_Trend = dict() for option_Trend in options_Trend: results_Lag = dict() for option_Lag in options_Lags: result = VarianceRatio(data[column].dropna(), trend=option_Trend, lags=option_Lag) if printResults: result.summary() results_Lag[option_Lag] = result results_Trend[option_Trend] = results_Lag results[column] = results_Trend return results
import statsmodels.tsa.stattools as st import matplotlib.pylab as plt import numpy as np import pandas as pd df_caus = pd.read_csv('USDCAD.csv') plt.hold(False) df_caus.y.plot() #plt.show() print st.adfuller(df_caus.y,maxlag=1) import hurst as h print 'H doviz kuru', h.hurst(df_caus.y) from arch.unitroot import VarianceRatio vr = VarianceRatio(np.log(df_caus.y)) print(vr.summary().as_text()) df_caus['ylag'] = df_caus['y'].shift(1) df_caus['deltaY'] = df_caus['y'] - df_caus['ylag'] import statsmodels.formula.api as smf results = smf.ols('deltaY ~ ylag', data=df_caus).fit() lam = results.params['ylag'] print lam halflife=-np.log(2)/lam print halflife, 'days'
plt.xlabel('Possible range of data values') # Pull up summary statistics print(lh.describe()) adf = ADF(lh['Close']) print(adf.summary().as_text()) kpss = KPSS(lh['Close']) print(kpss.summary().as_text()) dfgls = DFGLS(lh['Close']) print(dfgls.summary().as_text()) pp = PhillipsPerron(lh['Close']) print(pp.summary().as_text()) za = ZivotAndrews(lh['Close']) print(za.summary().as_text()) vr = VarianceRatio(lh['Close'], 12) print(vr.summary().as_text()) from arch import arch_model X = 100 * lh import datetime as dt am = arch_model(X, p=4, o=0, q=0, vol='Garch', dist='StudentsT') res = am.fit(last_obs=dt.datetime(2003, 12, 31)) forecasts = res.forecast(horizon=1, start='2004-1-1') cond_mean = forecasts.mean['2004':] cond_var = forecasts.variance['2004':] / 31 print(res.summary()) # acf and pacf test from statsmodels.graphics.tsaplots import plot_acf, plot_pacf