我在MATLAB中模拟布朗运动,但是我得到一个奇怪的结果,布朗运动增量的方差随着时间的增长而增长,当它保持不变时。例如我构建布朗运动系统,在MATLAB中布朗运动增量的方差
brown_drift = @(t,X) 0;
brown_vol = @(t,X) .2;
brown_sys = bm(brown_drift, brown_vol);
然后我插1000次试验与时间步1和长度为10
inter_brown = interpolate(brown_sys, 0:1:10, zeros(1,1,1000),'Times',[0]);
inter_brown = squeeze(inter_brown);
一个布朗运动的增量,所以如果我构建矩阵应该是独立的的增量和方差,他们应该都是相同的,并等于波动率参数的平方。
inc = inter_brown(2:end,:)-inter_brown(1:end-1,:);
var(inc')
ans = 0.0374 0.1184 0.2071 0.2736 0.3516 0.4190 0.5511 0.5891 0.6767 0.7647
但是,它显然不能满足简单的理论,每个增量的方差应该是0.2^2。看起来每个增量在未来增加2 * 0.2^2增量的方差。当布朗运动似乎满足其他理论时,我似乎无法弄清楚为什么会发生这种情况。在给定时间运动的方差。有什么明显的我在这里失踪?
谢谢。我不认为我之前很清楚,我不关心路径中的差异。我担心从t-1到t的给定增量的方差,所以我需要取转置矩阵的方差。 – Ivan
只要时间间隔不相交,维纳增量的方差也是dt^2。所以你可以考虑从t-1到t或从t-2到t-1的增量等等。基本上,如果你计算'var(inc(randi(numel(inc(:)),1,100)))'例如,那么你将获得正确的值。然而,非常有趣的是,通过查看所有路径上特定时间的增量,随着时间的推移,方差在增加。我无法解释,但我确信你不需要考虑“inc”转置。你确定这是你想要的吗? –