Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列4

简介: Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列

Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列3;https://developer.aliyun.com/article/1485073

自回归条件异方差模型 - ARCH(p)

ARCH(p) 模型可以简单地认为是应用于时间序列方差的 AR(p) 模型。另一种思考方式是,我们的时间序列 _在时间 t_的方差取决于对先前时期方差的过去观察。

ARCH(1) 模型公式

假设系列的均值为零,我们可以将模型表示为:

零均值的 ARCH(1) 模型

# 模拟ARCH(1)序列
# Var(yt) = a\_0 + a\_1\*y{t-1}\*\*2
# 如果a_1在0和1之间,那么yt就是白噪声
Y = np.epy_lik
for t in rng(ln()):
    Y\[t\] = w\[t * sqrt((a0 + a1\*y\[t-1\*\*2)
# 模拟的ARCH(1)序列,看起来像白噪声
plot(Y, lags=30)

模拟ARCH(1)过程

模拟ARCH(1)**2 过程

请注意 ACF 和 PACF 似乎在滞后 1 处显示显着性,表明方差的 AR(1) 模型可能是合适的。

广义自回归条件异方差模型 - GARCH(p,q)

简单地说,GARCH(p, q) 是一个应用于时间序列方差的 ARMA 模型,即它有一个自回归项和一个移动平均项。AR(p) 对残差的方差(平方误差)或简单地对我们的时间序列平方进行建模。MA(q) 部分对过程的方差进行建模。基本的 GARCH(1, 1) 公式是:

GARCH(1, 1) 公式

Omega (w) 是白噪声,alpha 和 beta 是模型的参数。此外 alpha\_1 + beta\_1 必须小于 1,否则模型不稳定。我们可以在下面模拟一个 GARCH(1, 1) 过程。

# 模拟一个GARCH(1, 1)过程
n = 10000
w = rnom.ral(sze=n)
eps = np.er_ike(w)
gsq =pzslie(w)
for i in rne1, n):
    sis\[i\] = a+ a1*(eps\[i-1\]\*\*2) + b1\*siq\[i-1\]
    es\[i\] = w\[i\] * srt(sisq\[i\])

模拟 GARCH(1, 1) 过程

再次注意到,总体上这个过程与白噪声非常相似,然而当我们查看平方的eps序列时,请看一下。

模拟 GARCH(1, 1) 过程平方

显然存在着自相关,ACF和PACF的滞后期的重要性表明我们的模型需要AR和MA。让我们看看我们是否能用GARCH(1, 1)模型恢复我们的过程参数。这里我们使用ARCH包中的arch_model函数。

# 将GARCH(1, 1)模型与我们模拟的EPS序列相匹配
# 我们使用arch函数
am = arch(ps)
fit(dae_freq=5)
summary())

GARCH 模型拟合摘要

现在让我们运行一个使用 SPY 收益的示例。过程如下:

  • 迭代 ARIMA(p, d, q) 模型的组合来拟合我们的时间序列。
  • 根据 AIC 最低的 ARIMA 模型选择 GARCH 模型阶数。
  • 将 GARCH(p, q) 模型拟合到我们的时间序列。
  • 检查模型残差和残差平方的自相关

另请注意,我选择了一个特定的时间段来更好地突出关键点。然而,根据研究的时间段,结果会有所不同。

for i in pq_g:
        for d in d_ng:
            for j in p_ng:
                try:
                    tpml = ARIMA(T,order(i,d,j).fi
                    
                    if tmp\_aic < best\_aic:
                        best_ic =mpac
                        best_oder = (i, d, j)
                        best\_ml =tm\_ml
# 注意我已经选择了一个特定的时间段来运行这个分析
bstmoel(TS)

拟合SPY收益的 ARIMA(3,0,2) 模型的残差

看起来像白噪声。

拟合SPY收益的 ARIMA(3,0,2) 模型的平方残差

平方残差显示自相关。让我们拟合一个 GARCH 模型。

# 现在我们可以使用最适合的arima模型参数来拟合arch模型
p_ = bst_dr
o= st_orde
q = bst_er
# 使用学生T分布通常能提供更好的拟合
arcd(TS, p=p_, o=o_, q=q_, 'StdensT')
fit(uat_eq=5, sp='ff')
summary

GARCH(3, 2) 模型拟合SPY收益

在处理非常小的数字时,会出现收敛警告。在必要时,将数字乘以10倍的系数以扩大幅度,可以起到帮助作用,但是对于这个演示来说,没有必要这样做。下面是模型的残差。

拟合SPY收益的 GARCH(3, 2) 模型残差

上面看起来像白噪声。现在让我们查看平方残差的 ACF 和 PACF。

我们已经实现了良好的模型拟合,因为平方残差没有明显的自相关。


相关文章
|
1天前
|
机器学习/深度学习 运维 算法
python时间序列异常检测ADTK
`adtk`是Python中用于无监督时间序列异常检测的工具包,包含简单算法、特征加工和流程控制。安装使用`pip install adtk`。数据要求为`DatetimeIndex`格式。异常检测包括滑动窗口统计特征、季节性拆解、降维和重构。提供了ThresholdAD、QuantileAD、InterQuartileRangeAD、GeneralizedESDTestAD等离群点检测算法,以及PersistAD和LevelShiftAD检测突变。此外,SeasonalAD用于季节性异常检测,Pipeline可组合多种算法。5月更文挑战第16天
19 5
python时间序列异常检测ADTK
|
5天前
|
索引 Python
【Python操作基础】——序列
【Python操作基础】——序列
|
5天前
|
机器学习/深度学习 数据采集 算法
【Python机器学习专栏】使用机器学习预测股票价格
【4月更文挑战第30天】本文探讨了使用Python和机器学习预测股票价格的方法,包括数据收集(如开盘价、收盘价等)、预处理(缺失值填充、异常值处理、标准化)、特征选择(技术指标、基本面指标、市场情绪)和工程、模型选择(线性回归、SVM、神经网络等)、训练与调优。模型评估涉及准确率、召回率等指标,并强调实际应用中需考虑多种因素,未来研究可探索深度学习的应用及数据质量与安全。
|
5天前
|
数据采集 数据挖掘 测试技术
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
python、R语言ARIMA-GARCH分析南方恒生中国企业ETF基金净值时间序列分析
|
5天前
|
vr&ar Python
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
Python自激励阈值自回归(SETAR)、ARMA、BDS检验、预测分析太阳黑子时间序列数据
|
17小时前
|
数据采集 算法 Python
2024年Python最全python基础入门:高阶函数,小米面试编程题
2024年Python最全python基础入门:高阶函数,小米面试编程题
|
17小时前
|
数据采集 人工智能 前端开发
干货满满,转行逆袭,0编程基础学Python拿高薪offer如何做?都在这里!
干货满满,转行逆袭,0编程基础学Python拿高薪offer如何做?都在这里!
|
3天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
5天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
9 1
|
5天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
33 5