基于ARMA-GARCH模型探究股价的日历效应和节假日效应【思路+代码】

目录

  • 1. 模型定义
    • 1.1 ARMA-GARCH模型
    • 1.2 引入节假日效应的虚拟变量的新模型
    • 1.3 引入日历效应的虚拟变量的新模型
  • 2. 实证部分
    • 2.1 准备工作
    • 2.2 引入节假日效应虚拟变量的模型建立和结果分析
    • 2.3 引入节假日效应和日历效应的虚拟变量的模型建立和结果分析
  • 3. 结语

本文介绍了ARMA-GARCH模型的基本定义和构建方式。随后,提出了引入节假日效应和日历效应的虚拟变量的模型定义,并根据定义进行了建模和结果分析。包含代码和结果展示。包含数据、代码的文件可关注gzh‘finance褪黑素’,在gzh下回复关键词【20240312】获取。更多金融大数据的内容可关注博主。

1. 模型定义

股票数据常常表现出波动性聚焦的特征,选择ARMA-GARCH模型能够捕捉时间序列的波动性,并且能够根据过去的波动性估计未来的波动性,预测效果很优秀,所以这里选择这个模型来拟合深证综指的收盘价数据。

1.1 ARMA-GARCH模型

ARMA-GARCH模型是ARMA模型和GARCH模型的组合,分别包含两个公式,一个是ARMA模型的均值方程,一个是GARCH模型的方差方程,它们组合时首先利用均值方程对收益率进行建模,然后对建模后的残差利用方差方程进一步计算,得到最终的组合模型。以下是ARMA-GARCH模型的基本公式:

  1. ARMA模型(均值方程)
      Y t = μ + ϕ 1 Y t − 1 + ϕ 2 Y t − 2 + … + ϕ p Y t − p + ε t − θ 1 ε t − 1 − θ 2 ε t − 2 − … − θ q ε t − q   \ Y_t = \mu + \phi_1 Y_{t-1} + \phi_2 Y_{t-2} + \ldots + \phi_p Y_{t-p} + \varepsilon_t - \theta_1 \varepsilon_{t-1} - \theta_2 \varepsilon_{t-2} - \ldots - \theta_q \varepsilon_{t-q}\  Yt=μ+ϕ1Yt1+ϕ2Yt2++ϕpYtp+εtθ1εt1θ2εt2θqεtq 
    μ \mu μ是常数项, ϕ i \phi_i ϕi 是自回归系数, θ i \theta_i θi 是移动平均系数, ε t \varepsilon_t εt是白噪声项(均值为0),方差为 σ t 2 \sigma_t^2 σt2

  2. GARCH模型(方差方程)
    σ t 2 = α 0 + α 1 ε t − 1 2 + α 2 ε t − 2 2 + … + α p ε t − p 2 + β 1 σ t − 1 2 + β 2 σ t − 2 2 + … + β q σ t − q 2   \sigma_t^2 = \alpha_0 + \alpha_1 \varepsilon_{t-1}^2 + \alpha_2 \varepsilon_{t-2}^2 + \ldots + \alpha_p \varepsilon_{t-p}^2 + \beta_1 \sigma_{t-1}^2 + \beta_2 \sigma_{t-2}^2 + \ldots + \beta_q \sigma_{t-q}^2\ σt2=α0+α1εt12+α2εt22++αpεtp2+β1σt12+β2σt22++βqσtq2 
    其中, σ t 2 \sigma_t^2 σt2 是条件方差, α i \alpha_i αi 是平方项的ARCH系数, β i \beta_i βi是条件方差项的GARCH系数。

