量化投资基础(四)之AR、MA、ARMA与ARIMA模型

news2024/11/22 20:29:36

点赞、关注,养成良好习惯
Life is short, U need Python
量化投资基础系列,不断更新中


1 引言

时间序列经典模型主要有:

  • 自回归模型(Auto Regressive,AR)
  • 移动回归模型(Moving Average,MA)
  • 移动自回归模型(Auto Regressive Moving Average,ARMA)
  • 差分移动自回归模型(Auto Regressive Integrated Moving Average,ARIMA)

本案例主要介绍这四种模型的基本原理以及以沪深300指数收盘价数据为例,探讨如何使用Python对平稳时间序列进行建模和预测分析。

2 AR模型

2.1 理论介绍

自回归模型(Auto Regressive,AR)是一个线性模型,将时间序列变量当期值作为被解释变数、过去期的历史值当作解释变数,因此被称作自回归模型。 p p p 阶自回归模型,即 AR( p p p) 的一般表达式为:
x t = ϕ 0 + ϕ 1 x t − 1 + ϕ 2 x t − 2 + … + ϕ p x t − p + ε t x_t=\phi_0+\phi_1 x_{t-1}+\phi_2 x_{t-2}+\ldots+\phi_p x_{t-p}+\varepsilon_t xt=ϕ0+ϕ1xt1+ϕ2xt2++ϕpxtp+εt
其中, { ε t } \left\{\varepsilon_t\right\} {εt} 是一个零均值、独立、同分布的白噪声序列,即满足:
E ( ε t ) = 0 ; Var ⁡ ( ε t ) = σ ε 2 ; E ( ε t ε s ) = 0 ,    ∀   s ≠ t \mathbb{E}\left(\varepsilon_t\right)=0 ; \quad \operatorname{Var}\left(\varepsilon_t\right)=\sigma_{\varepsilon}^2 ; \quad \mathbb{E}\left(\varepsilon_t \varepsilon_s\right)=0, \ \ \forall \ s \neq t E(εt)=0;Var(εt)=σε2;E(εtεs)=0,   s=t
且解释变数 x s x_s xs 与残差项 ε t \varepsilon_t εt 无相关性,即 E ( x s ε t ) = 0 , ∀ s < t \mathbb{E}\left(x_s \varepsilon_t\right)=0,\forall s<t E(xsεt)=0s<t 。为了研究 AR 模型的统计性质,假设平稳的时间序列 x t x_t xt 可以用 AR( 2 2 2) 模型来刻画:
x t = ϕ 0 + ϕ 1 x t − 1 + ϕ 2 x t − 2 + ε t ,     ∣ ϕ 1 ∣ < 1 ,   ∣ ϕ 2 ∣ < 1 x_t=\phi_0+\phi_1 x_{t-1}+\phi_2 x_{t-2}+\varepsilon_t,\ \ \ |\phi_1|<1,\ |\phi_2|<1 xt=ϕ0+ϕ1xt1+ϕ2xt2+εt,   ϕ1<1, ϕ2<1
由于平稳时间序列的均值不变,则
μ = E ( x t ) = ϕ 0 + ϕ 1 E ( x t − 1 ) + ϕ 2 E ( x t − 2 ) + E ( ε t ) \mu=\mathbb{E}\left(x_t\right)=\phi_0+\phi_1 \mathbb{E}\left(x_{t-1}\right)+\phi_2 \mathbb{E}\left(x_{t-2}\right)+\mathbb{E}\left(\varepsilon_t\right) μ=E(xt)=ϕ0+ϕ1E(xt1)+ϕ2E(xt2)+E(εt)

