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

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

前言

在量化金融中,我学习了各种时间序列分析技术以及如何使用它们。

通过发展我们的时间序列分析 (TSA) 方法组合,我们能够更好地了解已经发生的事情,_并对_未来做出更好、更有利的预测。示例应用包括预测未来资产收益、未来相关性/协方差和未来波动性。

在我们开始之前,让我们导入我们的 Python 库。

import pandas as pd
import numpy as np

让我们使用pandas包通过 API 获取一些示例数据。

# 原始调整后的收盘价
daa = pdDatrme({sx(sm)for sm i syos})
# 对数收益率
ls = log(dta/dat.sit(1)).dropa()

基础知识

什么是时间序列?

时间序列是按时间顺序索引的一系列数据点。——Wikipedia

平稳性

为什么我们关心平稳性?

  • 平稳时间序列 (TS) 很容易预测,因为我们可以假设未来的统计属性与当前的统计属性相同或成比例。
  • 我们在 TSA 中使用的大多数模型都假设协方差平稳。这意味着这些模型预测的描述性统计数据(例如均值、方差和相关性)仅在 TS 平稳时才可靠,否则无效。
“例如,如果序列随着时间的推移不断增加,样本均值和方差会随着样本规模的增加而增长,并且他们总是会低估未来时期的均值和方差。如果一个序列的均值和方差是没有明确定义,那么它与其他变量的相关性也不是。”

话虽如此,我们在金融中遇到的大多数 TS 都不是平稳的。因此,TSA 的很大一部分涉及识别我们想要预测的序列是否是平稳的,如果不是,我们必须找到方法将其转换为平稳的。(稍后会详细介绍)

自相关

本质上,当我们对时间序列建模时,我们将序列分解为三个部分:趋势、季节性/周期性和随机。随机分量称为残差或误差。它只是我们的预测值和观察值之间的差异。序列相关是指我们的 TS 模型的残差(误差)彼此相关。

为什么我们关心序列相关性?

我们关心序列相关性,因为它对我们模型预测的有效性至关重要,并且与平稳性有着内在的联系。回想一下,根据定义,_平稳_TS的残差(误差)是连续_不相关_的!如果我们在我们的模型中没有考虑到这一点,我们系数的标准误差就会被低估,从而夸大了我们的 T 统计量。结果是太多的 1 类错误,即使原假设为真,我们也会拒绝原假设!通俗地说,忽略自相关意味着我们的模型预测将是胡说八道,我们可能会得出关于模型中自变量影响的错误结论。

白噪声和随机游走

白噪声是我们需要了解的第一个时间序列模型(TSM)。根据定义,作为白噪声过程的时间序列具有连续不相关的误差,这些误差的预期平均值等于零。对连续不相关的误差的另一种描述是,独立和相同分布(i.i.d.)。这一点很重要,因为如果我们的TSM是合适的,并且成功地捕捉了基本过程,我们模型的残差将是i.i.d.,类似于白噪声过程。因此,TSA的一部分实际上是试图将一个模型适合于时间序列,从而使残差序列与白噪声无法区分。

让我们模拟一个白噪声过程并查看它。下面我介绍一个方便的函数,用于绘制时间序列和直观地分析序列相关性。

我们可以轻松地对白噪声过程进行建模并输出 TS 图检查。

np.random.seed(1)
# 绘制离散白噪声的曲线
ads = radooral(size=1000)
plot(ads, lags=30)

高斯白噪声

我们可以看到该过程似乎是随机的并且以零为中心。自相关 (ACF) 和偏自相关 (PACF) 图也表明没有显着的序列相关。请记住,我们应该在自相关图中看到大约 5% 的显着性,这是由于从正态分布采样的纯偶然性。下面我们可以看到 QQ 和概率图,它们将我们的数据分布与另一个理论分布进行了比较。在这种情况下,该理论分布是标准正态分布。显然,我们的数据是随机分布的,并且应该遵循高斯(正常)白噪声。

p("nmean: {:.3f}\\{:.3f}\\stde: {:.3f}"
.format(ademean(), nerva(), der.td()))

随机游走的意义在于它是非平稳的,因为观测值之间的协方差是时间相关的。如果我们建模的 TS 是随机游走,则它是不可预测的。

让我们使用“random”函数从标准正态分布中采样来模拟随机游走。

# 没有漂移的随机行走
np.rao.sed(1)
n = 1000
x = w = np.aonral(size=n)
for t in rnge(_sples):
    x\[t\] = x\[t-1\] + w\[t\]
splt(x, las=30)

无漂移的随机行走

显然,我们的 TS 不是平稳的。让我们看看随机游走模型是否适合我们的模拟数据。回想一下随机游走是xt = xt-1 + wt。使用代数我们可以说xt - xt-1 = wt。因此,我们随机游走系列的第一个差异应该等于白噪声过程,我们可以在我们的 TS 上使用“ np.diff()” 函数,看看这是否成立。

# 模拟的随机游走的第一个差值
plt(p.dffx), las=30)

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

相关文章
|
2天前
|
机器学习/深度学习 数据采集 数据可视化
python用回归、arima、随机森林、GARCH模型分析国债期货波动性、收益率、价格预测
python用回归、arima、随机森林、GARCH模型分析国债期货波动性、收益率、价格预测
10 1
|
7天前
|
API vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列(上)
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
38 5
|
7天前
|
vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列(下)
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
31 3
|
7天前
|
资源调度 数据挖掘 vr&ar
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列(中)
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
25 2
|
6天前
|
存储
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析(上)
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
|
6天前
|
索引
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析(中)
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
13 1
|
6天前
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析(下)
R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析
12 1
|
13天前
|
vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列4
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
38 0
|
13天前
|
资源调度 数据挖掘 vr&ar
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列3
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
25 0
|
13天前
|
vr&ar Python
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列2
Python 用ARIMA、GARCH模型预测分析股票市场收益率时间序列
24 0