Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据

原文链接:http://tecdat.cn/?p=24407

最近我们被客户要求撰写关于金融时间序列模型的研究报告,包括一些图形和统计输出。

这篇文章讨论了自回归综合移动平均模型 (ARIMA) 和自回归条件异方差模型 (GARCH) 及其在股票市场预测中的应用 点击文末“阅读原文”获取完整代码数据******** )。

介绍

一个 ARMA (AutoRegressive-Moving Average)") 有两部分,AR(p)部分和MA(q)部分,表示如下

图片

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第1张图片

其中 L 是滞后算子,ϵi 是白噪声。它可以通过 Box-Jenkins method. 我们可能会使用 PACF 绘制识别 AR 滞后阶数 p,和 ACF 图以识别 MA 滞后阶数 q;或使用信息,例如 AIC 和 BIC 做模型选择。

ARIMA (AutoRegressive Integrated Moving Average)") 是 ARMA 的拓展,通过为非平稳过程添加阶数为 d 的积分部分。

ARIMA是针对价格水平或收益率的,而GARCH(广义自回归条件异方差)则试图对波动率或收益率平方的聚类进行建模。它将ARMA项扩展到方差方面。

图片

图片

作为随机波动率模型的离散版本,GARCH也能捕捉到股票市场的厚尾效应。因此,将ARIMA和GARCH结合起来,预计在模拟股票价格时比单独一个模型更适合。在这篇文章中,我们将把它们应用于标普500指数的价格。

ARIMA

首先,众所周知,股票价格不是平稳的;而收益可能是平稳的。ADF单位根检验结果。

# 价格是已知的非平稳的;收益是平稳的
import adfuller

rsut = aduler(close)
prnt(f'ADF Satitic: {reslt[]}, pale: {rslt1]}')  # null 假设:单位根存在;不能拒绝 null。

relt = adfler(histet)
prnt(f'ADF Statistic: {reut[0]}, pvaue: {rslt[1]}')   # 拒绝单位根的空假设 ==> 平稳

收益序列的 ADF p 值为 0,拒绝单位根的原假设。因此,我们在 ARIMA(p, d, q) 中接受 d=1,下一步是识别滞后 p 和 q。ACF 和 PACF 图表明滞后最多 35 个工作日。如果我们按照图表进行拟合,将有太多参数无法拟合。一种解决方案是使用每周或每月图表。在这里,我们将最大滞后时间限制为 5 天,并使用 AIC 选择最佳模型。

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第2张图片

for p in rage(6):
    for q in rage(6):
        ry:
            mft = fit(disp=0)
            ic[(p, q)] = fiaic
        except:
            pass

下一步是拟合模型并通过残差统计评估模型拟合。残差仍然显示出一些自相关,并且没有通过正态性检验。由于滞后阶数限制,这在某种程度上是预料之中的。

尽管如此,让我们继续最后一步并使用模型进行预测。下面比较了对测试集的收益率预测和实际收益率。

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第3张图片

收益率预测以 0% 为中心,置信区间在 ±2% 之间。结果并不是特别令人印象深刻。毕竟,市场正在经历一个动荡的阶段,在预测时间窗口内甚至下跌了 6%。


点击标题查阅往期内容

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第4张图片

R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列

图片

左右滑动查看更多

图片

01

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第5张图片

02

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第6张图片

03

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第7张图片

04

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第8张图片

GARCH

让我们看看加入GARCH效果是否会产生更好的结果。建模过程类似于ARIMA:首先识别滞后阶数;然后拟合模型并评估残差,最后如果模型令人满意,就用它来预测。

我们将 AR 滞后和 GARCH 滞后都限制为小于 5。结果最优阶为 (4,2,2)。

for l in rage(5):
    for p in rage(1, 5):
        for q in rage(1, 5):
            try:
                mdl = arch(is_et, man='ARX',  vol='Garch', p=p, o=0, q=q, dist='Nomal')
                fit(last_obs=spldat)
                dc_ic[(l, p, q)] =aic
            except:
                pass

接下来让我们根据选择的最佳参数来拟合模型,如下所示。证实了均值模型是AR(4),方差模型是GARCH(2, 2)。一些系数在统计上不显着。

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第9张图片

最后但并非最不重要的是,预测区间从±4%下降到±3%,然后又反弹到±5%,这清楚地表明了模型的波动性集群。请注意,这里是单步滚动预测,应该比静态的多期预测要好。

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第10张图片

趋势平稳和差分平稳

趋势平稳,即确定性趋势,具有确定性均值趋势。相反,差分平稳具有随机趋势。前者可以用OLS估计,后者需要先求差分。

考虑一个简单的过程

图片

如果 φ<1,则过程是趋势平稳的;也就是说,如果我们减去趋势 at,则过程变得平稳。若φ=1,则差分平稳。将第二个方程代入第一个方程很容易看出随机性,并将方程改写为

图片

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据_第11张图片

点击文末 “阅读原文”

获取全文完整资料。

本文选自《Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用》。

点击标题查阅往期内容

金融时间序列模型ARIMA 和GARCH 在股票市场预测应用\
时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格\
R语言ARIMA-GARCH波动率模型预测股票市场苹果公司日收益率时间序列\
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格\
R语言多元Copula GARCH 模型时间序列预测\
python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化\
R语言中的copula GARCH模型拟合时间序列并模拟分析\
matlab使用Copula仿真优化市场风险数据VaR分析\
R语言多元Copula GARCH 模型时间序列预测\
R语言Copula函数股市相关性建模:模拟Random Walk(随机游走)\
R语言实现 Copula 算法建模依赖性案例分析报告\
R语言ARMA-GARCH-COPULA模型和金融时间序列案例\
R语言基于copula的贝叶斯分层混合模型的诊断准确性研究\
R语言COPULA和金融时间序列案例\
matlab使用Copula仿真优化市场风险数据VaR分析\
matlab使用Copula仿真优化市场风险\
R语言多元CopulaGARCH模型时间序列预测\
R语言Copula的贝叶斯非参数MCMC估计\
R语言COPULAS和金融时间序列R语言乘法GARCH模型对高频交易数据进行波动性预测\
R语言GARCH-DCC模型和DCC(MVT)建模估计\
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测\
R语言时间序列GARCH模型分析股市波动率\
R语言ARMA-EGARCH模型、集成预测算法对SPX实际波动率进行预测\
matlab实现MCMC的马尔可夫转换ARMA - GARCH模型估计\
Python使用GARCH,EGARCH,GJR-GARCH模型和蒙特卡洛模拟进行股价预测\
使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略\
R语言用多元ARMA,GARCH ,EWMA, ETS,随机波动率SV模型对金融时间序列数据建模\
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析\
R语言多元Copula GARCH 模型时间序列预测\
R语言使用多元AR-GARCH模型衡量市场风险\
R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格\
R语言用Garch模型和回归模型对股票价格分析\
GARCH(1,1),MA以及历史模拟法的VaR比较\
matlab估计arma garch 条件均值和方差模型\
R语言ARMA-GARCH-COPULA模型和金融时间序列案例

你可能感兴趣的:(Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据)