μ = ϕ 0 + ϕ 1 μ + ϕ 2 μ + 0 μ = ϕ 0 1 − ϕ 1 − ϕ 2 \begin{aligned} \mu & =\phi_0+\phi_1 \mu+\phi_2 \mu+0 \\ \mu & =\frac{\phi_0}{1-\phi_1-\phi_2} \end{aligned} μμ=ϕ0+ϕ1μ+ϕ2μ+0=1ϕ1ϕ2ϕ0
于是
x t − μ = ϕ 0 + ϕ 1 ( x t − 1 − μ ) + ϕ 2 ( x t − 2 − μ ) + ( ϕ 1 + ϕ 2 − 1 ) μ + ε t = ϕ 1 ( x t − 1 − μ ) + ϕ 2 ( x t − 2 − μ ) + ε t \begin{aligned} x_t-\mu & =\phi_0+\phi_1\left(x_{t-1}-\mu\right)+\phi_2\left(x_{t-2}-\mu\right)+\left(\phi_1+\phi_2-1\right) \mu+\varepsilon_t \\ & =\phi_1\left(x_{t-1}-\mu\right)+\phi_2\left(x_{t-2}-\mu\right)+\varepsilon_t \end{aligned} xtμ=ϕ0+ϕ1(xt1μ)+ϕ2(xt2μ)+(ϕ1+ϕ21)μ+εt=ϕ1(xt1μ)+ϕ2(xt2μ)+εt
将上式两边分别乘以 ( x t − 1 − μ ) \left(x_{t-1}-\mu\right) (xt1μ) 并取期望再除以方差 γ 0 \gamma_0 γ0 之后,可以得到以下公式:
γ 1 γ 0 = ϕ 1 γ 0 γ 0 + ϕ 2 γ 1 γ 0 \frac{\gamma_1}{\gamma_0}=\phi_1 \frac{\gamma_0}{\gamma_0}+\phi_2 \frac{\gamma_1}{\gamma_0} γ0γ1=ϕ1γ0γ0+ϕ2γ0γ1
其中, γ 1 = C o v ( x t , x t − 1 ) \gamma_1=Cov(x_{t},x_{t-1}) γ1=Cov(xt,xt1) γ 0 = C o v ( x t , x t ) = V a r ( x t ) \gamma_0=Cov(x_{t},x_{t})=Var(x_t) γ0=Cov(xt,xt)=Var(xt)

ρ 1 = ϕ 1 + ϕ 2 ρ 1 \rho_1=\phi_1+\phi_2 \rho_1 ρ1=ϕ1+ϕ2ρ1
从而
ρ 1 = ϕ 1 1 − ϕ 2 \rho_1=\frac{\phi_1}{1-\phi_2} ρ1=1ϕ2ϕ1
同样的方式乘以 ( x t − 2 − μ ) \left(x_{t-2}-\mu\right) (xt2μ) 并取期望再除以方差 γ 0 \gamma_0 γ0 可得:
ρ 2 = ϕ 1 ρ 1 + ϕ 2 \rho_2=\phi_1 \rho_1+\phi_2 ρ2=ϕ1ρ1+ϕ2
综上可知:
ρ 1 = ϕ 1 1 − ϕ 2 ρ 2 = ϕ 1 ρ 1 + ϕ 2 \begin{aligned} \rho_1 & =\frac{\phi_1}{1-\phi_2} \\ \rho_2 & =\phi_1 \rho_1+\phi_2 \end{aligned} ρ1ρ2=1ϕ2ϕ1=ϕ1ρ1+ϕ2

同样的方式时乘以 ( x t − k − μ ) , ∀ k ⩾ 3 \left(x_{t-k}-\mu\right), \forall k \geqslant 3 (xtkμ),k3, 可得三阶以上(包含三阶)的自相关系数:

ρ k = ϕ 1 ρ k − 1 + ϕ 2 ρ k − 2    ( k ⩾ 3 ) \rho_k=\phi_1 \rho_{k-1}+\phi_2 \rho_{k-2}\ \ (k \geqslant 3) ρk=ϕ1ρk1+ϕ2ρk2  (k3)

可以看出符合 A R ( 2 ) \mathrm{AR}(\mathrm{2}) AR(2) 模型的时间序列之 自相关系数 会随着阶数的增加而减小,但是很多阶数之后仍不等于 0 , 会呈现出所谓 拖尾 的现象。

现在将分析拓展至 A R ( p ) \mathrm{AR}(\mathrm{p}) AR(p) 模型。如果时间序列是平稳的,可得:
μ = ϕ 0 1 − ϕ 1 − ϕ 2 − ⋯ − ϕ p \mu=\frac{\phi_0}{1-\phi_1-\phi_2-\cdots-\phi_p} μ=1ϕ1ϕ2ϕpϕ0
两边减去均值 μ \mu μ 可得:
x t − μ = ϕ 1 ( x t − 1 − μ ) + ϕ 2 ( x t − 2 − μ ) + … + ϕ p ( x t − p − μ ) + ε t x_t-\mu=\phi_1\left(x_{t-1}-\mu\right)+\phi_2\left(x_{t-2}-\mu\right)+\ldots+\phi_p\left(x_{t-p}-\mu\right)+\varepsilon_t xtμ=ϕ1(xt1μ)+ϕ2(xt2μ)++ϕp(xtpμ)+εt

