2016-07-11 8 views
0

Ich untersuche Sobol-Sequenzen als eine Varianzreduktionstechnik, um eine Simulation zu beschleunigen. Die Konvergenz der QMC-Methode scheint jedoch sehr schwach zu sein.Quasi-monte-carlo schneidet in der Pfadsimulation der Brownschen Bewegung schlechter ab. Julia

Weiß jemand, wie oder warum das der Fall ist? Ist der Vorteil von QMC in diesen hochdimensionalen Fällen verloren? Ich bekomme ähnliche Ergebnisse für die Brownsche Brücke.

-Code unten versucht, in Julia die folgenden

$$ \ mathbb {E} \ int B_t dt $$

wo $ B_t $ ist eine Standard-Brownsche Bewegung zu simulieren. Der wahre Wert ist $ \ 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

Auch ich weiß nicht, warum die Mathjax nicht rendern ... Sorry. – pdevar

+0

Da dies eine _programming_Q/A-Site ist und nicht auf Mathematik ausgerichtet ist, konzentriert sich die Formatierung auf die Codeformatierung, nicht auf die mathematische Formatierung. http://math.stackexchange.com rendert den Mathjax und ist besser für Ihre Frage geeignet, da es mehr um die Technik als um den _code_ geht. –

+0

Beachten Sie auch, dass es eine [Quantitative Finance] (http://quant.stackexchange.com/) SE-Site gibt, die sogar _more_ angemessen sein kann. –

Antwort

1

Dies ist ein Kommentar, keine Antwort, aber meine SO-Punktzahl ist nicht hoch genug für Kommentare.
Timing mit tic() .. toc() - in 3 Sekunden abgeschlossen.

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

elapsed time: 2.928828918 seconds 
Verwandte Themen