前言
高斯噪声、均值噪声、朗之万噪声等噪声由于过于“离散”,有时候反而带来了理想与实际的偏差。为了更好解释市场趋势等时序相关的随机过程,人们引入了多种随机模型和估计方法。Ornstein-Unlenbeck (OU)均值回归过程由Taylor(1986)和Hull(1987)引入,有兴趣深入了解可以阅读原文。由维纳过程驱动的奥恩斯坦-昂伦贝克利率作为单因素短期利率在金融领域被广泛应用(Kho Chia Chen,2014)。JSV2011年的一篇论文提到在电路系统中也常考虑OU噪声。一、Ornstein-Unlenbeck随机过程
考虑一个简单的自由马尔代夫过程,让其受到一个维纳过程
Z
Z
Z的驱动,参考美国伊利诺斯大学高教授的文章,将简单OU过程定义为:
其中常数
λ
>
0
λ>0
λ>0。当然,这个形式不太直观,也不好处理,写出其特殊的微分形式:
维纳过程的微分形式服从高斯分布,因此可以使用更简单生成的高斯随机变量替代,这种形式的方程在MATLAB中求解仅需要几行代码。当然,还有分数阶自由OU过程以及对OU过程的许多有趣的推论,这里不做过多介绍,有兴趣的可以阅读 Free Ornstein-Uhlenbeck processes 这篇文章。
二、MATLAB仿真
我们常常需要的是均值和方差都很小的噪声,因此只考虑简单的OU噪声即可,MATLAB代码如下:
tspan = 0:1e-2:50;
[t,e]=ode45(@ounoise,tspan,[0]);
figure;plot(t,e);xlabel(['OU噪声,均值:' num2str(mean(e)) ',方差:' num2str(std(e))]);
figure;[cor,lag] = xcorr(e,e,'normalized');plot(lag/100,cor);
figure;[w,fw] = pwelch(e);plot(fw,w);
function dx = ounoise(t,x)
tm = 2;%相关时间
deta = pi/2;%标准差
r = 1;
dx = -r*x+r*randn(1);%简单过程
% dx = -1/tm*x+sqrt(2/tm)*deta*randn(1);
end
则程序结果如图:
通过时序可以看出,在遵从布朗运动的随机性的同时,OU噪声不断向着x轴振荡修正,这个过程也叫均值回归。由于使用的高斯噪声,因此每次运行的结果略有不同,但是整体分布相似。使用分数阶的OU公式时可以通过修改参数控制均值、标准和噪声的相关时间,当然对上述结果整体加减的改均值也是可行的。OU噪声的自相关函数并非是单纯的冲激函数,但是其功率谱与高斯噪声相似。