Metoda Eulera-Maruyamy

Metoda Eulera-Maruyamy – metoda numerycznego rozwiązywania stochastycznych równań różniczkowych. Nazwa metody pochodzi od nazwiska japońskiego matematyka Gisiro Maruyamy (1916-1986), który rozszerzył metodę Eulera z 1768, stosowaną do numerycznego rozwiązywania równań różniczkowych zwyczajnych. Metoda ta jest jedną z niewielu metod numerycznych, które pozwalają metody numeryczne stosowane do równań deterministycznych rozszerzyć do równań stochastycznych[1].

Opis metody

Równanie stochastyczne

Niech dane będzie stochastyczne równanie różniczkowe postaci

oraz

– zadany warunek początkowy (położenie cząstki w chwili początkowej ),

gdzie:

– proces Wienera,
– zadane funkcje procesu losowego

Poszukiwane jest rozwiązanie tego równania na przedziale

Analiza równania stochastycznego

O stochastycznym charakterze powyższego równania decyduje różniczka procesu losowego Wienera: gdyby była równa zeru, to proces byłby deterministyczny. Funkcja stojąca przed tą różniczka, pełni zaś rolę wzmacniania lub osłabiania efektu fluktuacji losowych.

Z drugiej strony, funkcja stojąca przed różniczką decyduje, na ile proces deterministyczny dominuje nad procesem losowym – gdyby funkcja ta była zerowa, to proces byłby czysto losowy.

Powyższe własności łatwo sprawdzić, rozwiązując podane dalej przykładowe równanie stochastyczne, zmieniając odpowiednio jego parametry.

Przybliżenie Eulera-Maruyamy

Przybliżeniem Eulera-Maruyamy dokładnego rozwiązania powyższego równania jest łańcuch Markowa taki że:

  • zdarzenia losowe łańcucha zachodzą w dyskretnych chwilach czasu

odległych od siebie o wartość skokową

  • – zadane zdarzenie początkowe,
  • – zdarzenia obliczane wzorem rekurencyjnym:

przy czym:

– zadane funkcje

Cechą procesu Wienera jest, że różnica zmiennych losowych dla dowolnych chwil czasu takich że , ma rozkład normalny o średniej równej zeru i wariancji równej odległości czasowej rozważanych chwil . Wynika stąd, że zmienna losowa ma rozkład normalny o średniej równej zeru i wariancji

Przykład: Równanie Ornsteina-Uhlenbecka

Cztery losowe trajektorie procesu Ornsteina-Uhlenbecka dla θ = 1, σ =
niebieska: położenie początkowe a = 10, μ = 0
pomarańczowa: położenie początkowe a = 0, μ = 0
zielona: położenie początkowe a = −10, μ = 0
czerwona: położenie początkowe a = 0, μ = −10
E(X) określa trajektorię, po której poruszałby się układ, gdyby czynniki losowe były zerowe (σ = 0).

Równanie stochastyczne

Niech dane będzie stochastyczne równanie różniczkowe jednej zmiennej

o warunku początkowym

gdzie – stałe parametry; różniczka odpowiada za proces losowy Wienera.

Powyższe równanie opisuje tzw. proces Ornsteina-Uhlenbecka.

Zamiana na postać dyskretna

Zgodnie z metodą Eulera-Maruyamy zamienia się to równanie na postać dyskretną

Ponieważ to otrzymuje się równania rekurencyjne

gdzie – zmienne losowe o rozkładzie normalnym i wariancji

Warunek początkowy przyjmie postać:

Analiza zależność ruchu układu od parametrów równania

Zmieniając parametry równania stochastycznego, można otrzymać ruch układu w zależności od różnych warunków otoczenia, z jakim układ oddziałuje. Np.

  • przyjmując wartość parametru otrzyma się ruch czysto deterministyczny,
  • przyjmując wartość parametru otrzyma się ruch czysto losowy,
  • parametr określa położenie, do którego zmierza układ po dłuższym czasie, jeżeli czynniki losowe nie są zbyt duże, tj. dla odpowiednio małej wartości na rysunku pokazano cztery trajektorie układu w takich warunkach; mimo różnych wartości położeń początkowych układu (na rys. oznaczonych literą a), układ zmierza po pewnym czasie do położenia Przykładem jest ruch wahadła poddanego działaniu losowego oddziaływania od otoczenia i jednocześnie tłumionego – niezależnie od położenia początkowego wahadło przyjmie ostatecznie najniższe położenie.

Kod programu

Poniżej podano przykład kodu w języku Python służącego do całkowania równania Ornsteina-Uhlenbecka.

Na ilustracji pokazano wynik symulacji komputerowej dla przyjętych w programie wartości parametrów.

Pięć przykładowych rozwiązań stochastycznego równania różniczkowego opisującego proces Ornsteina-Uhlenbecka, znalezionych numerycznie za pomocą metody Eulera-Maruyamy dla θ = 0.7, σ = 0.06, μ = 1.4 i identycznych położeń początkowych X= 0; na osi pionowej jest położenie układu, na osi poziomej czas. Każde rozwiązanie przedstawia możliwą, losowo przebiegającą trajektorią układu, która dla dłuższych czasów oscyluje wokół punktu X=μ =1.4
import numpy as np
import matplotlib.pyplot as plt

#Dane:
liczba_symulacji = 5
t_0 = 0    # chwila początkowa
t_1 = 7    # chwila końcowa
N   = 200  # liczba punktów podziału przedziału

theta  = 0.7
mu     = 1.4
sigma  = 0.06

# Definicja funkcji generującej liczbę losową z rozkładu normalnego o wariancji Dt
def DW(Dt): 
    return np.random.normal(loc=0.0,scale=np.sqrt(Dt))

# Część główna programu
Dt   = (t_1 - t_0) / N

# Tablica dyskretnych chwil czasu
t    = np.arange(t_0, t_1, Dt) 

# Inicjalizacja tablicy na kolejne położenia cząstki
Y    = np.zeros(N)

for _ in range(liczba_symulacji):
    Y[0] = 0
    for i in range(0, N-1):
        Y[i+1]=Y[i] + theta*(mu -Y[i])*Dt +sigma * DW(Dt)
    plt.plot(t, Y) # tworzenie wykresu

plt.grid(True)  # Dodanie siatki do wykresu
plt.show()

Zobacz też

Przypisy

  1. ↑ P.E. Kloeden, E. Platen: Numerical Solution of Stochastic Differential Equations. Berlin: Springer, 1992. ISBN 3-540-54062-8.

Bibliografia

  • Paolo Brandimarte, Numerical Methods in Finance: A Matlab Introduction, New York: Wiley, 2002, ISBN 0-471-39686-9, OCLC 47092043.
  • P. Jackel, Monte Carlo Methods in Finance, Wiley, 2002, ISBN 0-471-49741-X.