整个ARMA-GARCH模型的形式是将均值方程和方差方程结合起来。可以表示为:
  Y t = μ + ϕ 1 Y t − 1 + ϕ 2 Y t − 2 + … + ϕ p Y t − p + ε t − θ 1 ε t − 1 − θ 2 ε t − 2 − … − θ q ε t − q   \ Y_t = \mu + \phi_1 Y_{t-1} + \phi_2 Y_{t-2} + \ldots + \phi_p Y_{t-p} + \varepsilon_t - \theta_1 \varepsilon_{t-1} - \theta_2 \varepsilon_{t-2} - \ldots - \theta_q \varepsilon_{t-q}\  Yt=μ+ϕ1Yt1+ϕ2Yt2++ϕpYtp+εtθ1εt1θ2εt2θqεtq 
  s i g m a t 2 = α 0 + α 1 ε t − 1 2 + α 2 ε t − 2 2 + … + α p ε t − p 2 + β 1 σ t − 1 2 + β 2 σ t − 2 2 + … + β q σ t − q 2   \ sigma_t^2 = \alpha_0 + \alpha_1 \varepsilon_{t-1}^2 + \alpha_2 \varepsilon_{t-2}^2 + \ldots + \alpha_p \varepsilon_{t-p}^2 + \beta_1 \sigma_{t-1}^2 + \beta_2 \sigma_{t-2}^2 + \ldots + \beta_q \sigma_{t-q}^2\  sigmat2=α0+α1εt12+α2εt22++αpεtp2+β1σt12+β2σt22++βqσtq2 
最终得到的模型可以用于对未来值的预测和波动性的估计。

1.2 引入节假日效应的虚拟变量的新模型

在均值模型的基础上,加入新的虚拟变量,代表日历效应或节假日效应,将虚拟变量乘以一个系数,然后将其添加到均值方程的常数项上。
例如,假设虚拟变量为   D t \ D_t  Dt,表示第t个观测是否处于节前,处于节前为1,处于节后为0,来探究节前效应。

一般认为节前和节后具有不同的效应,需要分开进行对比,因此赋予虚拟变量不同的值可以检验节前和节后,比如检验节前效应时,对节日前的日期赋予   D t \ D_t  Dt为1,节日后的日期赋予   D t \ D_t  Dt为0,而在检验节后效应时,可以对节日前的日期赋予   D t \ D_t  Dt为0,对节日后的赋予   D t \ D_t  Dt为1.本文探讨的是节前效应,下文会附带代码,需要检验节后效应可以在作者指定的位置修改即可。

加入节日效应的虚拟变量后的均值方程可以表示为:
  Y t = μ + β D t + ϕ 1 Y t − 1 + ϕ 2 Y t − 2 + … + ϕ p Y t − p + ε t − θ 1 ε t − 1 − θ 2 ε t − 2 − … − θ q ε t − q   \ Y_t = \mu + \beta D_t + \phi_1 Y_{t-1} + \phi_2 Y_{t-2} + \ldots + \phi_p Y_{t-p} + \varepsilon_t - \theta_1 \varepsilon_{t-1} - \theta_2 \varepsilon_{t-2} - \ldots - \theta_q \varepsilon_{t-q}\  Yt=μ+βDt+ϕ1Yt1+ϕ2Yt2++ϕpYtp+εtθ1εt1θ2εt2θqεtq 
其中:

  •   Y t \ Y_t  Yt 是时间序列的观测值。
  • μ \mu μ 是常数项。
  • D t D_t Dt 是虚拟变量,表示在时间 (t) 是否存在某个效应。
  • β \beta β 是虚拟变量的系数。
  • ϕ 1 , ϕ 2 , … , ϕ p \phi_1, \phi_2, \ldots, \phi_p ϕ1,ϕ2,,ϕp 是自回归项的系数。
  • ε t \varepsilon_t εt 是白噪声项。
  • θ 1 , θ 2 , … , θ q \theta_1, \theta_2, \ldots, \theta_q θ1,θ2,,θq 是移动平均项的系数。

1.3 引入日历效应的虚拟变量的新模型

同样的,仿照上面节假日效应的检验思路,如果需要探究日历效应的影响,那么可以引入日历效应的虚拟变量的新模型。类似 D t D_t Dt,可以令 K t K_t Kt为新的虚拟变量,对月份结束前的日期赋予   K t \ K_t  Kt为1,月份结束后的日期赋予   K t \ K_t  Kt为0。
方程和上面的一样。

