Euler-Maruyama-Verfahren

Aus testwiki
Zur Navigation springen Zur Suche springen
Exakte Lösung (schwarz) und Euler-Maruyama-Näherung mit Schrittweite 0,01 (rot) für die stochastische Differential­gleichung dSt = St dWt, S0 = 1

Das Euler-Maruyama-Verfahren, oft auch Euler-Maruyama-Schema oder stochastisches Euler-Schema genannt, ist das einfachste Verfahren zur numerischen Lösung von stochastischen Differentialgleichungen. Es wurde erstmals in den 1950er-Jahren durch den japanischen Mathematiker Gisiro Maruyama untersucht und basiert auf dem von Leonhard Euler stammenden expliziten Euler-Verfahren zur Lösung gewöhnlicher (deterministischer) Differentialgleichungen.

Während das explizite Euler-Verfahren seit seiner Erfindung ständig verbessert und weiterentwickelt wurde (implizites Euler-Verfahren, Runge-Kutta-Verfahren, Mehrschrittverfahren) und selbst dadurch an praktischer Bedeutung verloren hat, ist Euler-Maruyama mangels entsprechender Alternativen noch immer das in der Praxis dominierende Verfahren.

Formulierung

Gegeben sei ein Wiener-Prozess (Wt)t0 sowie dazu folgendes stochastisches Anfangswertproblem (S-AWP):

dSt=a(t,St)dt+b(t,St)dWt,S0=A.

Zur Berechnung einer numerischen Näherungslösung auf dem Intervall [0,T] mit T>0 werden wie beim gewöhnlichen Euler-Verfahren diskrete Zeitpunkte

0=t0<t1<<tn=T

mit tk=kh und Schrittweite h=Tn, n gewählt. Zusätzlich wird das stochastische Differential dWt durch die Zuwächse

ΔWk:=Wtk+1Wtk,k=0,,n1

ersetzt. Aus den Eigenschaften des Wiener-Prozesses folgt, dass die ΔWk unabhängig und normalverteilt mit Erwartungswert 0 und Varianz h sind.

Das Euler-Maruyama-Verfahren berechnet damit eine Approximation S^ von S folgendermaßen:

S^0=A,S^k+1=S^k+a(tk,S^k)h+b(tk,S^k)ΔWkk=0,,n1.

Dann ist S^k eine Näherung für Stk.

Konvergenz des Verfahrens

Das wichtigste theoretische Resultat bezüglich des Maruyama-Schemas beschreibt dessen starke Konvergenz (oder stochastische Konvergenz) gegen die gesuchte Lösung S: Eine Folge von stochastischen Prozessen (St(n)),0tT,n auf einem gemeinsamen Wahrscheinlichkeitsraum konvergiert definitionsgemäß stark mit Ordnung q gegen einen Prozess (St),0tT, wenn es eine Konstante c gibt, so dass für alle t[0,T]:

E(|St(n)St|)cnqt[0,T].

Im Falle des Maruyama-Schemas kann nun gezeigt werden: Die Diskretisierung (S^t) konvergiert für n stark mit Ordnung 12 gegen die Lösung S des S-AWP, wenn für alle reellen Zahlen x und alle positiven s,t die folgende Schranke gilt:

|a(s,x)a(t,x)|+|b(s,x)b(t,x)|K(1+|x|)(|ts|).

Von schwacher oder Verteilungskonvergenz mit Ordnung q spricht man hingegen, wenn für eine Konstante c gilt:

|E(f(St(n)))E(f(St))|cnqt[0,T]

für alle Funktionen f, die mindestens (2q+2)-mal stetig differenzierbar sind und deren sämtliche Ableitungen durch Polynome beschränkt sind.

Für hinreichend glatte Koeffizientenfunktionen a und b hat das Euler-Maruyama-Verfahren typischerweise die schwache Konvergenzordnung q=1.

Bemerkungen

  • Es gibt auch Lösungsverfahren höherer starker Ordnung als das Euler-Maruyama-Verfahren, etwa das Milstein-Verfahren, das meist Ordnung 1 erreicht. Diese Verfahren sind aber numerisch aufwändiger und resultieren nicht immer in einer schnelleren Konvergenz.
  • Die oben angeführte Bedingung für die starke Konvergenz mit Ordnung 0,5 ist nur wenig strenger als die Bedingung an a und b, die die Existenz der Lösung S sicherstellt. Sie ist also beinahe immer erfüllt.
  • An starker Konvergenz ist man in der Praxis nur sehr selten interessiert, da zumeist nicht eine spezielle Lösung zu einem speziellen Wiener-Prozess gesucht wird, sondern vielmehr eine Stichprobe aus der Wahrscheinlichkeitsverteilung des Prozesses, wie man sie beispielsweise für Monte-Carlo-Verfahren benötigt.
  • Ein implizites Maruyama-Schema als Analogon zum impliziten Euler-Verfahren ist nicht möglich; dies liegt an der Definition des (stochastischen) Ito-Integrals, über das stochastische Differentialgleichungen definiert sind und das Funktionen immer am Anfang eines Intervalls auswertet (siehe dort). Implizite Verfahren konvergieren also hier gegen teilweise völlig falsche Ergebnisse.

Beispiel

Der folgende Beispielcode zeigt die Implementierung des Euler-Maruyama-Verfahrens zur Berechnung des Ornstein-Uhlenbeck-Prozesses als Lösung des Anfangswertproblems dYt=θ(μYt)dt+σdWt,Y0=IC in Python (3.x):

Ergebnis des Beispielcodes
import numpy as np
import matplotlib.pyplot as plt

tBegin=0
tEnd=2
dt=.00001

t = np.arange(tBegin, tEnd, dt)
N = t.size
IC=0
theta=1
mu=1.2
sigma=0.3

sqrtdt = np.sqrt(dt)
y = np.zeros(N)
y[0] = IC
for i in range(1,N):
    y[i] = y[i-1] + dt*(theta*(mu-y[i-1])) + sigma*np.random.normal(loc=0.0,scale=sqrtdt)

fig, ax = plt.subplots()
ax.plot(t,y)
ax.set(xlabel='t', ylabel='y',
       title='Euler-Maruyama-Verfahren zur Berechnung eines \n Ornstein-Uhlenbeck-Prozesses mit $\\theta=1$, $\mu=1.2$, $\sigma=0.3$')
ax.grid()
plt.show()

Literatur

  • Paul Glasserman: Monte Carlo Methods in Financial Engineering. Springer 2003, ISBN 0-387-00451-3