两边分别乘以 ( x t − μ ) \left(x_t-\mu\right) (xtμ) ( x t − 1 − μ ) 、 … \left(x_{t-1}-\mu\right) 、 \ldots (xt1μ) 并取期望再除以方差 γ 0 \gamma_0 γ0 可得:
1 = ϕ 1 ρ 1 + ϕ 2 ρ 2 + … + ϕ p ρ p ρ 1 = ϕ 1 + ϕ 2 ρ 1 + ϕ 3 ρ 2 + ⋯ + ϕ p ρ p − 1 ρ 2 = ϕ 1 ρ 1 + ϕ 2 + ϕ 3 ρ 1 + ⋯ + ϕ p ρ p − 2 ⋮ ρ p = ϕ 1 ρ p − 1 + ϕ 2 ρ p − 2 + ϕ 3 ρ p − 3 + ⋯ + + ϕ p − 1 ρ 1 + ϕ p \begin{aligned} 1 & =\phi_1 \rho_1+\phi_2 \rho_2+\ldots+\phi_p \rho_p \\ \rho_1 & =\phi_1+\phi_2 \rho_1+\phi_3 \rho_2+\cdots+\phi_p \rho_{p-1} \\ \rho_2 & =\phi_1 \rho_1+\phi_2+\phi_3 \rho_1+\cdots+\phi_p \rho_{p-2} \\ & \vdots \\ \rho_p & =\phi_1 \rho_{p-1}+\phi_2 \rho_{p-2}+\phi_3 \rho_{p-3}+\cdots++\phi_{p-1}\rho_{1}+\phi_p \end{aligned} 1ρ1ρ2ρp=ϕ1ρ1+ϕ2ρ2++ϕpρp=ϕ1+ϕ2ρ1+ϕ3ρ2++ϕpρp1=ϕ1ρ1+ϕ2+ϕ3ρ1++ϕpρp2=ϕ1ρp1+ϕ2ρp2+ϕ3ρp3+++ϕp1ρ1+ϕp
根据这些线性关系式,可以解得 ρ 1 , ρ 2 , … , ρ p \rho_1, \rho_2, \ldots, \rho_p ρ1,ρ2,,ρp,对于大于 p p p 阶的自相关系数 ρ k \rho_k ρk,也有:

ρ k = ϕ 1 ρ k − 1 + ϕ 2 ρ k − 2 + … + ϕ p ρ k − p \rho_k=\phi_1 \rho_{k-1}+\phi_2 \rho_{k-2}+\ldots+\phi_p \rho_{k-p} ρk=ϕ1ρk1+ϕ2ρk2++ϕpρkp

因此,符合 A R ( p ) \mathrm{AR}(\mathrm{p}) AR(p) 模型的平稳时间序列,其自相关系数在 p p p 阶之后依然可能不为 0 ,亦会呈现出所谓 拖尾 的现象。

AR( p p p) 模型的建模步骤

(1) 序列识别

  • 判别序列是否是平稳的。若非平稳的,则需对其变换处理使得其平稳(比如,差分、平滑、变换、分解)。
  • 判别平稳的序列是否是白噪声的。若白噪声的(白噪声序列无法构建ARMA模型),则建模结束;否则,进行下一步。

(2) 模型识别

  • 确定 p p p 的值,选择最优的模型。通过平稳序列的偏自相关函数(PACF)确定 p p p
  • 如果偏自相关函数不是很明显的话,可以尝试建立几个备选模型,然后根据AIC或BIC指标进行选择(一般选择较小的AIC或BIC值)。

(3) 模型估计

  • 模型估计即模型的参数估计,查看参数对应的 p p p 值是否显著为0。

(4) 模型诊断

  • 对模型残差序列进行检验,确保其服从正态分布的白噪声序列(可以看残差的自相关图,也可以使用假设检验方法D-W检验、Box-Ljung检验、Ljung-Box检验)。当残差序列是白噪声序列时,表明序列中信息充分提取到模型中了。

常用平稳化的方法

(1)差分:差分可以去除序列中的趋势和季节性。一阶差分可以去除线性趋势,如果还有二次趋势,还可以继续二阶差分。二阶差分后还未平稳的话就要注意了,继续差分即便最终平稳了,但是多次差分后解释力下降,且有可能造成过度差分,最差为差分后的序列为白噪声,后面也没法分析了。对于周期型序列也可以用季节差分的方式去除时间序列季节性。

(2)平滑:对当前序列值减去平滑值得到一个残差序列,当平滑结果能比较好的描述原始序列趋势特征的时候,残差序列一般是平稳的,后续可对残差序列进行建模预测。计算平滑值的方法可以用 简单移动平均加权移动平均一次指数平滑二次指数平滑等。同类思想,还可以拟合一个回归方程,用回归方程描述原始序列的趋势特征。