在某些时候,不能单独考虑节假日效应或是日历效应的影响,因为某些日期重合,发生影响的部分可能是另一种效应,因此最好是添加两个效应的虚拟变量一同列举模型,只有在参数都显著的情况下,才能确定存在该效应。比方说前文只探究了节假日效应,就不能完全确定这是由节假日引起的,参数的显著可能是因为日历效应,所以当引入两个虚拟变量,且在这种时候节假日效应的虚拟变量参数显著时,才能说存在节假日效应。
下面会列举如何在模型中添加一个和两个虚拟变量。

2. 实证部分

2.1 准备工作

首先导入股票数据:
在这里插入图片描述
本文实证部分针对2023年一年的数据进行研究。
对股价收盘价做趋势图,标注出几个重要节日的日期:
在这里插入图片描述
看了一些文献,还可以计算不同节日前节日后股价的收盘价平均值、方差、波动性等进行对比,此处没有计算,直接进入实证模型。

计算2023年春节节前效应的虚拟变量:(如果是节后效应,将第二行和第四行的0改为1即可,代码比较简单)

before_date = '2023-01-22'
df['新列'] = 0  
df.loc[df['日期'] < pd.to_datetime(before_date), '新列'] = 1  
before_df = df[df['新列'] == 0]

2.2 引入节假日效应虚拟变量的模型建立和结果分析

from statsmodels.tsa.arima.model import ARIMA
from arch import arch_model
arma_model = ARIMA(df['收盘'], order=(1, 0, 1), exog=df['新列'])
arma_result = arma_model.fit()
print(arma_result.summary())

在这里插入图片描述

解释结果:
新列 (虚拟变量): 虚拟变量的系数。在这个例子中,虚拟变量的系数为-115.3200。由于该系数的P值很大(0.900),说明虚拟变量的系数不显著,可能不具备统计学意义,说明2023年春节对该年收益变动不具有节假日效应。
ar.L1 (自回归项): ARIMA模型中的自回归项的系数。在这个例子中,自回归项的系数为0.9924。由于P值很小(0.000),我们可以拒绝虚无假设,说明该自回归项是显著的。
ma.L1 (滑动平均项): ARIMA模型中的滑动平均项的系数。在这个例子中,滑动平均项的系数为0.0498。由于P值较大(0.481),我们不能拒绝虚无假设,说明该滑动平均项可能不显著。

对上面的均值方程的结果提取出resid代入方差方程,也就是garch模型:

garch_model = arch_model(arma_result.resid, vol='Garch', p=1, q=1)
garch_result = garch_model.fit()
print(garch_result.summary())

在这里插入图片描述

注意上面建立的过程没有参数选取,直接建立的ARMA(1,1)-GARCH(1,1)模型,具体步骤可以根据自己需要添加,模型参数可以在上面修改

根据模型得到的参数结果:
Mean Model (均值模型) Coefficients:
mu (常数项): -5.6987 (常数项的系数)
std err (标准误差): 10.376 (系数的标准误差)
t (t统计量): -0.549 (t统计量,用于检验系数是否显著)
P>|t| (P值): 0.583 (P值,用于判断系数是否显著)
Conf. Int. (置信区间): [-26.035, 14.637] (95%的置信区间)

Volatility Model (波动性模型) Coefficients:
omega (常数项): 3315.3689 (GARCH模型的常数项)
std err (标准误差): 2.595e+04 (系数的标准误差)
t (t统计量): 0.128 (t统计量,用于检验系数是否显著)
P>|t| (P值): 0.898 (P值,用于判断系数是否显著)
Conf. Int. (置信区间): [-4.755e+04, 5.418e+04] (95%的置信区间)
alpha[1] (ARCH项系数): 0.0000 (ARCH项的系数)
beta[1] (GARCH项系数): 0.6751 (GARCH项的系数)

2.3 引入节假日效应和日历效应的虚拟变量的模型建立和结果分析

# 如果要引入二月效应的影响
before_date = '2023-03-01'
df['月份效应'] = 0  # 默认全部为0
df.loc[df['日期'] < pd.to_datetime(before_date), '月份效应'] = 1

建立ARMA模型:

arma_model = ARIMA(df['收盘'], order=(1, 0, 1), exog=df[['新列', '月份效应']])
arma_result = arma_model.fit()
print(arma_result.summary())

