我在 MATLAB 中模拟布朗运动,但是我得到了一个奇怪的结果,布朗运动增量的方差随着时间的推移而增长,而它应该保持不变。例如我构建了一个布朗运动系统,
brown_drift = @(t,X) 0;
brown_vol = @(t,X) .2;
brown_sys = bm(brown_drift, brown_vol);
然后我用时间步长 1 和长度 10 插入 1000 次试验
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 添加到之前增量的方差中。当布朗运动似乎满足其他理论时,我似乎无法弄清楚为什么会发生这种情况,例如在给定时间的运动方差。我在这里有什么明显的遗漏吗?