赞
踩
import pandas as pd
SHret=pd.read_table('TRD_IndexSum.txt', index_col='Trddt', sep='\t')
/Users/yaochenli/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: FutureWarning: read_table is deprecated, use read_csv instead.
"""Entry point for launching an IPython kernel.
SHret.index=pd.to_datetime(SHret.index)
SHret.head()
Retindex | |
---|---|
Trddt | |
2009-01-05 | 0.032904 |
2009-01-06 | 0.030004 |
2009-01-07 | -0.006780 |
2009-01-08 | -0.023821 |
2009-01-09 | 0.014205 |
import matplotlib.pyplot as plt
import numpy as np
plt.subplot(211)
plt.plot(SHret**2)
plt.xticks([])
plt.title('Squared Daily Return of SH Index')
plt.subplot(212)
plt.plot(np.abs(SHret))
plt.title('Absolute Daily Return of SH index')
/Users/yaochenli/anaconda3/lib/python3.7/site-packages/pandas/plotting/_converter.py:129: FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.
To register the converters:
>>> from pandas.plotting import register_matplotlib_converters
>>> register_matplotlib_converters()
warnings.warn(msg, FutureWarning)
Text(0.5, 1.0, 'Absolute Daily Return of SH index')
from statsmodels.tsa import stattools
LjungBox=stattools.q_stat(stattools.acf(SHret**2)[1:13],len(SHret))
LjungBox[1][-1]
2.2324582490602845e-43
from arch import arch_model
am = arch_model(SHret)
model=am.fit()
Iteration: 1, Func. Count: 6, Neg. LLF: -4464.281255289449 Iteration: 2, Func. Count: 19, Neg. LLF: -4464.512186616303 Iteration: 3, Func. Count: 32, Neg. LLF: -4464.710590460396 Iteration: 4, Func. Count: 45, Neg. LLF: -4464.735814639209 Iteration: 5, Func. Count: 61, Neg. LLF: -4464.735819191423 Positive directional derivative for linesearch (Exit mode 8) Current function value: -4464.735821909855 Iterations: 9 Function evaluations: 61 Gradient evaluations: 5 /Users/yaochenli/anaconda3/lib/python3.7/site-packages/arch/univariate/base.py:577: ConvergenceWarning: The optimizer returned code 8. The message is: Positive directional derivative for linesearch See scipy.optimize.fmin_slsqp for code meaning. ConvergenceWarning)
print(model.summary())
Constant Mean - GARCH Model Results ============================================================================== Dep. Variable: Retindex R-squared: -0.000 Mean Model: Constant Mean Adj. R-squared: -0.000 Vol Model: GARCH Log-Likelihood: 4464.74 Distribution: Normal AIC: -8921.47 Method: Maximum Likelihood BIC: -8900.16 No. Observations: 1522 Date: Wed, Aug 14 2019 Df Residuals: 1518 Time: 14:12:36 Df Model: 4 Mean Model ============================================================================= coef std err t P>|t| 95.0% Conf. Int. ----------------------------------------------------------------------------- mu 3.3255e-04 3.181e-04 1.045 0.296 [-2.909e-04,9.561e-04] Volatility Model ============================================================================ coef std err t P>|t| 95.0% Conf. Int. ---------------------------------------------------------------------------- omega 3.7169e-06 8.137e-14 4.568e+07 0.000 [3.717e-06,3.717e-06] alpha[1] 0.0500 3.320e-04 150.614 0.000 [4.935e-02,5.065e-02] beta[1] 0.9300 3.204e-03 290.305 0.000 [ 0.924, 0.936] ============================================================================ Covariance estimator: robust WARNING: The optimizer did not indicate successful convergence. The message was Positive directional derivative for linesearch. See convergence_flag.
ϵ
t
=
σ
t
u
t
\epsilon_t=\sigma_t u_t
ϵt=σtut
σ
t
2
=
3.7169
∗
1
0
−
6
+
0.05
ϵ
t
−
1
2
+
0.93
σ
t
−
1
2
\\\sigma^2_t=3.7169*10^{-6}+0.05 \epsilon_{t-1}^2+0.93 \sigma^2_{t-1}
σt2=3.7169∗10−6+0.05ϵt−12+0.93σt−12
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。