Дисперсия приращений броуновского движения в 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 к дисперсии приращения перед ним. Кажется, я не могу понять, почему это происходит, когда броуновское движение, кажется, удовлетворяет другой теории, например. дисперсия движения в данный момент времени. Есть ли что-то очевидное, что мне здесь не хватает?


person Ivan    schedule 28.07.2016    source источник


Ответы (1)


Есть три вещи, которые я бы сделал по-другому:

1) Выберите меньший временной шаг ваших броуновских путей. Чем больше шагов на одном пути вы моделируете, тем точнее будет рассчитанная дисперсия ваших приращений на каждом пути (проверьте с помощью var(var(inc))). Это означает, что для каждого пути вы получите более похожие результаты для дисперсии приращений.

Показывает дисперсию для 100 различных путей. Один раз с маленькими шагами и один раз с еще меньшими шагами. Вы видите, что чем меньше временной шаг, тем меньше становится дисперсия дисперсий.

2) Кроме того, дисперсия приращений масштабируется по-разному, если ваше время больше 1 (см. Изменчивость с течением времени), поэтому вы получите разные результаты в зависимости от исходного масштаба времени. то есть

interpolate(brown_sys, 0:0.1:10, zeros(1,1,1000),'Times',[0]);

приведет к дисперсии около 0.4 и

interpolate(brown_sys, 0:0.1:100, zeros(1,1,1000),'Times',[0]);

приведет к дисперсии 4. Поэтому просто измените время на:

interpolate(brown_sys, 0:dt:1, zeros(1,1,1000),'Times',[0]);

Где вы должны выбрать dt очень маленький, т.е. dt = 0.001;

3) Вы должны учитывать дисперсию inc, а не транспонированную. Потому что полученная вами матрица inter_brown имеет в каждом столбце смоделированный путь. Таким образом, шаги, принадлежащие одному пути, должны быть в одном столбце. Таким образом, вычисляемая вами матрица inc содержит приращения в соответствии с одним путем в столбце. var() матриц вычисляют дисперсию выборки, хранящейся в одном столбце. Поэтому, если вы хотите узнать дисперсию приращений вашего первого пути, вам нужно будет вызвать что-то вроде: var(inc(:,1)). Вызов var(inc) дает вам дисперсию для каждого пути. Вы можете построить их с помощью plot(var(inc)). Затем вы увидите, что дисперсия приращений составляет около 0.04, как и ожидалось. Проверьте это с помощью mean(var(inc)).

person v.tralala    schedule 28.07.2016
comment
Спасибо. Я не думаю, что я был ясен раньше, меня не интересует дисперсия внутри пути. Меня интересует дисперсия заданного приращения от t-1 до t, поэтому мне нужно взять дисперсию транспонированной матрицы. - person Ivan; 29.07.2016
comment
Дисперсия винеровского приращения также равна dt^2, пока временные интервалы не пересекаются. Таким образом, вы можете рассматривать приращения от t-1 до t или от t-2 до t-1 и так далее. В основном, если вы вычислите, например, 'var(inc(randi(numel(inc(:)),1100)))', вы получите правильные значения. Однако очень интересно, что, глядя на приращения в определенное время по всем путям, дисперсия увеличивается с течением времени. Я не могу этого объяснить, но я совершенно уверен, что вам не нужно считать inc транспонированным. Вы уверены, что это то, что вы ищете? - person v.tralala; 30.07.2016