当前位置: 首页 > news >正文

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

本文来源于量化小论坛公共讨论区板块精华帖,作者为正扬,发布于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中将一个字符串字段按层级树状展开

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 需求1.分析2.实现3.思路刨析表结构和数据 需求 数据库中有个字段如下 如何将其转换为如下形式&#xff1a; 1.分析 1.他的层级个数是不确定的&#xff0c;也就是说有的有2层有的有5…...

vue面试题8|[2024-11-14]

问题1&#xff1a;什么是渐进式框架? vue.js router vuex element ...插件 vue.js 渐0 router 渐1 vuex 渐2 vue.js只是一个核心库&#xff0c;比如我再添加一个router或者vuex&#xff0c;不断让项目壮大&#xff0c;就是渐进式框…...

ARM(安谋) China处理器

0 Preface/Foreword 0.1 参考博客 Cortex-M23/M33与STAR-MC1星辰处理器 ARM China&#xff0c;2018年4月established&#xff0c;独立运行。 1 处理器类型 1.1 周易AIPU 1.2 STAR-MC1&#xff08;星辰处理器&#xff09; STAT-MC1&#xff0c;主要为满足AIOT应用性能、功…...

基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型

本系统是基于Python Django框架构建的“Boss直聘”数据采集与分析预测系统&#xff0c;旨在通过技能匹配的方式对招聘信息进行分析与预测&#xff0c;帮助求职者根据自身技能找到最合适的职位&#xff0c;同时为招聘方提供更精准的候选人推荐。系统的核心预测模型基于职位需求技…...

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)

MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk) 1.计算模型介绍 使用GARCH&#xff08;广义自回归条件异方差&#xff09;模型计算VaR&#xff08;风险价值&#xff09;时&#xff0c;方差法是一个常用的方法。GARCH模型能够捕捉到金融时间序列数据中的波…...

深入Linux基础:文件系统与进程管理详解

在Linux运维领域&#xff0c;文件系统和进程管理是两个至关重要的基础知识。理解它们的原理和实际操作&#xff0c;不仅有助于我们更高效地管理服务器&#xff0c;还能快速定位问题、优化性能。本文将带你全面了解这两大模块&#xff0c;并配以示例代码进行讲解&#xff0c;帮助…...

缓存及其不一致

在实际开发过程中&#xff0c;一般都会遇到缓存&#xff0c;像本地缓存&#xff08;直接在程序里搞个map也可以&#xff0c;但是可能会随着数据的增长出现OOM&#xff0c;建议使用正经的本地缓存框架&#xff0c;因为自己实现淘汰策略啥的挺费劲的&#xff09;、分布式缓存&…...

Leetcode 有效的数独

这段代码解决的是 验证一个数独是否有效 的问题&#xff0c;其算法思想是基于 规则校验和状态记录。具体思想如下&#xff1a; 算法思想 核心目标&#xff1a; 检查每个数字在 同一行、同一列 和 同一个 3x3 子格 中是否重复。 状态记录&#xff1a; 使用 3 个布尔二维数组分别…...

《Java核心技术 卷I》用户界面中首选项API

首选项API 在桌面程序中&#xff0c;通常都会存储用户首选项&#xff0c;如用户最后处理的文件、窗口的最后位置等。 利用Properties类可以很容易的加载和保存程序的配置信息&#xff0c;但有以下缺点&#xff1a; 有些操作系统没有主目录概念&#xff0c;很难为匹配文件找到…...

Android 中的 Zygote 和 Copy-on-Write 机制详解

在 Android 系统中&#xff0c;Zygote 是一个关键的进程&#xff0c;几乎所有的应用进程都是通过它 fork&#xff08;派生&#xff09;出来的。通过 Zygote 启动新进程的方式带来了显著的性能优势&#xff0c;这得益于 fork 操作和 Linux 中的 Copy-on-Write&#xff08;COW&am…...

【人工智能】从零开始用Python实现逻辑回归模型:深入理解逻辑回归的原理与应用

解锁Python编程的无限可能&#xff1a;《奇妙的Python》带你漫游代码世界 《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门&#xff01; 逻辑回归是一种经典的统计学习方法&#xff0c;用于分类问题尤其是二分类问题。它通过学习数据的特征和目标标签之间的…...

推荐一款功能强大的光学识别OCR软件:Readiris Dyslexic

Readiris Dyslexic是一款功能强大的光学识别OCR软件&#xff0c;可以扫描任何纸质文档并将其转换为完全可编辑的数字文件(Word&#xff0c;Excel&#xff0c;PDF)&#xff0c;然后用你喜欢的编辑器进行编辑。该软件提供了一种轻松创建&#xff0c;修改和签名PDF的完整解决方法&…...

Python爬虫----python爬虫基础

一、python爬虫基础-爬虫简介 1、现实生活中实际爬虫有哪些&#xff1f; 2、什么是网络爬虫&#xff1f; 3、什么是通用爬虫和聚焦爬虫&#xff1f; 4、为什么要用python写爬虫程序 5、环境和工具 二、python爬虫基础-http协议和chrome抓包工具 1、什么是http和https协议…...

css-50 Projects in 50 Days(3)

html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>旋转页面</title><link rel"sty…...