我在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」轉置。你確定這是你想要的嗎? –