精华帖分享|浅谈金融时间序列分析与股价随机游走

本文来源于量化小论坛公共讨论区板块精华帖,作者为正扬,发布于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。如大佬们发现错误欢迎在评论区指正。

最后祝大家都能写代码赚大钱!^^

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络 (4)计算机网络体系结构

前言 计算机网络体系结构是指计算机网络层次结构模型,它是各层的协议以及层次之间的端口的集合。这一体系结构为计算机网络及其部件应完成的功能提供了精确定义,并规定了这些功能应由何种硬件或软件来实现。 一、主流模型 计算机网络体系结构存在多种模型…

时钟之CSS+JS版

写在前面 此版本绘制的时钟基于CSSJS模式。 优点操作简单&#xff0c;缺点当然是不够灵活。下一篇会基于HTML5的canvas标签&#xff0c;使用JS绘制。会更灵活&#xff0c;元素更加丰富。 HTML代码 <div class"box"><article class"clock"><…

Elastic Agent:可灵活地在任何地方发送和处理任何数据

作者&#xff1a;来自 Elastic Nima Rezainia Elastic Agent 是一款功能强大且用途广泛的工具&#xff0c;可用于从各种数据源&#xff08;包括自定义用户应用程序&#xff09;收集日志和指标。现在&#xff0c;Elastic Agent 提供了无与伦比的灵活性&#xff0c;可以将数据准确…

Android CCodec Codec2 (二一)InputBuffers

CCodec使用CCodecBuffers来对输入/输出端口上的buffer进行管理&#xff0c;这一篇文章我们将一起了解InputBuffers&#xff0c;也就是输入端口的buffer管理方法。 1、CCodecBuffers CCodecBuffers是端口管理的基类&#xff0c;它抽象了输入端口管理和输出端口管理的通用方法&a…

JDBC-Mysql 时区问题详解

目录 一、前置准备 1.1 版本号列表 1.2 Sql脚本 1.3 application.yaml配置 1.4 数据库时区设置 二、java Date类型与&#xff08;jdbcType&#xff09;TIMESTAMP类型的转换 2.1 jdbc对serverTimeZone的处理 2.2 java Date转&#xff08;jdbcType&#xff09;TIMESTAMP …

LC12:双指针

文章目录 125. 验证回文串 本专栏记录以后刷题碰到的有关双指针的题目。 125. 验证回文串 题目链接&#xff1a;125. 验证回文串 这是一个简单题目&#xff0c;但条件判断自己写的时候写的过于繁杂。后面参考别人写的代码&#xff0c;首先先将字符串s利用s.toLowerCase()将其…

H5页面多个视频如何只同时播放一个?

目录 背景1. 首先介绍下 muted 属性2. 监听播放和暂停操作3. 视频播放完毕后返回桌面&#xff0c;再进入H5页面发现视频封面丢失置灰解决思路&#xff1a; 背景 页面模块同时有个四个视频模块&#xff0c;发现可以同时播放四个视频&#xff0c;但是理想的是每次只播放一个。 …

【环境配置】macOS配置jdk与maven

配置jdk与maven 配置jdk与切换java版本命令 maven安装与配置国内镜像源 用到的命令 # 进入 JDK 安装目录 cd /Library/Java/JavaVirtualMachines# 查看文件 ls ➜ jdk-1.8.jdk jdk-11.jdk# 查看路径 pwd ➜ /Library/Java/JavaVirtualMachines# 打开环境变量配置文件 vi &…

基于汇编语言的贪吃蛇程序

摘要 在我们空闲的时候&#xff0c;我们可以用一些我们学过的知识编一些东西&#xff0c;通过这些东西我们可以学习到汇编语言综合应用程序设计方法&#xff0c;还可以提高汇编语言实际应用能力&#xff0c;充分了解计算机硬件和软件&#xff0c;完成理论到实践的推进过程。这…

Qt文件目录操作

文件目录操作相关类 Qt 为文件和目录操作提供了一些类&#xff0c;利用这些类可以方便地实现一些操作。Qt 提供的与文件和目录操作相关的类包括以下几个&#xff1a; QCoreApplication&#xff1a;用于提取应用程序路径&#xff0c;程序名等文件信息&#xff1b;QFile&#x…