在这里插入图片描述
根据P值,节假日效应和日历效应都不显著。(可能是日期选取在一年内太少造成的)

进一步建立ARMA-GARCH模型:

garch_model = arch_model(arma_result.resid, vol='Garch', p=1, q=1)
garch_result = garch_model.fit()
print(garch_result.summary())

在这里插入图片描述

3. 结语

其他文章有进一步预测未来波动率的,也有关于结果检验、误差检验的相关文章。不当之处敬请斧正。
原文代码可关注gzh‘finance褪黑素’,在gzh下回复关键字【20240312】获取。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

5.Java并发编程—JUC线程池架构

JUC线程池架构 在Java开发中&#xff0c;线程的创建和销毁对系统性能有一定的开销&#xff0c;需要JVM和操作系统的配合完成大量的工作。 JVM对线程的创建和销毁&#xff1a; 线程的创建需要JVM分配内存、初始化线程栈和线程上下文等资源&#xff0c;这些操作会带来一定的时间和…

YOLOv9改进 添加新型卷积注意力框架SegNext_Attention

一、SegNext论文 论文地址:2209.08575.pdf (arxiv.org) 二、 SegNext_Attention注意力框架结构 在SegNext_Attention中,注意力机制被引入到编码器和解码器之间的连接中,帮助模型更好地利用全局上下文信息。具体而言,注意力机制通过学习像素级的注意力权重,使得模型可以对…

基于log4cpp封装日志类

一、log4cpp的使用 1. 下载log4cpp log4cpp官方下载地址 2. 安装log4cpp 第一步&#xff1a;解压 tar zxvf log4cpp-1.1.4.tar.gz 第二步&#xff1a;进入log4cpp文件夹并执行 ./configure tips&#xff1a;如果是ARM架构的CPU可能会失败&#xff0c;如下面这种情况&a…

力扣热题100_矩阵_54_螺旋矩阵

文章目录 题目链接解题思路解题代码 题目链接 54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix &#xff0c;请按照 顺时针螺旋顺序 &#xff0c;返回矩阵中的所有元素。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9…

图片和PDF 加水印去水印

图片和PDF 加水印去水印 前要1. 图片加水印1.1 方法11.2 方法2 2. 去水印3. pdf加水印4. pdf 去水印 前要 网上查了很多资料, 汇总了几个不错的代码, 顺便做个笔记 1. 图片加水印 1.1 方法1 简单方便, 后也好处理 # -*- coding:utf-8 -*- import os from PIL import Imag…

第四弹:Flutter图形渲染性能

目标&#xff1a; 1&#xff09;Flutter图形渲染性能能够媲美原生&#xff1f; 2&#xff09;Flutter性能优于React Native? 一、Flutter图形渲染原理 1.1 Flutter图形渲染原理 Flutter直接调用Skia 1&#xff09;Flutter将一帧录制成SkPicture&#xff08;skp&#xff…

吴恩达 x Open AI ChatGPT ——如何写出好的提示词视频核心笔记

核心知识点脑图如下&#xff1a; 1、第一讲&#xff1a;课程介绍 要点1&#xff1a; 上图展示了两种大型语言模型&#xff08;LLMs&#xff09;的对比&#xff1a;基础语言模型&#xff08;Base LLM&#xff09;和指令调整语言模型&#xff08;Instruction Tuned LLM&#xff0…

ARM64汇编06 - 基本整型运算指令

ADD (immediate) 将 Xn 与 imm 相加&#xff0c;结果赋值给 Xd&#xff0c;imm 是无符号数&#xff0c;范围为 0 - 4095。 shift 是对 imm 进行移位&#xff0c;shift 为 0 的时候&#xff0c;表示左移 0 位&#xff0c;即不变。shift 为 1 的时候&#xff0c;表示左移12 位&a…

【漏洞复现】大华智慧园区综合管理平台SQL注入漏洞

Nx01 产品简介 大华智慧园区综合管理平台是一款综合管理平台&#xff0c;具备园区运营、资源调配和智能服务等功能。该平台旨在协助优化园区资源分配&#xff0c;满足多元化的管理需求&#xff0c;同时通过提供智能服务&#xff0c;增强使用体验。 Nx02 漏洞描述 大华智慧园区…

