时间序列学习(2):白噪声、随机游走

article/2025/8/28 15:46:39

时间序列学习(2):白噪声、随机游走

    • 1、白噪声
    • 2、对数收益率序列
    • 3、随机游走
    • 4、随机游走示例

1、白噪声

白噪声是非常简单的一种建模时间序列的模型。

对于时间序列 { w t } \{w_t\} {wt},若满足下面三个条件,该序列为一个离散的白噪声(white noise)

  • 每个时间点均值为0;
  • 每个时间点方差为 σ 2 \sigma^2 σ2
  • 对于任意 k ≥ 1 k\ge1 k1,自相关系数 ρ k = 0 \rho_k=0 ρk=0

前两个条件并没有规定 w t w_t wt一定是正态分布。如果是正态分布,那么这个时间序列又叫高斯白噪声(Gaussian white noise)

回顾上一篇笔记中的平稳性要求,显然一个白噪声序列是符合弱平稳性的(其均值和自相关系数均为固定值,比弱平稳性更加严格一些)。

2、对数收益率序列

上一篇笔记中的日收益率序列,不严格地说,其实是一个差分序列。也就是每一个时间点的价格减去前一个时间点的价格(当然,还除以了前一时间点的价格)。

现在我们利用对数收益率处理成纯的差分序列,即每一个时间点价格的对数减去前一个时间点价格的对数。

对于价格的时间序列 { p t } \{p_t\} {pt},其对数收益率序列用下面的公式得到:

α t = ln ⁡ p t − ln ⁡ p t − 1 \alpha_t = \ln{p_t}-\ln{p_{t-1}} αt=lnptlnpt1

如果价格序列 { p t } \{p_t\} {pt}体现出足够的自相关性(今天的价格和昨天强相关),那么对数收益率序列应该没有显著的自相关性了(自己减掉自己了)。也就是说对数收益率序列应该近似为一个白噪声。

我们将上一篇笔记的日收益率序列处理成对数收益率序列(即沪深300自2018年1月1日至2019年12月13日的对数收益率序列),如下:

import pandas as pd
import mathprices = get_price('000300.XSHG', start_date='2018-01-01', end_date='2019-12-13', frequency='daily', fields='close')returns = {'return':{}}
for i in range(len(prices)):current_price = prices.iloc[i,0]if i == 0:current_return = 0else:last_price = prices.iloc[i-1,0]current_return = math.log(current_price)-math.log(last_price)date = list(prices.index)[i]returns['return'][date] = current_return
return_df = pd.DataFrame(returns, columns=['return'], index=list(prices.index))fig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])
ax.plot(return_df, color="blue", linewidth=1.5, linestyle="-", label=r'hs300-daily-log-returns')
plt.legend(loc='upper right', frameon=False)

在这里插入图片描述

return_df.mean()
return_df.std()

它的均值和标准差分别是:-0.000062,0.01315。

然后看看其时间间隔在50以下的相关图(相关图是啥,见上一篇笔记)。

import matplotlib.pyplot as plt
from statsmodels.graphics.tsaplots import plot_acffig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])
plot_acf(return_df, ax, lags=50)
plt.show()

在这里插入图片描述

可以看到,上述收益率序列的均值-0.000062,非常接近于0;样本方差不能代表时间序列的方差,所以方差这一项依据我们暂时放在一边。看看自相关性,对于间隔为3的自相关系数超过了95%的置信区间,但其它都在区间内。

不管怎样,我们说上述对数收益率序列近似为一个白噪声。

3、随机游走

随机游走 random walk是对白噪声的简单延伸。

对于时间序列 { x t } \{x_t\} {xt},如果满足如下条件,该时间序列是一个随机游走:

x t = w t + w t − 1 + . . . + w 0 x_t=w_t+w_{t-1}+...+w_0 xt=wt+wt1+...+w0

其中, w t w_t wt是一个均值为0,方差为 σ 2 \sigma^2 σ2的白噪声。

所以随机游走是白噪声的一个累积。比如,非严格地说,如果把股价看成随机游走,它其实就是每日收益率(如果看成白噪声)的不断累积。

根据均值和方差的可加性可以求得随机游走的的均值和方差:

μ x t = 0 ; V a r ( x t ) = t σ 2 \mu_{x_t}=0; Var(x_t)=t\sigma^2 μxt=0;Var(xt)=tσ2

进一步,随机游走的自协方差也可以计算出来:

C o v ( x t , x t + k ) = C o v ( x t , x t + w t + 1 + . . . + w k ) Cov(x_t,x_{t+k})=Cov(x_t,x_t+w_{t+1}+...+w_k) Cov(xt,xt+k)=Cov(xt,xt+wt+1+...+wk)
= C o v ( x t , x t ) + ∑ i = t + 1 k C o v ( x t , w i ) =Cov(x_t,x_t)+\sum^k_{i=t+1}Cov(x_t,w_i) =Cov(xt,xt)+i=t+1kCov(xt,wi)
= C o v ( x t , x t ) + 0 = t σ 2 =Cov(x_t,x_t)+0=t\sigma^2 =Cov(xt,xt)+0=tσ2

