2016-07-11 7 views
0

Я рассматриваю использование последовательностей Sobol как метод уменьшения дисперсии, чтобы ускорить симуляцию. Однако сближение метода QMC кажется очень слабым.Квази-монте-карло не работает в моделировании броуновского движения. Julia

Кто-нибудь знает, как и почему это так? Является ли преимущество QMC в этих больших размерных случаях? Я получаю аналогичные результаты для броуновского моста.

код ниже попытки смоделировать в Джулии следующие

$$ \ mathbb {E} \ int b_t дт $$

где $ b_t $ это стандартное броуновское движение. Истинным значением является $ \ frac {1} {2} T^2 $.

using PyPlot 
import Distributions: Normal 
import PyPlot: plt 
using Sobol 

function pseudo_path_variation(dt, T, M) 
    # The pseudo random approach 
    N = round(Int, T/dt); 
    Z = zeros(N, M); 
    d = Normal(0, 1.0); 
    sum = 0.0; 
    for j in 1:M, i in 1:N-1 
     Z[i+1, j] = Z[i, j] + sqrt(dt)*rand(d, 1)[1]; 
    end 
    # Calculate sum 
    return sumabs2(Z)*dt/M; 
end 

function quasi_path_variation(dt, T, M) 
    # An attempt at the above using a N dimensional sobol sequence 
    N = round(Int, T/dt); 
    Z = zeros(N, M); 
    d = Normal(0, 1.0); 
    sum = 0.0; 

    # The N dimensional sobol sequence 
    s = SobolSeq(N); 

    # Burn in the sequence 
    for i in 1:10 
     next(s); 
    end 

    for j in 1:M 
     B = next(s); 
     for i in 1:N-1 
      Z[i+1, j] = Z[i, j] + sqrt(dt)*quantile(d, B[i]); 
     end 
    end 
    # Calculate sum 
    return sumabs2(Z)*dt/M; 
end 

dt = 0.5; 
T = 10; 
M = 1000; 

estims = zeros(M); 
for N = 1:M-1 
    estims[N+1] = quasi_path_variation(dt, T, N) 
end 

p = plot(linspace(0, M, M), estims); 

estims = zeros(M); 
for N = 1:M-1 
    estims[N+1] = pseudo_path_variation(dt, T, N) 
end 

p = plot(linspace(0, M, M), estims); 
+0

Кроме того, я не знаю, почему mathjax не рендеринг ... Извините. – pdevar

+0

Потому что это сайт _programming_ Q/A и не ориентирован на математику, поэтому форматирование ориентировано на форматирование кода, а не на математическое форматирование. http://math.stackexchange.com будет отображать mathjax и более подходит для вашего вопроса, так как это больше о _technique_, что _code_. –

+0

Обратите также внимание на то, что существует сайт [Quantitative Finance] (http://quant.stackexchange.com/), который может быть даже более подходящим. –

ответ

1

Это комментарий, а не ответ, но мой показатель SO недостаточно высок для комментариев.
Сроки с tic() .. toc() - завершены за 3 секунды.

tic() 
dt = 0.5; 
T = 10; 
... 
... 
p = plot(linspace(0, M, M), estims); 
toc() 

elapsed time: 2.928828918 seconds