精华帖分享|浅谈金融时间序列分析与股价随机游走
本文来源于量化小论坛公共讨论区板块精华帖,作者为正扬,发布于2024年6月3日。
以下为精华帖正文:
01
引
时间序列分析是个很唬人的术语,实际上它也不是一个很容易接近的话题。我本科曾经短暂地学过一点点,又看到互联网上存在许多关于时许分析的操作谬误,因此特写本文给大家一些好上手的理解方式。
时间序列分析是统计学的一个分支,它旨在研究有时间顺序的数据,探索其内在结构和特性,从而进行描述、建模、预测和控制。而统计学作为一门核心科学,时序分析也继承其科学性,有很强的逻辑性。反映到具体实操场景,就是用户对使用的模型必须有清楚的认知,否则即使模型提供了预测值,也不知道如何使用。
在这里,我就以量化中最常见的股价/币价,来说明使用时序分析时你一定会遇到的种种困难(和可能的解法)。本文无法一语道破如何预测股价,只是希望揭开时间序列分析的面纱,让你感觉不再陌生。
02
时间序列
首先讲讲时间序列的分类,因为时序不仅仅在金融数据中使用,也在各行各业中广泛应用。销售数据、气象信息和GDP都是时间序列。下面这张图就说明了时间序列的多种变化,分别是周期性(房屋销售额存在时长和频率不确定的高低起伏),季节性(电力产值的冬夏两季的规律波动),趋势性(国债价格随天数增加而下降)和随机性(谷歌的股价波动)。图片中的数据其实包含多种时间序列性质,有兴趣的读者可以尝试从中再分离一种明显性质,具体答案见链接原文。

来源:https://otexts.com/fppcn/tspatterns.html
只要是按照时间顺序排列的离散数据都可以成为时间序列,而有了序列我们就可以对数据作统计分析,得到其均值(期望)和方差(二阶矩)。若对时间序列分类,则有平稳时间序列和非平稳时间序列。一般而言,我们对平稳的时间序列更有兴趣,因为从字面理解,平稳则意味着我们可以推断规律。(如果想探索更严谨的定义,请自行搜索严格平稳和广义平稳)。当然,平稳并不一定代表一定有规律可推断,这一点在后面也会着重说明。
看到这里你已经知道,时间序列分析所需要的数据其实是非常苛刻的,而且上述图片的四种数据都不是平稳数据。回想一下,你是否曾经把这些原始数据放进时序模型里面去尝试建模呢?
03
金融时间序列
那我们不妨用大饼数据来看看,究竟如何处理价格走势,使其符合时间序列分析的要求。本章的所有技术细节你都可以跳过,只要看加粗的结论就行。
首先,我们有一张btc-usdt.csv,里面包含的close收盘价和volume成交量是我们的目标。先处理close,我们的做法是取其对数收益率。这样做有两个好处,首先相比百分比收益率,对数收益率可加;其次可以形成一个公式,yt=yt−1+Δyt.这个递推公式赋予了其推理逻辑。于是我们就把问题转化为:只要能预测Δyt,我们就可以预测整个价格的走势了。

大饼小时线收盘价(暴涨暴跌,非常不平稳,作为新手请凭感觉理解)

大饼对数收益率(相比收盘价,是不是大多数都集中在0之间?这样就看起来平稳多了)

如果你想了解测试时序平稳性的工具,请搜索Augmented Dickey–Fuller test. 以下结果可能需要至少本科概率论与数理统计的知识去理解。(别忘了问chatgpt辅助理解)这里的结果提示这个序列是平稳的。
ADF Test Results:
ADF Statistic: -14.11980992097059
p-value: 2.4361396630638024e-26
Critical Values:
1%: -3.439835148993393
5%: -2.865725696693157
10%: -2.568998987353403
Used lag: 3
Number of observations used: 692
1、随机游走
我们认为这个序列是一个平稳序列,但是不是就可以开始建模预测了呢?并非如此。
前文提到,平稳并不一定代表一定有规律可推断,因为白噪声也算是一种平稳。白噪声是完全随机的数据,统计学上是一个正态分布,没有任何算法可以告诉你下一个随机数是多少。前文中我们提到股价可以表示为yt=yt−1+Δyt,如果Δyt是白噪声,那么yt就是在前一期的值上再加一个随机数,请问它是能预测的吗?很明显,不行,这个模型也被称为随机游走(random walking),你能想到的布朗运动就是RW在二维空间中的形式。那么股价是随机游走吗?不幸的是,很大概率是的。 要验证股价随机游走,必须祭出统计学工具。这里我们会用到Ljung-Box Q检验,辅助自相关函数图作直观展示。
首先看Ljung-Box Q,其p值大于0.05,这意味着我们不能以 95% 的置信水平拒绝原假设,认为没有足够的证据说明时间序列不是白噪声。(此段需理解数理统计中的假设检验部分。)