有了自协方差,自相关系数也可以算出来:

ρ k ( t ) = C o v ( x t , x t + k ) V a r ( x t ) V a r ( x t + k ) \rho_k(t)=\frac{Cov(x_t,x_{t+k})}{\sqrt{Var(x_t)}\sqrt{Var(x_{t+k})}} ρk(t)=Var(xt) Var(xt+k) Cov(xt,xt+k)
= t σ 2 t σ 2 ( t + k ) σ 2 =\frac{t\sigma^2}{\sqrt{t\sigma^2}\sqrt{(t+k)\sigma^2}} =tσ2 (t+k)σ2 tσ2
= 1 1 + k t =\frac{1}{\sqrt{1+\frac{k}{t}}} =1+tk 1

显然,上面的自相关系数和时间间隔有关,所以不具有平稳性。

另外,当k很小时,自相关系数接近于1。如果把股价走势看成随机游走,那么它的当日价格和昨日价格的相关性理论上非常高。

很多人把上述结论看成是一个重要的工具,于是以今日价格作为次日价格的预测值(因为相关性很高嘛)。看似很有道理,但是策略的期望收益大概率为0。

这里要注意的是,当k很小时,自相关系数接近于1,但不是1!

4、随机游走示例

下面我们用随机游走来生成一些序列看看。就用第二节中的均值(-0.000062)和标准差(0.01315)构建一个高斯白噪声。

设定初始值为3000(昨天,上证第44次突破3000点),然后,我们生成8条随机游走曲线如下:

import numpy as np
import pandas as pd
import mathmu = 0  
sigma = 0.01315  
num = 500
offsets = [i for i in range(500)]
fig = plt.figure(figsize=(10, 6))
ax = fig.add_axes([0.2, 0.2, 1.2, 1.2])
colors = ['grey', 'brown', 'red', 'sienna', 'olive', 'green', 'blue', 'purple']for i in range(0, 8):rand_returns = np.random.normal(mu, sigma, num)prices = []for j in range(500):if j == 0:current_price = 3000else:last_price = prices[j-1]current_return = rand_returns[j]current_price = math.pow(math.e, math.log(last_price)+current_return)prices.append(current_price)ax.plot(offsets, prices, color=colors[i], linewidth=1.5, linestyle="-", label=r'random walk %d' % i)plt.legend(loc='upper left', frameon=False)

在这里插入图片描述

可以看到,这些数值走势毫无相关性和规律性,在时间推进过程中,波动由于单点白噪声的累积在远端越来越大,但是没有明显的方向性。


http://chatgpt.dhexx.cn/article/y6LN35BS.shtml

相关文章

时间序列:时间序列模型---白噪声

本文是Quantitative Methods and Analysis: Pairs Trading此书的读书笔记。 白噪声(white noise)是最简单的随机时间序列(stochastic time series)。 在每一时刻,从一个正态分布中抽取一个值从而形成白噪声时间序列。并且,这个正…

如何使用智能问答机器人服务

以某企业的IT呼叫中心为例,此呼叫中心每天都要为企业内部员工解答大量的IT问题,其中包括大量重复回答的问题。为了降低运维成本,该呼叫中心开始使用华为云CBS智能问答机器人来问答IT问题。 本文介绍了购买、使用的主要流程和操作步骤。指导您…

从 0 到 1,开发一个智能问答机器人

「搜索」并不局限于我们常说的搜索引擎、搜索框,实际上,问答机器人本质上也是一种「搜索」,输入相关查询,返回最接近或最相关的答案。 今天,我们将演示如何利用 Jina 全家桶,创建一个智能问答机器人&#…

FAQ问答机器人

FAQ问答机器人 0.Abstract1.任务介绍数据集评估方法测试集 2.使用ELMo预训练模型3.使用BERT预训练模型4.针对基线模型的分析思考以及可能的提升方向5.BERT训练模型1) 损失函数2) 数据集构造同义句(正例)的构造:非同义句(负例)的构造: 3) 对于如何计算分数的探讨 6. 结论以及原因…

聊天机器人与自动问答技术

文章转载自:http://www.itlipeng.cn/?p574 原文发表时间:2015-01-24 引言 最近半年,微软的聊天机器人小冰比较火,有些人对这方面的技术产生了兴趣,恰好之前做过自动问答方面的一些简单工作,这次写一篇…

开发一个智能问答机器人(优化篇)