(3)变换:如对数变换,能够去除方差随时间增长的趋势。对数据进行取log处理,变换前的序列必须满足大于0。取对数后,原数据越大,缩小的幅度越大,可以使得方差随时间波动大的时间序列的方差变得更稳定,从而一定程度上使得序列平稳。但也不一定变换后即平稳,比如呈指数趋势的序列,变换后只能将指数趋势转化为线性趋势,此时再使用一阶差分即可将序列变得平稳,同时变换后的数据可以看成增长率的对数,解释性强。其它还有 开根号Box-Cox变换Yeo-Johonson变换等。这些变换试图将数据转换为正态分布,虽然对于平稳性来说并不总是必要的,但通常能够纠正序列的非线性问题。

(4)分解:可以将时间序列分解成3部分:长期趋势、季节变动、不规则波动。3种成分相加即加法模型,3种成分相乘即乘法模型,既加又乘即混合模型。分解目的为去除季节性的影响,分解后可对分解出的趋势项、季节项和余项分别进行预测。常用时间序列分解方法有 朴素分解X11分解SEATS分解STL分解等,其中STL分解用的较多。

2.2 实证分析

  • 本案例选取沪深300 收盘价(close)日线数据为研究对象!

读取数据

# 导入包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
import matplotlib
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')

df = pd.read_csv('000300.csv',index_col='trade_date')
df.index = pd.to_datetime(df.index)
df.head()

(1)模拟AR(1) 过程(数据来源于扰动项 ε t \varepsilon_t εt为正态分布的时间序列:np.random.normal)

import statsmodels.api as sma
import scipy.stats as scs

# 先定义一个画图函数
def ts_plot(data,lags=None,title=''): 
    if not isinstance(data, pd.Series):
        data = pd.Series(data)

    # matplotlib官方提供了五种不同的图形风格,
    # 包括:'bmh'、'ggplot'、'dark_background'、'fivethirtyeight'和'grayscale'
    with plt.style.context('ggplot'):
        fig = plt.figure(figsize=(8, 6))

    layout = (3, 2)
    ts_ax = plt.subplot2grid(layout, (0, 0), colspan=2)
    acf_ax = plt.subplot2grid(layout, (1, 0))
    pacf_ax = plt.subplot2grid(layout, (1, 1))
    qq_ax = plt.subplot2grid(layout, (2, 0))
    pp_ax = plt.subplot2grid(layout, (2, 1))

    data.plot(ax=ts_ax)
    ts_ax.set_title(title+'时序图')

    sma.graphics.tsa.plot_acf(data, lags=lags, ax=acf_ax, alpha=0.5)
    acf_ax.set_title('自相关系数')

    sma.graphics.tsa.plot_pacf(data, lags=lags, ax=pacf_ax, alpha=0.5)
    pacf_ax.set_title('偏自相关系数')

    sma.qqplot(data, line='s', ax=qq_ax)
    qq_ax.set_title('QQ 图')

    scs.probplot(data, sparams=(data.mean(),data.std()), plot=pp_ax)
    pp_ax.set_title('PP 图')

    plt.tight_layout()
    plt.show()
# 模拟AR(1) 过程:x_t = phi_0 + phi_1 * x_{t-1} + w_t
# 设置随机种子(括号里数字无意义,只是为了复现需要)
np.random.seed(1)
# 模拟次数
n = 5000
# AR模型的参数
a = 0.8                              # phi_1 = 0.8
# 扰动项为正态分布
x = w = np.random.normal(size=n)
for t in range(1,n):
    x[t] = a * x[t-1] + w[t]         # phi_0 = 0

#画图
ts_plot(x,lags=20)

在这里插入图片描述

结论:模拟的 AR(1) 模型是正态的。自相关系数图(ACF)显示滞后值之间存在显著的序列相关性,偏自相关系数图(PACF)则显示在滞后1期时截尾(迅速降为0)。

  • 假如模拟的AR(1)模型是正确的,那么估计的系数参数将很接近真实的系数0.8,选择的阶数也会等于1。
from statsmodels.tsa.ar_model import AutoReg
from statsmodels.tsa.ar_model import ar_select_order

省略代码详见资源包!

(2)利用 AR( p p p) 模型来拟合沪深300的收盘价(df.close)

省略代码详见资源包!

3 MA模型

3.1 理论介绍

MA( q q q) 模型与 AR( p p p) 模型非常相似。

不同之处在于,MA( q q q) 模型是对过去的白噪声误差项的线性组合,而不是过去观测值的线性组合。