pytest生成allure的报告

首先要下载安装配置allure allure serve ./outputs/allure_report 可以生成html的文件自动在默认浏览器中打开

期货开户市场的风险在哪里?

期货市场的风险在哪里&#xff1f;强平和穿仓是什么&#xff1f; 期货市场是一个自带杠杆的市场&#xff0c;简单理解就是我们只需要用10W就能买到价值100万的商品。期货主要的风险来源于仓位风险和交割风险&#xff0c;仓位风险就是我们是采用满仓还是轻仓方式交易。比如我们…

Linux内核之module_param_named宏代码实例(二十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

微信小程序开发系列(二十九)·界面交互API·loading 提示框、showModal模态对话框、showToast消息提示框

目录 1. loading 提示框 1. 1 wx.showLoading()显示loading提示框 1.2 wx.hideLoading()关闭 loading 提示框 2. showModal 模态对话框 3. showToast 消息提示框 小程序提供了一些用于界面交互的 API&#xff0c;例如&#xff1a;loading 提示框、消息提示框、模态对…

数据库管理-第160期 Oracle Vector DB AI-11(20240312)

数据库管理160期 2024-03-12 数据库管理-第160期 Oracle Vector DB & AI-11&#xff08;20240312&#xff09;1 向量的函数操作to_vector()将vector转换为标准值vector_norm()vector_dimension_count()vector_dimension_format() 2 将向量转换为字符串或CLOBvector_seriali…

ChatGPT发了消息没有反应,并且搜索框变空是怎么回事?怎样解决?

最近许多用户反映使用ChatGPT时发了消息没有反应&#xff0c;并且搜索框变空了导致无法使用&#xff0c;接下来闪电发卡就分析一下是什么原因。 根本原因&#xff1a;是因为官方前端更新&#xff0c;后端接口部分报错&#xff0c;老用户使用Alpha测试中文语言导致。 解决方法&a…

【数据挖掘】实验1:R入门(内含详细R和RStudio安装教程)

实验1&#xff1a;R入门 一&#xff1a;实验目的与要求 1&#xff1a;根据上课PPT内容&#xff0c;掌握课堂知识并进行代码练习操作&#xff0c;提供练习过程和结果。 2&#xff1a;可COPY代码运行结果直接提交&#xff0c;如涉及到输出图等可截图。 二&#xff1a;实验内容 …

自建GitLab代码仓库ssh访问地址为localhost修改成域名

ssh改localhost为域名 抛出问题配置过程效果展示 抛出问题 自建的GitLab&#xff0c;代码仓库ssh访问地址为localhost&#xff0c;http地址显示域名没问题&#xff0c;就很奇怪。 找了很久帖子发现这个访问地址不在/etc/gitlab/gitlab.rb的系统配置中。 还有个帖子让改/etc/gi…

游戏开发中的坑之十三 Lut贴图相关问题

1.网上下载的或者游戏截帧得到的Lut贴图贴上之后可能效果如下&#xff0c;需要在PS里垂直方向反转一下贴图。 2.相关设置&#xff1a; &#xff08;1&#xff09;取消勾选sRGB&#xff1b; &#xff08;2&#xff09;像素为1024x32或者512x16&#xff1b; &#xff08;3&#…

学习笔记-华为IPD转型2020:2,IPD的核心思想

2&#xff0c;IPD的核心思想 以客户为导向&#xff1a;应该开发什么产品&#xff1f; 应该开发哪些产品&#xff1f;华为的“基本法”规定&#xff0c;其目的是为客户服务&#xff08;Huawei&#xff0c;1998&#xff09;。然而&#xff0c;在IPD实施后&#xff0c;对这种以客…

微信小程序开发系列(三十)·小程序本地存储API·同步和异步的区别

目录 1. 同步API 1.1 getStorageSync存储API 1.2 removeStorageSync获取数据API 1.3 removeStorageSync删除 1.4 clearStorageSync清空 2. 异步API 2.1 setStorage存储API 2.2 getStorage获取数据API 2.3 removeStorage删除API 2.4 clearStorage清空 3. …