上一篇介绍了整个问答机器人的技术架构和特定,本篇着重说下 如何让机器人(看起来)更智能 输入联想 使用jquery.autosuggest.js实现的输入联想,在输入2个字后,在5000个问答中基于全文检索,检索10条记录&am…

动手做个 AI 机器人,帮我回消息

大家好,我是鱼皮,自从做了知识分享,我的微信就没消停过,平均每天会收到几百个消息,大部分都是学编程的朋友向我咨询编程问题。 但毕竟我只有一个人,没法所有消息都一个个回复,所以也是很愧疚和…

开发一个智能问答机器人

近期开发了一套基于自然语言处理的问答机器人,之前没有做过python,主要做asp.net,写这篇目的是给想要开发这类智能客服系统的朋友提供一个思路,项目已经上线,但在开发和设计过程中仍然有很多问题没有得到解决&#xff…

【原创】聊天机器人与自动问答技术

聊天机器人与自动问答技术 作者:mjs (360电商技术) 引言 最近半年,微软的聊天机器人小冰比较火,有些人对这方面的技术产生了兴趣,恰好之前做过自动问答方面的一些简单工作,这次写一篇应景之作&…

智能问答机器人

1. 前言 问答机器人现在很多场合都有使用,比如:网页智能客服、微信公众号智能回复、淘宝的售后客服,QQ聊天机器人等等。有了这些客户机器人就能帮我们回答很多预置的一些问题,帮助用户解决常见问题,还可以进行自主训练…

智能问答机器人概述

智能问答机器人概述 总览任务机器人FAQ机器人闲聊机器人 总览 处理逻辑: query–>中控逻辑–>response 任务机器人 指特定条件下提供信息或服务的机器人。 任务型机器人核心模块主要包括三部分: 自然语言理解模块 —— Language Understanding …

数仓实时数据同步 debezium

数仓实时数据同步 debezium 背景debezium 简介架构基本概念 例子Router目前遇到的问题 背景 数据湖将源库的数据同步到hive数仓ods层,或直接在kafka中用于后面计算。源库包括mysql、postgresql、sqlserver、oracle,大部分是mysql数据库。当前采用的sqoo…

基于日志的同步数据一致性和实时抽取

宜信技术研发中心架构师 目前就职于宜信技术研发中心,任架构师,负责流式计算和大数据业务产品解决方案。曾任职于Naver china(韩国最大搜索引擎公司)中国研发中心资深工程师,多年从事CUBRID分布式数据库集群开发和CUB…

解析 TiDB 在线数据同步工具 Syncer

TiDB 是一个完全分布式的关系型数据库,从诞生的第一天起,我们就想让它来兼容 MySQL 语法,希望让原有的 MySQL 用户 (不管是单机的 MySQL,还是多机的 MySQL Sharding) 都可以在基本不修改代码的情况下,除了可以保留原有…

服务器与客户端的数据同步

2019独角兽企业重金招聘Python工程师标准>>> 问题 从一个例子说起,我们的客户端从服务器获取数据,这里假定获取文章。第一次使用,我们获取服务器端最新发表的几篇文章。 我们可以每次都重新获取,但这样费时又费流量。好…

数据实时同步或抽取上收的技术分析

原文:http://blog.csdn.net/dsg_gulibin/article/details/1696365 1 实现数据集中的技术手段分析比较 根据业界提供数据同步或抽取的解决方案来看,主要包括以下几大类: l 存储复制技术 l 数据库复制技术 l …

时间同步/集群时间同步/在线/离线

目录 一、能够连接外网 二、集群不能连接外网--同步其它服务器时间 一、能够连接外网 1.介绍ntp时间协议 NTP(Network Time Protocol)网络时间协议,是用来使计算机时间同步的一种协议,它可以使计算机对其服务器或时钟源做同步…

如何实时同步数据到StarRocks

我们知道,是StarRocks基于Doris开发的,它在多表连接查询的性能方面引领OLAP市场,是一个很好用的结构化数据仓库。但是一直没有很好的工具能够实现业务数据库的数据实时同步到StarRocks分布式数据仓库集群中,本文将带领读者一起来通…

文件实时同步

rsync remote sync 远程同步,同步是把数据从缓冲区同步到磁盘上去的、数据在内存缓存区完成之后还没有写入到磁盘中去、所以有时候要同步到磁盘中去的,而rsync说白了跟复制差不多、能将一个文件从一个地方复制到另外一个地方的、但是他也可以实现跨主机复…

系统间通讯实现数据信息实时同步解决方案

项目开发阶段遇到一个需求,描述大致就是同一个用户在A系统数据库保存的数据信息与在B系统数据库保存的数据信息要保持同步。当A系统用户修改了个人信息,A系统后台在将用户修改后的信息入库的同时也会向B系统发送消息,让B系统后台进行自动数据…