2024 CCF中国开源大会“开源科学计算与系统建模openSCS”分论坛成功举办

11月9日&#xff0c;2024 中国计算机学会&#xff08;CCF&#xff09;中国开源大会“开源科学计算与系统建模openSCS”分论坛在深圳落下帷幕。本次论坛由开源科学计算与系统建模工作委员会、苏州同元软控信息技术有限公司&#xff08;简称“同元软控”&#xff09;、深圳景元数…

基于 PyTorch 从零手搓一个GPT Transformer 对话大模型

一、从零手实现 GPT Transformer 模型架构 近年来&#xff0c;大模型的发展势头迅猛&#xff0c;成为了人工智能领域的研究热点。大模型以其强大的语言理解和生成能力&#xff0c;在自然语言处理、机器翻译、文本生成等多个领域取得了显著的成果。但这些都离不开其背后的核心架…

C++(Day35)

一、学习内容 C绪论 C是C语言的拓充&#xff0c;C包含C的所有属性&#xff0c;换一句话说&#xff0c;C语言的语法在C中都合法。 C语言是面向过程的编程思想。 C语言是面向对象的编程思想。&#xff08;半面向对象&#xff0c;半面向过程&#xff09; 可以说在C中一切皆对象。 …

World of Warcraft [WeakAuras]Barney Raid Kit - Collapsing Star Indicator

https://wago.io/BarneyCS 黄色数字表示需要修的血量。 绿色数字表示停止修血。 红色数字表示修血过量&#xff0c;以及该坍缩星将在大爆炸读条结束前多少秒爆炸。 Numbers in yellow means damage required. Numbers in green means HP is good, dont damage anymore. Numbers…

Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!

作者&#xff1a;来自 Elastic Panagiotis Bailis Elasticsearch 检索器经过了重大改进&#xff0c;现在可供所有人使用。了解其架构和用例。 在这篇博文中&#xff0c;我们将再次深入探讨检索器&#xff08;retrievers&#xff09;。我们已经在之前的博文中讨论过它们&#xf…

C++清除所有输出【DEV-C++】所有编辑器通用 | 算法基础NO.1

各位小伙伴们&#xff0c;上一期的保留小数位数教学够用一辈子&#xff0c;有不错的点赞量&#xff0c;可我连一个粉丝铁粉都没有&#xff0c;你愿意做我的第一个铁粉吗&#xff1f;OK废话不多说&#xff0c;开始&#xff01; 温故与知心 可能你也学过&#xff0c;且是工作者…

麒麟kysec安全

一、kysec安全框架管理 开启kysec getstatus Copy security-switch --set default Copy 重启系统 reboot Copy 刷新页面&#xff0c;等待几分钟&#xff0c;即可完成文件的扫描。 查看kysec状态 getstatus Copy 切换到管理员身份&#xff08;密码&#xff1a;devuser…

本地 / 网络多绑定用例总结

原文连接&#xff1a;AUTOSAR_EXP_ARAComAPI的7章笔记&#xff08;4&#xff09; 情景设定 在前一节的基础上&#xff0c;假设有类似情景&#xff0c;区别在于服务实例 2 位于与 AP 产品相同以太网的不同 ECU 上&#xff0c;服务消费者及其代理驻留在 AP 产品 ECU 上。因以太网…

Android笔记(三十六):封装一个Matrix从顶部/底部对齐的ImageView

背景 ImageView的scaleType默认显示图片是这样&#xff0c;但是有时候设计稿需求希望图片左右能紧贴着ImageView左右边缘&#xff0c;又不破坏图片的比例&#xff0c;用自带的matrix&#xff0c;centerCrop等都可以满足 但是都会造成图片的某些区域被裁剪了&#xff0c;如果设…

什么是项目完整性管理?

项目完整性管理是一种在项目生命周期中确保项目质量、进度、成本、资源等各方面保持一致性与协调性的系统性方法。它不仅涉及项目的规划与执行&#xff0c;还包括对项目中的各项资源、流程、技术的整合和控制&#xff0c;以保障项目的最终交付质量和效果。随着项目复杂性的提升…