1 import warnings
2 warnings.simplefilter('ignore')%matplotlib inline
3 import seaborn
4 seaborn.mpl.rcParams['figure.figsize'] = (10.0, 6.0)
5 seaborn.mpl.rcParams['savefig.dpi'] = 90
1 import datetime as dt
2 import pandas_datareader.data as web
3 st = dt.datetime(1990,1,1)
4 en = dt.datetime(2016,1,1)
5 data = web.get_data_yahoo('^GSPC', start=st, end=en)
6 returns = 100 * data['Adj Close'].pct_change().dropna()
7 figure = returns.plot()
1 from arch import arch_model
2 am = arch_model(returns)
3 res = am.fit(update_freq=5)
4 print(res.summary())
1 fig = res.plot(annualize='D')
1 am = arch_model(returns, p=1, o=1, q=1)
2 res = am.fit(update_freq=5, disp='off')
3 print(res.summary())
1 am = arch_model(returns, p=1, o=1, q=1, power=1.0)
2 res = am.fit(update_freq=5)
3 print(res.summary())
1 am = arch_model(returns, p=1, o=1, q=1, power=1.0, dist='StudentsT')
2 res = am.fit(update_freq=5)
3 print(res.summary())
1 fixed_res = am.fix([0.0235, 0.01, 0.06, 0.0, 0.9382, 8.0])
2 print(fixed_res.summary())
1 import pandas as pd
2 df = pd.concat([res.conditional_volatility,fixed_res.conditional_volatility],1)
3 df.columns = ['Estimated', 'Fixed']
4 df.plot()