一维布朗运动是指一个粒子(也可以是分子或颗粒)在一维空间中随机运动的现象。它是由英国生物学家罗伯特·布朗于1827年观察到的,被称为布朗运动。
在一维布朗运动中,粒子在时间的推动下,沿着一条直线上的不同方向进行随机运动,其路径呈现出无规律的波动。这是由于粒子与周围分子的碰撞和动能转移引起的。
一维布朗运动经常用于描述微观尺度下物质的扩散现象,例如液体或气体中微小颗粒的运动。它是一个随机过程,无法精确地预测粒子的位置,但可以通过统计方法描述其平均行为。以一维标准布朗运动 B ( t ) B(t) B(t)为例,它满足:
分布式布朗运动是一种在分布式计算环境中模拟布朗运动的方法。它结合了布朗运动的随机性和分布式计算的特点,用于研究分布式系统中各个节点的行为。它与布朗运动的不同点在于它的增量不再独立,而是具有某种相关性,对于一个布朗运动 B H ( t ) B_H(t) BH(t),有 E [ B H ( t ) B H ( s ) ] = 1 2 ( ∣ t ∣ 2 H + ∣ s ∣ 2 H − ∣ t − s ∣ 2 H ) E\left[ B_H\left( t \right) B_H\left( s \right) \right] =\frac{1}{2}\left( |t|^{2H}+|s|^{2H}-|t-s|^{2H} \right) E[BH(t)BH(s)]=21(∣t∣2H+∣s∣2H−∣t−s∣2H)如果令 t = s t=s t=s,则 E [ B H ( t ) 2 ] = t 2 H E[B_H(t)^2]=t^{2H} E[BH(t)2]=t2H,所以分布式布朗运动的方差就是 t 2 H t^{2H} t2H。其中,H被称为赫斯特指数,以英国水文学家哈罗德 ⋅ \cdot ⋅赫斯特命名。利用赫斯特指数可以分析时间序列的自相关和自相似性。
仔细分析股票价格的走势可以发现,股票每天的价格波动很多时候具有很强的相关性。比如当股票大涨时,通常是正相关的,当股票下跌时,通常是负相关的。所以判断赫斯特指数对于分析股票市场的相关性具有重要意义。估计赫斯特指数的方法有很多,本文采用均平方位移法。
假定有一个时间序列, { X 1 , X 2 , ⋯ , X n } \{X_1,X_2,\cdots,X_n\} {X1,X2,⋯,Xn}服从某种分布式布朗运动,那么就有 E [ ( X j + k − X j ) 2 ] = σ 2 k 2 H E[(X_{j+k}-X_j)^2]=\sigma^2k^{2H} E[(Xj+k−Xj)2]=σ2k2H令 W k = 1 n − k ∑ j = 1 n − k ( X j + k − X j ) 2 W_k=\frac{1}{n-k}\sum_{j=1}^{n-k}{\left( X_{j+k}-X_j \right) ^2} Wk=n−k1j=1∑n−k(Xj+k−Xj)2则 W k = σ 2 k 2 H W_k=\sigma^2k^{2H} Wk=σ2k2H两边同时取对数有
l o g W k = l o g σ 2 + 2 H l o g k logW_k=log\sigma^2+2Hlogk logWk=logσ2+2Hlogk将 l o g k logk logk看成一个变量, l o g σ 2 log\sigma^2 logσ2看成常数项,那么上式就是一个线性方程,2H就是斜率,可以通过线性回归来估算H的值。
下面用python来实现均平方位移法估计赫斯特参数。
import numpy as np
def Hst_estimate(ts):
kmax = int(np.floor(len(ts)/2))
if kmax < 2:
return -1
y = np.matrix(np.zeros((kmax, 1)))
x = np.matrix(np.ones((kmax, 2)))
ts = np.array(ts)
for k in range(kmax):
y[k] = np.log(np.mean((ts[k+1:]-ts[:-k-1])**2))
x[k, 1] = 2 * np.log(k+1)
beta = np.linalg.inv(x.T.dot(x)).dot(x.T).dot(y)
H = beta[1]
return H
下面给定不同的时间序列,来计算赫斯特参数的值:
ts = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(Hst_estimate(ts))
计算结果:[[1.]]
ts = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,10,9]
print(Hst_estimate(ts))
计算结果:[[0.97359599]]
ts = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10,10,9,8,7,6,7,8,9,10]
print(Hst_estimate(ts))
计算结果:[[0.69830922]]
通过比较可以发现,当时间序列出现递减后,赫斯特指数也会出现下降,当然,实际的股票市场不可能会一直递增的,而是一直波动的,所以其赫斯特指数正常情况下应该不会很大,那么H大于多少算大呢?这个就得考虑概率分布问题了,具体如何考虑感兴趣的读者可自行研究。