Lungbox Test Results:
lb_stat lb_pvalue
10 18.05919 0.053973
2、自相关函数
我们用另一个更直观的方式看:自相关函数。它表示某时刻的数据与其前n项数据的自相关关系。第一根柱表示,它与自身的相关性为1,从第二项开始相关性迅速降为0左右,在置信区间内,说明它与其滞后项没有自相关。因此我们大致判定,这个数列是一个白噪声数列。我们没有办法用时间序列去推测btc-usdt的未来走势。

04
模型


这里就可以看出它的原值就包含很强的周期性特征了。我们进一步分析:
ADF Test Results:
ADF Statistic: -10.56484687260585
p-value: 7.563340881893284e-19
Critical Values:
1%: -3.439974756130998
5%: -2.865787205712192
10%: -2.569031757724822
Used lag: 13
Number of observations used: 682
ADF检验表明该序列是平稳序列。这个结论和随机游走模型相同。
Ljungbox Test Results:
lb_stat lb_pvalue
10 90.340146 4.585370e-1
Ljung Box Q检验表明p value接近0,远小于0.05,因此拒绝该序列为白噪声。说明这个数列是有时序关系的。

ACF图表明,当前项与滞后1项存在负的自相关关系,即滞后1期正值则当期大概率负值,即该小时放量则下个小时更可能缩量。

Partial ACF图,用于判断ARMA模型阶数,这里不展开,具体可问chatgpt。
1、建模过程
接下来我们就进入建模过程了,由以上ACF和PACF图推断,我们使用ARMA(1,1)模型。

输出模型结果:


所以这个时间序列ARMA(1,1)的模型即为yt=0.0006+0.5460yt−1+ϵt−0.9789ϵt−1.
此外,关注模型的诊断数据,Ljung-Box在此检测残差,发现p值大于0.05,提示残差不含时序特征,说明我们成功提取了时间序列特征。Heteroskedasticity检测波动,也不显著。最后Jarque-Bera检测提示残差分布显著偏离正态分布,可能需要在预测时加以修正。
2、预测
基于这个结果,我们可以对未来数据进行预测了。但是请问,此处可以预测未来多少期数据?我的答案是1期,最多两2期。因为超出这个限度,我们会基于我们的预测值再去预测未来(别忘了ACF函数只有1期自相关关系),会导致误差显著增大。
以下是预测的结果:
2021-04-30 07:00:00 0.085933
05
结语
到此,我们就做完了对某个时间序列的对数变化率的时间序列分析。我一直认为时间序列模型是一个工具,但时间序列分析是一门科学。工具可以对任何正确格式的输入都产生一个结果,但你需要用科学和逻辑去分析这个结果的合理性,否则这个结果只能图一乐。
本文有许多不详尽之处,有的是想照顾看热闹的朋友从而写得更直白一些,有的可能是我真的已经忘了QAQ。如大佬们发现错误欢迎在评论区指正。
最后祝大家都能写代码赚大钱!^^
相关文章:
精华帖分享|浅谈金融时间序列分析与股价随机游走
本文来源于量化小论坛公共讨论区板块精华帖,作者为正扬,发布于2024年6月3日。 以下为精华帖正文: 01 引 时间序列分析是个很唬人的术语,实际上它也不是一个很容易接近的话题。我本科曾经短暂地学过一点点,又看到互联…...
任意文件下载漏洞
1.漏洞简介 任意文件下载漏洞是指攻击者能够通过操控请求参数,下载服务器上未经授权的文件。 攻击者可以利用该漏洞访问敏感文件,如配置文件、日志文件等,甚至可以下载包含恶意代码的文件。 这里再导入一个基础: 你要在网站下…...
LeetCode 445.两数相加 II
题目: 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 思路:反转链表 两数相加 I 代码&…...
CentOS 7中查找已安装JDK路径的方法
使用yum安装了jdk8,但是其他中间件需要配置路径的时候,却没办法找到,如何获取jdk路径: 一、确认服务器是否存在jdk java -version 二、查找jdk的 java 命令在哪里 which java 三、找到软链指向的地址 ls -lrt /usr/bin/java l…...
springboot基于Web足球青训俱乐部管理后台系统开发(代码+数据库+LW)
摘 要 随着社会经济的快速发展,人们对足球俱乐部的需求日益增加,加快了足球健身俱乐部的发展,足球俱乐部管理工作日益繁忙,传统的管理方式已经无法满足足球俱乐部管理需求,因此,为了提高足球俱乐部管理效率…...
RHCE的学习(21)
第三章 Shell条件测试 用途 为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句,例如判断语句和循环语句中…...
Ubuntu 18.04 配置sources.list源文件(无法安全地用该源进行更新,所以默认禁用该源)
如果你 sudo apt update 时出现诸如 无法安全地用该源进行更新,所以默认禁用该源 的错误,那就换换源吧,链接: https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ 注意版本: 修改源文件: sudo nano /etc…...
19.UE5道具掉落
2-21 道具掉落,回血、回蓝、升级提升伤害_哔哩哔哩_bilibili 目录 1.道具的创建,道具功能的实现 2.随机掉落 1.道具的创建,道具功能的实现 新建Actor蓝图,并命名为道具总类,添加一个Niagara粒子组件和一个碰撞箱bo…...
MySQL —— MySQL逻辑架构与查询过程
文章目录 MySQL逻辑架构整体分为三层连接层服务层查询缓存解析器优化器执行器 存储引擎层系统文件层 MySQL 查询过程查询过程框图 博客1 博客2 MySQL逻辑架构整体分为三层 最上层为客户端层,并非MySQL所独有,诸如:连接管理、授权认证、权限校…...
ODOO学习笔记(12):自定义模块开发
一、Odoo模块结构基础 基本目录结构 Odoo自定义模块通常有一个特定的目录结构。一个典型的模块目录包含以下文件和文件夹: __init__.py:这是一个Python模块初始化文件。它使得该目录被视为一个Python模块。在这个文件中,你可以通过from. impo…...
Excel单元格中自适应填充多图
实例需求:在Excel插入图片时,由于图片尺寸各不相同,如果希望多个图片填充指定单元格,依靠用户手工调整,不仅费时费力,而且很难实现完全填充。如下图中的产品图册,有三个图片,如下图所…...
20.useMediaQuery
React useMediaQuery 钩子:如何优雅地实现响应式设计? 在现代 Web 开发中,响应式设计是一个关键概念,它允许应用根据不同的屏幕尺寸和设备特性调整其布局和行为。useMediaQuery 钩子提供了一种声明式的方法来在 React 组件中使用媒体查询,使得响应式逻辑的实现变得简单而…...
无人机场景 - 目标检测数据集 - 车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」
数据集介绍:无人机场景车辆检测数据集,真实场景高质量图片数据,涉及场景丰富,比如无人机场景城市道路行驶车辆图片、无人机场景城市道边停车车辆图片、无人机场景停车场车辆图片、无人机场景小区车辆图片、无人机场景车辆遮挡、车…...
聚合查询(查询)
count:统计表中所有的行数 指定某一列不统计NULL sum:求和 NULL值不参与计算(省略) avg():对所有行的指定列求平均值 max() min():求所有指定行中最大值与最小值 分组查询 group by: ROUDN()小数点 havin…...
QT QLineEdit失去焦点事件问题与解决
本文介绍如何获得QLineEdit的失去焦点事件和获得焦点的输入框也会触发失去焦点事件的问题! 目录 一、QLineEdit获得失去焦点事件 1.自定义类继承自QLineEdit 2.重写 focusOutEvent 3.使用 二、失去焦点事件问题 1.问题描述 2.问题解决 三、源码分享 lineed…...
Remora
Remora Remora 模型能够独立于碱基识别过程预测甲基化/修饰碱基的状态。Remora 仓库专注于准备修饰碱基训练数据和训练修饰碱基模型。此外,还提供了一些用于运行 Remora 模型和调查原始信号的功能。对于生产环境中的修饰碱基识别,建议使用 Dorado <https://github.com/na…...
MySQL中将一个字符串字段按层级树状展开
水善利万物而不争,处众人之所恶,故几于道💦 文章目录 需求1.分析2.实现3.思路刨析表结构和数据 需求 数据库中有个字段如下 如何将其转换为如下形式: 1.分析 1.他的层级个数是不确定的,也就是说有的有2层有的有5…...
vue面试题8|[2024-11-14]
问题1:什么是渐进式框架? vue.js router vuex element ...插件 vue.js 渐0 router 渐1 vuex 渐2 vue.js只是一个核心库,比如我再添加一个router或者vuex,不断让项目壮大,就是渐进式框…...
ARM(安谋) China处理器
0 Preface/Foreword 0.1 参考博客 Cortex-M23/M33与STAR-MC1星辰处理器 ARM China,2018年4月established,独立运行。 1 处理器类型 1.1 周易AIPU 1.2 STAR-MC1(星辰处理器) STAT-MC1,主要为满足AIOT应用性能、功…...
基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
本系统是基于Python Django框架构建的“Boss直聘”数据采集与分析预测系统,旨在通过技能匹配的方式对招聘信息进行分析与预测,帮助求职者根据自身技能找到最合适的职位,同时为招聘方提供更精准的候选人推荐。系统的核心预测模型基于职位需求技…...
使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
【Veristand】Veristand环境安装教程-Linux RT / Windows
首先声明,此教程是针对Simulink编译模型并导入Veristand中编写的,同时需要注意的是老用户编译可能用的是Veristand Model Framework,那个是历史版本,且NI不会再维护,新版本编译支持为VeriStand Model Generation Suppo…...