MA 模型的动机是可以直接通过拟合误差项的模型来观察误差过程中的 “冲击”。在 AR 模型中,通过在一系列过去的观察中使用ACF间接观察到这些冲击。
MA( q q q) 模型认为因变量序列 x t x_t xt 与随机冲击项的当前值 ε t \varepsilon_t εt q q q 期滞后值 ε t − 1 , ε t − 2 , … \varepsilon_{t-1}, \varepsilon_{t-2}, \ldots εt1,εt2,, ε t − q \varepsilon_{t-q} εtq 有关, 而且是随机冲击项的加权平均, 因此被称作移动平均模型。一个 q q q 阶移动平均模型 MA( q q q) 可以用数学表达为:

x t = μ + ε t + θ 1 ε t − 1 + θ 2 ε t − 2 + … + θ q ε t − q x_t=\mu+\varepsilon_t+\theta_1 \varepsilon_{t-1}+\theta_2 \varepsilon_{t-2}+\ldots+\theta_q \varepsilon_{t-q} xt=μ+εt+θ1εt1+θ2εt2++θqεtq

其中 { ε t } \left\{\varepsilon_t\right\} {εt} 是均值为零、独立、同分布的白噪声序列, 满足:

E ( ε t ) = 0 ; Var ⁡ ( ε t ) = σ ε 2 ; E ( ε t ε s ) = 0 , ∀ s ≠ t \mathbb{E}\left(\varepsilon_t\right)=0 ; \quad \operatorname{Var}\left(\varepsilon_t\right)=\sigma_{\varepsilon}^2 ; \quad \mathbb{E}\left(\varepsilon_t \varepsilon_s\right)=0, \forall s \neq t E(εt)=0;Var(εt)=σε2;E(εtεs)=0,s=t

由于 MA( q q q) 仅仅是白噪声过程的线性组合, 因此有:

E ( x t ) = μ , Var ⁡ ( x t ) = γ 0 = ( 1 + θ 1 2 + θ 2 2 + ⋯ + θ q 2 ) σ ε 2 ,  ρ l = { 1 , l = 0 θ l   +   θ l + 1    θ 1   +   θ l + 2    θ 2   +   …   +   θ q   θ q − l 1   +   θ 1 2   +   θ 2 2   +   …   +   θ q 2 , ∀ l = 1 , 2 , … , q 0 , ∀ l > q \begin{aligned} & \mathbb{E}\left(x_t\right)=\mu, \\ & \operatorname{Var}\left(x_t\right)=\gamma_0=\left(1+\theta_1^2+\theta_2^2+\dots+\theta_q^2\right) \sigma_{\varepsilon}^2 \text {, } \\ & \rho_l= \begin{cases}1, & l=0 \\ \frac{\theta_l \ + \ \theta_{l+1} \ \ \theta_1 \ + \ \theta_{l+2} \ \ \theta_2 \ + \ \dots \ + \ \theta_q \ \theta_{q-l}}{1 \ + \ {\theta_1}^{2} \ + \ {\theta_2}^{2} \ + \ \dots \ + \ {\theta_q}^{2}}, & \forall l=1,2, \ldots, q \\ 0, & \forall l>q\end{cases} \\ & \end{aligned} E(xt)=μ,Var(xt)=γ0=(1+θ12+θ22++θq2)σε2ρl= 1,1 + θ12 + θ22 +  + θq2θl + θl+1  θ1 + θl+2  θ2 +  + θq θql,0,l=0l=1,2,,ql>q
由以上公式可以得知 MA( q q q) 模型一个很重要的统计性质:MA( q q q) 模型自相关系数 q q q 阶截尾。所谓的 q q q 阶截尾是指, 在 q q q 阶以后 MA( q q q) 模型的自相关系数马上截止, q + 1 q+1 q+1 阶起就等于 0 (即上式 γ l = 0 , ∀ l > q \gamma_l=0, \forall l>q γl=0,l>q 所表达的内容)。考虑 AR 模型和 MA 模型自相关系数的性质, 可以根据自相关图(ACF), 来初步判断所研究的时间序列大致符合什么类型的模型。

3.2 实证分析

(1)模拟MA(1) 过程(数据来源于包:smt.arma_generate_sample)

省略代码详见资源包!

(2)利用 MA( q q q) 模型来拟合 沪深300 的收盘价(df.close)

序列识别

省略代码详见资源包!

模型识别(定阶)

  • 通过自相关函数(ACF)可视化定阶!

  • 根据最小化AIC准则确定 q q q。计算比较耗时,为了控制计算量,这里限制MA最大阶不超过3。大家可以尝试其它准则定阶(比如,BIC和HQIC)。
省略代码详见资源包!

模型估计

以MA(3)模型为例!

省略代码详见资源包!

在这里插入图片描述

模型诊断

可视化 残差 直方图、QQ图,看是否正态分布,可视化ACF看是否仍存有自相关性。


残差的白噪声检验(Ljung-Box检验)。

省略代码详见资源包!

4 ARMA模型

4.1 理论介绍

AR( p p p) 模型认为时间序列中当期的值与过去 p p p 期的滞后值有关,MA( q q q) 模型则用滞后 q q q 期的随机扰动项来解释当期的 x t x_t xt。不过在金融经济领域中,很多变量的值既会与自己过去期的表现有关系,又受到过去随机冲击的影响,ARMA模型表达的就是这个思想。ARMA模型全称为自回归移动平均(Autoregressive Moving Average,ARMA)模型,是研究时间序列的重要方法,由AR模型与MA模型混合构成。

ARMA( p p p, q q q)模型的一般表达式为:

x t = ϕ 0 + ϕ 1 x t − 1 + ⋯ + ϕ p x t − p + θ 1 ε t − 1 + ⋯ + θ q ε t − q + ε t . x_t = \phi_0 + \phi_1 x_{t-1} + \dots + \phi_p x_{t-p} + \theta_1 \varepsilon_{t-1} + \dots + \theta_q \varepsilon_{t-q} + \varepsilon_t. xt=ϕ0+ϕ1xt1++ϕpxtp+θ1εt1++θqεtq+εt.

其中, ε t {\varepsilon_{t}} εt是零均值、独立、同分布白噪声序列,满足:

E ( ε t ) = 0 ; Var ⁡ ( ε t ) = σ ε 2 ; E ( ε t ε s ) = 0 , ∀ s ≠ t \mathbb{E}\left(\varepsilon_t\right)=0 ; \quad \operatorname{Var}\left(\varepsilon_t\right)=\sigma_{\varepsilon}^2 ; \quad \mathbb{E}\left(\varepsilon_t \varepsilon_s\right)=0, \forall s \neq t E(εt)=0;Var(εt)=σε2;E(εtεs)=0,s=t

很显然,相较于 AR( p p p) 和 MA( q q q) 模型, ARMA( p p p, q q q) 更具有普适性, AR( p p p)是 q = 0 q=0 q=0 时的 ARMA( p p p, q q q) 模型, MA( q q q) 模型是当 p = 0 p=0 p=0 时的 ARMA( p p p, q q q) 模型。

从金融的角度理解,AR 和 MA 模型的理论意义在于:AR( p p p)模型试图捕捉(解释)交易市场中经常观察到的动量和均值回复效应;MA( q q q)模型尝试捕捉(解释)在白噪声条件下观察到的冲击效应,这些冲击效应可以被认为是影响观察过程的意外事件。ARMA模型的弱点在于忽视了大多数金融时间序列中的波动聚集效应。

ARMA( p p p, q q q) 模型的建模过程

(1) 序列识别

  • 判别序列是否是平稳的。若非平稳的,则需对其变换处理使得其平稳(比如,差分、平滑、变换、分解)。
  • 判别平稳的序列是否是白噪声的。若白噪声的(白噪声序列无法构建ARMA模型),则建模结束;否则,进行下一步。

(2) 模型识别

  • 确定 p p p q q q 的值,选择最优的模型。通过序列的自相关(ACF)确定 q q q 和偏自相关函数(PACF)确定 p p p
  • 如果自相关和偏自相关函数不是很明显的话,可以尝试建立几个备选模型,然后根据AIC或BIC指标进行选择(一般选择较小的AIC或BIC值)。

(3) 模型估计

  • 模型估计即模型的参数估计,查看参数对应的 p p p 值是否显著为0。

(4) 模型诊断

  • 对模型残差序列进行检验,确保其服从正态分布的白噪声序列。当残差序列是白噪声序列时,表明序列中信息充分提取到模型中了。

4.2 实证分析

省略代码详见资源包!

在这里插入图片描述

模型检验

可视化 残差 直方图、QQ图,看是否正态分布,可视化ACF看是否仍存有自相关性。


残差的白噪声检验(Ljung-Box检验)。

省略代码详见资源包!

模型评估

  • 利用拟合模型的 predict() 方法对沪深300的收盘价进行预测(拟合)。
省略代码详见资源包!

在这里插入图片描述

5 ARIMA模型

5.1 理论介绍

ARIMA模型全称是差分移动自回归模型(Autoregressive Integrated Moving Average Models,ARIMA),是ARMA模型的拓展。

由于现实中很多时间序列不是平稳的,但可以通过差分来实现平稳,即通过 一阶差分 可以将 非平稳 序列转化为 平稳 序列。

由于前三个模型都有时间序列平稳的假设,如果时间序列存在明显的上升或者下降趋势,模型预测的效果大大折扣。对于有明显下降或者上升趋势的数据集,可以使用差分的方式将其转化为平稳序列,然后使用ARMA模型进行拟合。

假设模型经过 d d d 次差分通过了时间序列平稳的检验,ARMA的系数为 p p p q q q,则 ARIMA 模型为 ARIMA( p p p, d d d, q q q)。

5.2 实证分析

由于沪深300收盘价序列经过一阶差分后为平稳时间序列。因此, ARIMA( p p p, d d d, q q q)模型即为ARIMA( p p p,1, q q q)!特别提醒:是模型中研究对象为沪深300的收盘价序列(df.close)!

省略代码详见资源包!

6. 结束语

本文主要以沪深300指数收盘价数据为例,简要介绍了时间序列四大经典模型的基本原理和Python实证分析。不难发现,这些模型在拟合和预测沪深300指数收盘价上样本内拟合效果还不错,但样本外效果不是很好(读者可以结合资源包代码自己尝试)。

实际上,这些模型有一个潜在假设是干扰项的方差是固定不变的,但是研究者发现金融数据(如股票收益率)大都存在异方差现象,因此传统的时间序列模型无法获得可靠的估计结果。

为了解决金融资产收益率序列波动聚集的难题,学者们提出了 ARCHGARCH 以及 协整模型,接下来将会对这些模型进行详细介绍并给出相应的Python实证分析。

7. 参考资料

  • 蔡立耑. 量化投资以Python为工具[M]. 北京:电子工业出版社,2017.
  • PyQuant. 量化投资基础[M]. 北京:科学出版社,2024.

8. 资源包下载

  • 链接:https://pan.baidu.com/s/1oSH2088fgDMAo-keiwCbSA
  • 提取码:1234

  • 写作不易,切勿白剽
  • 点赞关注,最大鼓励
  • 持续更新,未完待续…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1986900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无线领夹麦克风哪个品牌好,哪款领夹式麦克风性价比高

随着自媒体行业的蓬勃发展&#xff0c;内容创作者对高质量音频设备的需求日益增长。无线领夹麦克风&#xff0c;凭借其便携性、高音质与灵活性&#xff0c;正逐渐成为视频制作、直播互动及日常Vlog记录的标配工具。其兴起不仅反映了创作者对专业录音品质的追求&#xff0c;也体…

Web安全学习

1 计算机网络与协议 1.1 网络基础 1.1.1 计算机通信网的组成 计算机网络由通信子网和资源子网组成。 通信子网&#xff1a;负责数据的无差错和有序传递&#xff0c;其处理功能包括差错控制、流量控制、路由选择、网络互连等。 资源子网&#xff1a;是计算机通信的本地系统环境…

全球油价与棕榈油市场波动

一、油价暴跌与经济衰退担忧 周一&#xff08;8月5日&#xff09;欧盘时段&#xff0c;油价暴跌&#xff0c;两大主要基准油价均下跌逾2%&#xff0c;触及八个月低点。油价的急剧下跌主要是由于人们担心全球最大的石油消费国美国可能陷入衰退。全球疲弱的经济数据加剧了人们对燃…

绿色精益生产新潮流:环保也能成为竞争力!

在当今这个快速变化且竞争激烈的市场环境中&#xff0c;企业面临着前所未有的挑战。为了保持竞争力并实现可持续发展&#xff0c;企业必须不断探索和采用更高效、更灵活的生产管理方式。精益生产&#xff0c;作为一种源自日本丰田汽车公司的生产哲学&#xff0c;凭借其消除浪费…

Animate软件基本概念:组和文本

这里继续介绍Animate软件中的基本概念&#xff0c;组和文本两个概念。 FlashASer&#xff1a;AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer&#xff1a;实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 Fl…

Go - 10. * 值类型和指针类型的差异

目录 一.引言 二.接收者类型 三.代码示例 1.指针接收者 2.值接收者 3.运行结果对比 4.代码修改 5.刨根问底 四.总结 一.引言 go 语言中 func (c *Title) 和 func (c Title) 两个方法的传参差一个 * 号&#xff0c;二者的区别是一个是指针类型&#xff0c;一个是值类型…

scratch水仙花数 2024年6月scratch四级 中国电子学会图形化编程 少儿编程等级考试四级真题和答案解析

目录 scratch水仙花数 一、题目要求 1、准备工作 2、功能实现 二、案例分析 1、角色分析 2、背景分析 3、前期准备 三、解题思路 1、思路分析 2、详细过程 四、程序编写 五、考点分析 六、推荐资料 1、入门基础 2、蓝桥杯比赛 3、考级资料 4、视频课程 5、p…

深度学习入门(一):感知机与输入数据

单层感知机与多层感知机 单层感知机&#xff08;Single-Layer Perceptron&#xff09;和多层感知机&#xff08;Multi-Layer Perceptron&#xff0c;简称MLP&#xff09;是神经网络的基本形式&#xff0c;用于执行各种机器学习任务&#xff0c;包括分类和回归。它们都基于早期…

赚他10个亿...

体育竞技 & 商业价值 虽然昨天遭受了全球黑一&#xff0c;但四年一度的奥运会还是要关注的。 不知道最近大家是否有关注巴黎奥运会&#xff0c;印象深刻的项目又是哪个&#xff1f; 截止于发稿前&#xff0c;目前「金牌榜」上&#xff0c;中国以微弱优势位于第一&#xff0…

CDGA/CDGP数据治理证书:含金量高,职场竞争力提升的明智之选

在当今这个数据驱动的时代&#xff0c;数据已成为企业最宝贵的资产之一&#xff0c;而高效、合规的数据治理则是挖掘数据价值、驱动业务增长的关键。随着企业对数据治理重视程度的不断提升&#xff0c;拥有专业数据治理知识和技能的人才变得尤为稀缺。在此背景下&#xff0c;CD…

win10批量修改文件名,记得保存文件

打开需要修改的文件夹新建文本内容如下 DIR . /B>文件列表.csv 并另存为bat文件,注意编码&#xff0c;双击bat文件生成Excel 打开Excel 填写你的文件名至B列&#xff0c;如我需要在文件名前面都加上spi5_公式D1&A1 C列输入"REN "&"""&q…

【C++BFS算法】2059. 转化数字的最小运算数

本文涉及知识点 CBFS算法 LeetCode2059. 转化数字的最小运算数 给你一个下标从 0 开始的整数数组 nums &#xff0c;该数组由 互不相同 的数字组成。另给你两个整数 start 和 goal 。 整数 x 的值最开始设为 start &#xff0c;你打算执行一些运算使 x 转化为 goal 。你可以…

实验8-1-7 数组循环右移

本题要求实现一个对数组进行循环右移的简单函数&#xff1a;一个数组a中存有n&#xff08;>0&#xff09;个整数&#xff0c;将每个整数循环向右移m&#xff08;≥0&#xff09;个位置&#xff0c;即将a中的数据 &#xff08;最后m个数循环移至最前面的m个位置&#xff09;…

CMU15445 (Fall 2023) Project 4 - Concurrency Control 思路分享

文章目录 写在前面Task 1 - Timestamps1.1 Timestamp Allocation1.2 Watermark Task 2 - Storage Format and Sequential Scan2.1 Tuple Reconstruction2.2 Sequential Scan / Tuple Retrieval Task 3 - MVCC Executors3.1 Insert Executor3.2 Commit3.3 Update and Delete Exe…

FreeIPA安装

一、环境准备 主机名IP角色master. bhlu. com192.168.22.10服务端node1. bhlu. com192.168.22.11客户端 两台服务器关闭防火墙和 selinux配置好 yum 源 1.1 配置 chronyd 配置好 chronyd&#xff0c;使用 chronyc source -v 可以验证 # 这里写了一个playbook作为示例了 --…

OpenHarmony网络请求库-axios

简介 Axios &#xff0c;是一个基于 promise 的网络请求库&#xff0c;可以运行 node.js 和浏览器中。本库基于 Axios 原库v1.3.4版本进行适配&#xff0c;使其可以运行在 OpenHarmony&#xff0c;并沿用其现有用法和特性。 http 请求Promise APIrequest 和 response 拦截器转…

Codeforces Round 920 (Div. 3) A~E 题

A. Square 题目链接&#xff1a; Problem - A - Codeforces 思路&#xff1a; 题目比较简单&#xff1a;就是给你一个矩形的四个顶点的坐标&#xff0c;然后让你求矩形的面积&#xff0c;我们知道矩形的面积等于长乘宽&#xff0c;那么&#xff0c;如何就矩形的长和宽&…

ctfhub Bypass disable_function

LD_PRELOAD url 蚁剑连接 选择插件 点击开始 查看到此文件名编辑连接拼接到url后面重新连接 点击开启终端 在终端执行命令 ls / /readfile ShellShock url CTFHub 环境实例 | 提示信息 蚁剑连接 写入shell.php <?phpeval($_REQUEST[ant]);putenv("PHP_test() { :…

ViT论文详解

文章目录 前言一、ViT理论二、模型结构三、实验结果总结 前言 ViT是谷歌团队在2021年3月发表的一篇论文&#xff0c;论文全称是《AN IMAGE IS WORTH 16X16 WORDS:TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》一张图片分成16x16大小的区域&#xff1a;使用Transformer进行按比…