Kurs:Modellierung und Numerische Methoden von Finanzderivaten/5 Die Monte-Carlo-Methode

Aus testwiki
Zur Navigation springen Zur Suche springen

Der Preis einer europäischen (plain vanilla) Option kann mit der Black-Scholes-Formel aus Kapitel 4 berechnet werden. Leider existieren zu komplexeren Optionen im allgemeinen keine expliziten Formeln mehr. In diesem Kapitel stellen wir die Monte-Carlo-Methode zur Integration von stochastischen Differentialgleichungen vor, mit der faire Preise von komplizierten Optionen numerisch berechnet werden können. Zuerst führen wir in Abschnitt 5.1 in die Thematik ein. Das Monte-Carlo-Verfahren erfordert die Simulation von Realisierungen eines Wiener-Prozesses. Die Simulation wiederum benötigt normalverteilte Zufallszahlen. Die Erzeugung von Zufallszahlen ist Gegenstand von Abschnitt 5.2. In Abschnitt 5.3 erläutern wir die numerische Lösung stochastischer Differentialgleichungen. Die Präzision von Monte-Carlo-Simulationen kann mit Hilfe der Technik der Varianzreduktion, die wir in Abschnitt 5.4 vorstellen, erhöht werden. Schließlich wenden wir die vorgestellten Methoden in Abschnitt 5.5 zur Simulation einer asiatischen Call-Option mit stochastischer Volatilität an.

5.1 Grundzüge der Monte-Carlo-Simulation

Die Berechnung des fairen Preises einer komplexen Option ist im Allgemeinen eine anspruchsvolle Aufgabe, die nur numerisch gelöst werden kann. Bei vielen Optionen ist es notwendig, stochastische Differentialgleichungen bzw. stochastische Integrale numerisch zu lösen. Beispiele für derartige Situationen stellen wir im Folgenden vor.

Beispiel 5.1: Asiatischer Call im Heston-Modell

Berechne den fairen Preis einer asiatischen Call-Option mit der Auszahlungsfunktion

V(ST,T)=(ST1T0TSτdτ)+,

wobei die Dynamik von St und σt durch das Heston-Modell

dS=μSdt+σSdW1,dσ2=κ(θσ2)dt+νσdW2

gegeben sei. Dieses Beispiel erfordert die Integration von stochastischen Differentialgleichungen und des stochastischen Integrals 0TSτdτ. Die Integration kann mit Hilfe der Monte-Carlo-Methode durchgeführt werden. Wir erläutern dies im Detail in Abschnitt 5.5.

Beispiel 5.2: Basket-Option

Berechne den fairen Preis einer europäischen Option auf n Aktien (Basket-Option) mit der Auszahlungsfunktion V0(S1,,Sn). Ist die Dynamik der Aktienkurse S1(t),,Sn(t) wie in Abschnitt 4.5 durch

dSi=μiSidt+σiSidWi,i=1,,n

und durch eine mehrdimensionale Brownsche Bewegung (W1,,Wn) mit der Kovarianz-Matrix Σ (siehe Definition 5.7) gegeben, so berechnet sich der Optionspreis nach dem Black-Scholes-Modell analog zu (4.18) nach

V(S1,,Sn,t)=er(Tt)(detΣ)(2π(Tt))n×00eTΣ1/2V0(S'1,,S'n)dS1dSnS1Sn

mit Σ=(Σij)i,j=1n,α=(α1,,αn) und

αi:=ln(S'i/Si)(rΣii2/2)(Tt)Tt.

Hier muss also ein n-dimensionales (Riemann-)Integral ausgewertet werden, wobei die Dimension n je nach Größe des Baskets sehr groß sein kann. Numerische Quadraturformeln sind hier ungeeignet, da zu viele Funktionswerte ausgewertet werden müssen (bei n=100 z. B. 21001030 Auswertungen). Einen Ausweg bietet die Monte-Carlo-Integration. Ein Beispiel, wie das geht, geben wir in Kap. 5.2, Beispiel 5.7.

Zur Vereinfachung betrachten wir im folgenden eine europäische Plain-Vanilla-Put-Option auf einen Basiswert, dessen Kurs sich gemäß einer geometrischen Brownschen Bewegung entwickelt:

(5.1) dSt=rStdt+σStdWt

mit Anfangswert S0, konstantem risikofreien Zinssatz r0, konstanter Volatilität σ>0 und einem Wiener-Prozess Wt (siehe Abschnitt 3.2). In Bemerkung 4.10 haben wir gezeigt, dass der Optionspreis V(St,t) zur Zeit t=0 gegeben ist durch den diskontierter Erwartungswert

(5.2) V(S0,0)=erTE(V(ST,T)).

Die Grundidee der Monte-Carlo-Simulation besteht nun darin, den Erwartungswert in (5.2) durch Simulation von N Pfaden St:0<t<T des Basiswert-Kurses zu approximieren. Der Algorithmus besteht aus vier Schritten:

Simulation der Basiswert-Pfade: Berechne für k=1,,N den Itô-Prozess (5.1) zum Anfangswert S0 mit den Lösungen (St)k.
Berechnung der Auszahlungsfunktion: Bestimme für alle k=1,,N die Auszahlungsfunktion entsprechend zum Pfad (St)k:
VT,k:=(K(ST)k)+.
Berechnung eines Schätzers: Berechne einen Schätzer für den Erwartungswert in (5.2). Naheliegend ist etwa die Wahl
E^(VT):=1Nk=1NVT,k,
wobei VT=(VT,1,,VT,N).
Bestimmung des Optionspreises: Berechne eine Approximation des fairen Optionspreises durch
V^:=erTE^(VT).

Die Schritte 2-4 bereiten keine Schwierigkeiten. Schritt 3 beruht darauf, dass nach dem Gesetz der großen Zahlen das arithmetische Mittel von gleichverteilten und unabhängigen Zufallsvariablen fast sicher gegen den Erwartungswert konvergiert (siehe z.B. [3]). Schritt 1 benötigt die numerische Integration von stochastischen Differentialgleichungen, die aus zwei Teilaufgaben besteht:

  • Simulation von N unabhängigen Realisierungen eines Wiener-Prozesses und
  • approximative Berechnung der Lösung der stochastischen Differentialgleichung zum jeweiligen Pfad des Wiener-Prozesses.

Eine sehr einfache Approximation der Gleichung (5.1) ist gegeben durch

(5.3)ΔSt=rStΔt+σStΔWt,

wobei ΔWt=Wt+ΔtWt 𝒩(0,Δt)-verteilt ist (siehe Satz 3.10 (3)). Wir benötigen nun Realisierungen des Wiener-Prozesses ΔWt. Wegen

ΔWt=ZΔt

genügt es, Realisierungen einer 𝒩(0,1)-verteilten Zufallsgröße Z zu bestimmen. Das folgende Matlab-Programm simuliert einen Wiener-Prozess.

% Simulation eines Wiener-Prozesses
h = 0.01; W(1) = 0;
for i=1:999
  W(i+1) = W(i) + randn*sqrt(h);
end

Die Matlab-Funktion randn liefert standardnormalverteilte Zufallszahlen. Tatsächlich handelt es sich um Pseudo-Zufallszahlen, da der Algorithmus zur Erzeugung dieser Zahlen deterministisch ist. Wir können die Approximation (5.3) auch schreiben als

(5.4) Sk+1Sk=ΔSk=rSkΔt+σSkZΔt,S0 gegeben,k=0,1,2,
% Approximative Loesung von (5.1)
h = 0.01; mu = 0.1; sigma = 0.4;
S(1) = 1; 
for i=1:999
  dW(i) = randn*sqrt(h);
  S(i+1) = S(i)*(1 + mu*h + sigma*dW(i));
end

Damit sind wir in der Lage, unsere erste Monte-Carlo-Simulation gemäß der obigen vier Schritte durchzuführen. Die Realisierung erfolgt mit einem Matlab-Programm.

Der Funktionsaufruf randn(’state’,3) bedeutet, dass der Pseudo-Zufallszahlengenerator von Matlab mit der Zahl 3 initialisiert wird. Dies hat den Zweck, die Simulationsergebnisse reproduzierbar zu machen. In Abbildung 5.12 illustrieren wir die Entwicklung der Preise V^ einer europäischen Put-Option in Abhängigkeit der Anzahl N der Monte-Carlo-Simulationen. Der Black-Scholes-Optionspreis beträgt V=16.98. Der Monte-Carlo-Preis weicht von dem Black-Scholes-Preis stark ab, wenn die Anzahl N der Monte-Carlo-Simulationen zu klein gewählt wurde. Allerdings schwanken die Werte auch für große N noch recht stark. Natürlich ist es für dieses Beispiel wesentlich effizienter, die Black-Scholes-Formel zur Bestimmung des Optionspreises zu verwenden. Für komplexere Optionen wie die asiatische Option im Heston-Modell aus Beispiel 5.1 sind wir jedoch auf die Monte-Carlo-Methode angewiesen, da keine expliziten Formeln existieren.

% Monte-Carlo-Simulation fuer einen europaeischen Put
clear all, randn(’state’,3)
K = 100; r = 0.05; sigma = 0.2; T = 1;
n = 50; h = 1/n; S(1) = 80;
for j=1:100
  N=j*100;
  for k=1:N
    for i=2:n
      S(i) = S(i−1)*(1 + r*h + sigma*randn*sqrt(h)); S
    end
    payoff(j,k) = max(0,K−S(n));
  end
  V(j) = exp(−r*T)*sum(payoff(j,:))/N;
end
plot(V)

Die oben präsentierten Beispiele und Simulationen geben Anlass zu den folgenden Fragen:

  • Wie können wir standardnormalverteilte Pseudo-Zufallszahlen erzeugen?
  • Wie genau ist die Approximation von Gleichung (5.4)? Wie kann die Approximation verbessert werden?
  • Wie kann das hochdimensionale Integral aus Beispiel 5.2 mittels der Monte-Carlo-Methode approximiert werden?

Diese Fragen werden wir in den nächsten Abschnitten beantworten.

5.2 Pseudo-Zufallszahlen

Für die Simulation des Wiener-Prozesses benötigen wir standard-normalverteilte Zufallszahlen Z, um die Inkremente ΔW=ΔtZ zu berechnen. Wir benutzen dafür die Notation

Z𝒩(0,1).

Erzeugen wir Zufallszahlen im Rechner, so handelt es sich letztlich immer um eine deterministische Vorgehensweise. Man spricht daher von Pseudo-Zufallszahlen. Im Folgenden benutzen wir jedoch den Begriff Zufallszahlen auch, wenn wir Pseudo-Zufallszahlen meinen. Zuerst erzeugen wir im Intervall [0,1] gleichverteilte (Pseudo-)Zufallszahlen Y,

Y𝒰[0,1],

und transformieren sie dann auf normalverteilte Zufallszahlen:

Z:=h(Y)𝒩(0,1).

Um die obigen Begriffe zu präzisieren, hier eine Definition:

Definition 5.1

  1. Eine Zufallsvariable X heißt gleichverteilt auf dem Intervall [a,b] (in Zeichen: X𝒰[a,b]), wenn sie die Dichtefunktion f(x)=1(ba),x[a,b] besitzt.
  2. Eine Folge von Zufallszahlen heißt nach F verteilte Zufallszahlen, wenn sie unabhängige Realisierungen einer nach einer Verteilungsfunktion F verteilten Zufallsvariablen sind.

Gleichverteilte Zufallszahlen:
Ein einfacher Algorithmus, um auf [0,1] gleichverteilte Zufallszahlen zu erzeugen, ist durch die lineare Kongruenz-Methode gegeben: Seien M,a,b,X0{0,,M1}.

Für k=1,2,
Xk:=(aXk1+b)modM,Uk:=Xk/M.

Offenbar müssen wir a=0 und (wenn b=0) X0=0 ausschließen. Außerdem sollte a1 sein, denn ansonsten wäre Xk=(X0+kb)modM zu leicht vorhersagbar. Die Folge Xk hat die folgenden Eigenschaften:

  • Die Folge (Xk)k ist periodisch mit einer Periode, die kleiner oder gleich M ist, denn: Wegen Xk{0,,M1} muss es ein p geben, so dass Xp=X0 und daher Xk=Xk+p für alle k ist.
  • Die Verteilung der Zufallsvektoren (Uk,,Uk+m) ist leider korreliert (also nicht unabhängig voneinander); siehe das folgende Beispiel.

Beispiel 5.3

Wir betrachten den Fall m=2 mit den Daten M=2048,a=1229,b=1 und X0=1. Die Punkte liegen auf parallelen Geraden. Solche Zahlen können wir kaum Zufallszahlen nennen!

In dem folgendem Matlab-Programm ist die lineare Kongruenz-Methode implementiert.

% Pseudo-Zufallszahlen nach der linearen Kongruenz-Methode
a = 1229; b = 1; M = 2048; N = 500;
X(1) = 1; 
for i = 2:N
  X(i) = mod(a*X(i−1)+b,M);
end
plot(X([1:N−1]),X([2:N]),’.’)

Wegen der Eigenschaft, dass die Zufallszahlen auf parallelen Geraden liegen, ist die lineare Kongruenz-Methode nicht sehr brauchbar. Besser sind sogenannte Fibonacci-Generatoren geeignet. Die Idee ist hier, die Fibonacci-Folge zu verwenden:

Für k=3,4,
Xk:=(Xk1+Xk2)modM,Uk:=Xk/M

mit M,X1,X2. Je nach Wahl von M können aber die Ergebnisse recht unbefriedigend sein. Es sind weit weniger als 2000 Punkte zu sehen, da die Folge (Uk) sich wiederholt.

Geeigneter sind sogenannte lagged Fibonacci-Generatoren (oder Fibonacci-Generatoren mit ”Verzögerung”) der Form

Für kmax{μ,ν}
Xk:=(XkμXkν)modM,
if Xk<0 then Xk:=Xk+M;
Uk:=Xk/M,

wobei die Anfangszahlen X1,,Xmax{μ,ν} etwa mittels einer linearen Kongruenz-Methode bestimmt werden können. In dem folgenden Matlab-Programm werden diese Zahlen allerdings mittels des bereits implementierten Zufallszahlen-Programms rand berechnet.

% Pseudo-Zufallszahlen nach dem lagged Fibonacci-Generator
rand(’state’,2) 
M = 2048; nu = 17; mu = 5; N = 5000;
X = M*rand(1,max(nu,mu));
for i=max(mu,nu)+1:N
  X(i) = mod(X(i−mu)−X(i−nu),M);
  U(i) = X(i);
end 
plot(U([1:N−1]),U([2:N]),’.’)

Die Punkte erscheinen genügend zufällig verteilt. Fibonacci-Generatoren haben außerdem den Vorteil, dass sie sehr einfach zu implementieren sind.

Normalverteilte Zufallszahlen:
Wir erzeugen normalverteilte Zufallszahlen durch Transformation gleichverteilter Zufallszahlen. Dies kann geschehen durch

  • Invertierung der Verteilungsfunktion oder
  • Transformation zwischen Zufallszahlen.

Grundlage für die Invertierung ist der folgende Satz:

Satz 5.1

Sei U𝒰[0,1] eine gleichverteilte Zufallsvariable und F eine stetige, streng monotone Verteilungsfunktion. Dann ist die Zufallsvariable F1(U) nach F verteilt.

Beweis:

Die Umkehrfunktion F1 existiert gemäß Voraussetzungen. Die Annahme der Gleichverteilung impliziert für alle ξ[0,1]: P(Uξ)=ξ. Somit folgt

P(F1(U)x)=P(UF(x))=F(x).

Dies bedeutet, dass F1(U) nach F verteilt ist.

q.e.d.

Ist dieser Satz auf die Normalverteilung ϕ anwendbar? Es liegen weder für ϕ noch für ϕ1 geschlossene Formelausdrücke vor. Die nichtlineare Gleichung ϕ(x)=u müsste numerisch invertiert werden, etwa mittels des in Abschnitt 4.2 vorgestellten Newton-Verfahrens. Allerdings ist das Problem für u1 schlecht konditioniert (kleine Änderungen in u bewirken sehr große Änderungen in x). Als Ausweg kann man ϕ1 ähnlich wie in Abschnitt 4.2 durch eine rationale Funktion G approximieren und x=G(u)ϕ1(u) setzen. Bei der rationalen Approximation ist das asymptotische Verhalten von ϕ1 (senkrechte Tangenten bei u=0 und u=1) sowie die Punktsymmetrie zu (u,x)=(12,0) zu berücksichtigen.

Wir wählen allerdings die zweite Idee: Transformation der Zufallszahlen. Grundlage hierfür ist der folgende Satz.

Satz 5.2

Sei X eine Zufallsvariable auf n mit der Dichtefunktion f>0 auf der Menge S:={xn:f(x)>0} von f. Die Transformation h:SB:=h(S) sei umkehrbar mit stetig invertierbarer Inversen h1. Dann hat Y:=h(X) die Dichtefunktion
yf(h1(y))|det(dh1(y)dy)|,yB.

Beweis:

Wir geben nur eine grobe Beweisskizze. Nach dem Transformationssatz im n gilt (sei A der Wertebereich von h, d. h. h:D(h)A):

P(Y=h(X)A)=P(Xh1(A))=h1(A)f(u)du=Af(h1(y))|det(dh1(ydy)|dy.

q.e.d.

Im Falle n=1 und f(x)=1 (Gleichverteilung in [0,1]) suchen wir also eine Transformation y = h(x)</math>, so dass die transformierte Dichtefunktion gleich der Normalverteilung ist:

1|dh1(y)dy|=12πexp(y22).

Dies ist eine gewöhnliche Differentialgleichung für h1, die leider keine geschlossene Formel für die Transformation liefert. Verblüffenderweise erhalten wir eine geschlossene Formel, wenn wir nicht in , sondern in 2 transformieren. Das geht folgendermaßen. Wir wenden Satz 5.2 auf S=[0,1]2 und f(x)=1,xS an. Wähle die Transformation y = h(x)</math> mit

h(x)=(2lnx1cos(2πx2)2lnx1sin(2πx2)),x=(x1,x2)TS.

Die Umkehrabbildung lautet

h1(y)=(exp(|y|22)12πarctan(y2y1)),y=(y1,y2)T,|y|2=y12+y22.

Für die Determinante ergibt sich mit y=h(x):

det(dh1dy)=det(y1x1y2x112πy2/y121+y22/y1212π1/y11+y22/y12)=x12π=12πexp(|y|22).

Dies ist die Dichtefunktion der Standardnormalverteilung in 2 (von zwei unabhängigen Zufallsvariablen). Also ist h(X) standardnormalverteilt, falls X auf [0,1] gleichverteilt ist.

Daraus folgt der Algorithmus von Box-Muller: Generiere U1,U2𝒰[0,1] und setze θ=2πU2 und ρ=2lnU1. Dann sind

Z1=ρcosθ und Z2=ρsinθ

standardnormalverteilt. Das Histogramm zeigt, dass dieser Algorithmus tatsächlich normalverteilte Zufallszahlen Z1 liefert. Hierfür wurden 50 000 Zufallszahlen nach dem folgenden Matlab-Programm erzeugt.

% N(0,1)-Zufallszahlen nach Box-Muller
N = 50000; rand(’state’,2)
Z = sqrt(−2*log(rand(1,N))).*cos(2*pi*rand(1,N));
x=[−3.8:0.2:3.8];
hist(Z,x)

Es muss natürlich sichergestellt werden, dass die gleichverteilten Zufallszahlen keine Struktur haben, da diese auf die transformierten normalverteilten Zufallsvariablen bertragen werden. Eine Linienstruktur in [0,1]2 würde auf Kurven in der (Z1,Z2)-Ebene abgebildet werden.

Beim Box-Muller-Algorithmus sind drei Funktionsaufrufe (sqrt, log und cos bzw. sin) erforderlich, um zwei normalverteilte Zufallszahlen zu erhalten. Dies kann beim sogenannten Marsaglia-Algorithmus durch Verwendung der Polartransformation verbessert werden.

Für weitere Hinweise auf Techniken zur Erzeugung von Zufallszahlen verweisen wir auf verschiedene Monographien.

Korreliert normalverteilte Zufallszahlen:
Bei der Simulation einer mehrdimensionalen Brownschen Bewegung benötigen wir i. a. Zufallsvektoren, die einer korrelierten mehrdimensionalen Verteilung folgen:

X=(X1,,Xn)𝒩(μ,Σ).

Definition 5.2

(1) Sei X=(X1,,Xn) ein Zufallsvektor, μn und Σ eine symmetrische, positiv definite (n×n)-Matrix. Dann heißt der Vektor X mit μ und Σ normalverteilt, also 𝒩(μ,Σ)-verteilt, wenn X</math> die Dichtefunktion
f(x)=1(2π)ndet(Σ)exp(12(xμ)TΣ1(xμ)),xn
besitzt.
(2) Sei X=(X1,,Xn) eine 𝒩(μ,Σ)-verteilte Zufallsvariable. Dann heißt die Matrix Σ=(Σij) die Kovarianz-Matrix und es gilt
Σij=E[(Xiμi)(Xjμj)],
wobei μ=(μ1,,μn)T=(E(X1),,E(Xn))T der Erwartungswert von X ist. Die Matrix P=(ρij), die aus den Elementen
ρij:=ΣijΣiiΣjj
besteht, heißt die Korrelation.

Der Begriff ”korreliert” bedeutet also, dass die Korrelation einer 𝒩(μ,Σ)-verteilten Zufallsvariablen keine Diagonalmatrix ist.

Wir betrachten nun einen Vektor Z=(Z1,,Zn) aus unabhängigen, standard-normalverteilten Zufallsvariablen Zk mit der Dichtefunktion f. Wir konstruieren mittels Z eine 𝒩(μ,Σ)-verteilte Zufallsvariable Y. Es sei μn und Σn×n symmetrisch und positiv definit (Σ=ΣT>0). Dann existiert eine Cholesky-Zerlegung

Σ=LLT.

Wir zeigen, dass Y=μ+LZ die Eigenschaft der 𝒩(μ,Σ)-Korrelation besitzt:
Sei x=Lz (für die Vektoren schreiben wir x,y,z,), dann folgt

f(z)dz=1(2π)n/2exp(zTz2)dz
=1(2π)n/2exp((L1x)T(L1x)2)dz (mit x=Lz)
=1(2π)n/2exp(xT(LLT)1x2)dz
=1(2π)n/2|detL|exp(xTΣ1x2)dx (weil dx=|detL|dz)
=1(2π)n/2(det(Σ)1/2exp(xTΣ1x2)dx

Damit ist X𝒩(0,Σ) und Y=μ+X𝒩(μ,Σ).

Der Algorithmus lässt sich wie folgt zusammenfassen:

  • Berechne die Cholesky-Zerlegung Σ=LLT.
  • Berechne unabhängige Xk𝒩(0,1),k=1,2,,n (z.B. mit dem Box-Muller-Verfahren). Setze Z=(X1,,Xn).
  • Die Zufallsvariable Y=μ+LZ ist 𝒩(μ,Σ)-verteilt.

Beispiel 5.4

Gesucht ist eine 2D-𝒩(0,Σ)-verteilte Zufallsvariable (X1,X2). Dabei sei

Σ=(σ12ρσ1σ2ρσ1σ2σ22).

Der Vektor X=(X1,X2) heißt durch ρ korreliert. Mit dem Ansatz

L=(a0bc)

liefert die Cholesky-Zerlegung \Sigma = LL^T</math>:

(σ12ρσ1σ2ρσ1σ2σ22)=(a0bc)(ab0c)=(a2ababb2+c2).

Durch Koeffizientenvergleich ergibt sich (man beachte, dass |ρ|1 gilt!)

L=(σ10ρσ2σ21ρ2)

Sind Z1,Z2 unabhängig und 𝒩(0,1)-verteilt, so ist

(X1X2)=L(Z1Z2)=(σ1Z1σ2(ρZ1+1ρ2Z2))

normalverteilt mit den Parametern μ=0 und Σ wie beschrieben.

Beispiel 5.5:

Gesucht ist eine dreidimensionale Verteilung (X1,X2,X3), die normalverteilt sein soll, den Erwartungswert μ=(5,0,10)T und die Kovarianzmatrix

Σ=(543454345)

besitzt. Das folgende Matlab-Programm realisiert den beschriebenen Algorithmus. Die Funktion randn wird zur Erzeugung standard-normalverteilter Zufallszahlen benutzt.

% Berechnung korrelierter normalverteilter Zufallszahlen
Sigma = [5 4 3; 4 5 4; 3 4 5];
mu = [−5 0 10]’; N = 10000;
L = chol(Sigma);
for i=1:N
  X(:,i) = mu + L*[randn randn randn]’;
end
x=[−14.5:0.5:14.5];
subplot(1,3,1), hist(X(1,:),x), axis([−20 20 0 1500])
subplot(1,3,2), hist(X(2,:),x), axis([−20 20 0 1500])
subplot(1,3,3), hist(X(3,:),x), axis([−20 20 0 1500])

Zahlenfolgen niedriger Diskrepanz: In einem einführenden Beispiel wurde erläutert, dass mehrdimensionale Integrale mit Hilfe der Monte-Carlo-Methode berechnet werden können. Grundidee ist dabei, zur Approximation von

Ωf(x)dx,Ωm,(vol(Ω)E(f(x)))

die Summe

vol(Ω)Nk=1Nf(xk),vol(Ω) Volumen/Maß von Ω (endlich)

mit geeigneten Zahlen x1,,xNΩ zu approximieren. Sind diese Zahlen (Pseudo-)Zufallszahlen, so sprechen wir von einer stochastischen Monte-Carlo-Integration, benutzt man dagegen geschickt vorgegebene Zahlen x1,,xN, so ist der Begriff "deterministische Monte-Carlo-Integration” üblich. Die Zahlen sollten möglichst gleichmäßig verteilt sein. Die Diskrepanz einer Menge {x1,,xN} definieren wir als Abweichung der Verteilung dieser Zahlen von einer angestrebten gleichmäßigen Verteilung. Damit lässt sich auch die Qualität von Pseudo-Zufallszahlen testen. Wir definieren im folgenden den Begriff der Diskrepanz und betrachten ein Beispiel.

Definition 5.3

Die Diskrepanz einer Menge {x1,,xN} mit xk[0,1]m ist definiert durch
Dn:=supQ[0,1]m|#{xk:xkQ}NvolQ|,Qm-dim. Quader.

Hinter der Definition der Diskrepanz steckt die Idee, dass bei einer gleichmäßig verteilten Punktmenge die relative Anzahl der Punkte, die in einem Quader Q[0,1]m liegen, dem Volumen des Quaders entsprechen sollte, d. h. man vergleicht die Ausdrücke

#xkQ# aller Punktevol(Q)vol([0,1]m).

Definition 5.4

(1) Eine Folge {x1,x2,} mit xk[0,1]m heißt gleichmäßig verteilt in [0,1]m, wenn gilt:
limNDN=0.
(2) Eine Folge {x1,x2,} mit xk[0,1]m heißt von niedriger Diskrepanz, wenn es eine Konstante Cm>0 gibt, so dass für alle genügend große N gilt:
DNCm(logN)mN.

Die Maßzahl der Diskrepanz ermöglicht die Angabe einer Schranke für den Fehler der Monte-Carlo-Integration. Zahlenfolgen von niedriger Diskrepanz werden auch Quasi-Zufallszahlen genannt. Das ist jedoch nicht sehr logisch, weil es sich um deterministische Folgen handelt. Wir untersuchen Beispiele und geben eine Tabelle für das Verhalten verschiedener Nullfolgen an:

N1NlogNN(logN)2N(logN)3N1010.31622776600.23025850930.53018981101.22080715541020.10000000000.04605170190.21207592440.97664572431090.00003162280.00000002070.00000042950.0000088997

Beispiel 5.6

(1) Die Menge {x1,,xN} mit xk=k/N liefert eine Folge von niedriger Diskrepanz, weil DN=1/N ist. Allerdings muss für jedes N eine neue Folge xk berechnet und im Falle der Monte-Carlo-Integration eine neue Funktionswertauswertung vorgenommen werden. Es ist praktisch viel effizienter, bereits berechnete Zahlen xk für wachsendes N zu verwenden. Daher ist eine so konstruierte Folge ungeeignet. Der Wert DN lässt sich allerdings für m=1 nicht weiter verbessern.

(2) Seien Uk{0,1M,2M,,M1M} Pseudo-Zufallszahlen, die durch Kongruenz-Generatoren erzeugt werden. Diese sind nicht gleichmäßig verteilt, denn mit Q=[12M+2,1M+1] folgt (wegen UkQ)

DN:=|#{Uk:UkQ}NvolQ|=volQ=12M+2 für M.

(3) Das Ziel, eine Punktfolge von niedriger Diskrepanz zu erzeugen, so dass mit wachsendem N die Verteilung zunehmend feiner wird, wird mit der Corput-Folge erreicht:

{12,14,34,18,58,38,78,116,}.

Das k-te Element dieser Folge erhält man einfach durch Bit-Umkehr der Dualdarstellung von k, d. h.

k=(djd0)2:=ν=0jdν2νxk=(.d0dj)2:=ν=0jdν2ν1.

Beispielsweise erhält man

k=6=(110)2xk=(.011)2=021+122+123=38.

Dieser Ansatz läßt sich auf eine Basis b2 verallgemeinern, indem definiert wird

k=ν=0jdνbνxk=ϕb(ν):=ν=0jdνbν1.

Man nennt ϕb die Radix-inverse Funktion. Das folgende Matlab-Programm erzeugt die ersten N Corput-Zahlen zur Basis b.

% Berechnung der ersten N Corput-Zahlen zur Basis b
function x = corput(N,b)
  m = fix(log(N)/log(b)); % hoechste Potenz bestimmen
  D = [ ];
  n = 1:N;
  for i = 0:m % bestimme alle x(i) simultan
    d = mod(n,b);
    n = (n−d)/b;
    D = [D;d];
  end
  x = ((1/b).^(1:(m+1)))*D;

Die Idee des Algorithmus basiert auf der Formulierung

k=(dνbν1++d1)b+d0,

d. h. die Ziffern dj werden durch Abdividieren von b ermittelt.

(4) Die Radix-inverse Funktion erlaubt auch die Konstruktion von Punkten in [0,1]m. Es seien p1,,pm paarweise teilerfremde natürliche Zahlen. Dann heißt die Menge der Vektoren

xk=(ϕp1(k),,ϕpm(k)),k,

Halton-Folge. Für p1=2 und p2=3 erzeugt man mit dem folg. Matlab-Programm.

% Berechnet zwei-dimensionale Halton-Folge
p1 = 2; p2 = 3; N = 10000;
x = [corput(N,p1); corput(N,p2)];
plot(x(1,:),x(2,:),’.’)

Beispiel 5.7

Die Halton-Folge kann dazu benutzt werden, um den Preis einer Basket-Option auf eine große Zahl von Basiswerten (vgl. Bsp. 5.2) zu berechnen. Wir betrachten das Integral

θ=(0,1)me|x|2/2dx,x=(x1,,xm)T,

wobei m1; zum Vergleich steht der exakte Wert des Integrals zur Verfügung. Mit ϕ(x)12=12erf(x2) und ϕ(x)=2πxexp(ξ2/2)dξ folgt nämlich

θ=k=1m01exp(xk22)dxk, (Satz von Fubini, feste Grenzen)
=k=1m(1exp(xk22)dxk0exp(xk22)dxk)
=k=1m2π(ϕ(1)ϕ(0))=k=1m2π(ϕ(1)12)
=(π2erf(12))m.

Als Schätzer für das Integral θ verwenden wir

θN=1Nj=1Nexp(|x(j)|22)dx,

wobei x(1),,x(N) m-dimensionale Halton-Zahlen sind. Das folgende Matlab-Programm realisiert die Konstruktion.

Nm=10m=20m=50CPU-Zeit [s]10000.2136994.7695135e-025.4333431e-030.08100000.2107164.4806662e-028.9903270e-041.161000000.2103434.4285053e-024.6574057e-0415.022000000.2103234.4257742e-024.4108892e-0430.335000000.2103064.4241263e-024.2502363e-0479.80exakt0.210296274.42245209e-024.11299177e-04
% Approximation des Integrals von exp(-|x|^2/2)dx ueber (0,1)^m
% mit Hilfe von Halton-Zahlen
m = 50; % Dimension des Integrals
n = 10000; % Anzahl der Punkte
p = primes(10*n); % die ersten 10*n Primzahlen
% Konstruktion der m-dimensionalen Haltonzahlen
x = [ ];
for i=1:m
  x = [x;corput(n,p(i))];
end
% Berechnung der Approximation
q = zeros(n,1)’;
for i=1:m
  q = q + x(i,:).*x(i,:);
end
int = mean(exp(−q/2))

In der obigen Tabelle sind die berechneten Werte im Vergleich mit den exakten Werten angegeben. Für größere Dimensionen müssen recht viele Halton-Punkte benutzt werden, um eine vertretbare Genauigkeit zu erhalten. Allerdings ist die Anzahl dieser Punkte wesentlich geringer als bei einer Auswertung mit Quadraturformeln.

5.3 Numerische Integration stochastischer Differentialgleichungen

Wir leiten einige Approximationen für stochastische Differentialgleichungen her und untersuchen, in welchem Sinne diese Approximationen gegen die ”exakte” Lösung der Differentialgleichung konvergieren.

Starke und schwache Konvergenz:
Für eine gewöhnliche Differentialgleichung

dx(t)dt=a(x(t),t) bzw. dx=a(x(t),t)dt,t>0,

mit Lipschitz-stetiger Funktion xa(x,t) kann man zeigen, dass das Euler-Verfahren mit der Schrittweite h>0

yk+1=yk+ha(yk,tk),k=0,1,,

wobei tk=kh gilt, die Konvergenzordnung 1 hat, d. h.

supk=0,,n|x(tk)yk|Ch.

Hierbei ist C>0 eine von h unabhängige Konstante. Gilt diese Aussage auch für das Euler-Maruyama-Verfahren (5.4) für stochastische Differentialgleichungen?

Wir betrachten zunächst für 0<t<T die skalare stochastische Differentialgleichung (Abkürzung: SDE)

(5.5) dxt=a(xt,t)dt+b(xt,t)dWt

für einen gegebenen Wiener-Prozess Wt. Das Euler-Maruyama-Verfahren für diese SDE lautet (mit der Schrittweite h=tk+1tk,T=nh und Startwert y0=x0):

(5.6) Für k=0,,n1:
tk+1=tk+h,
ΔWk=Wtk+1Wtk,
yk+1=yk+a(yk,tk)h+b(yk,tk)ΔWk,

wobei die Realisierungen des Wiener-Prozesses Wt dieselben sind, wie diejenigen für die SDE (5.5). Das erlaubt es, die Trajektorien xtk mit yk paarweise zu vergleichen und einen punktweisen Fehler |xtkyk| oder |xTxTh| einzuführen, wobei xTh:=yn ist. Uns interessiert ein ”gemittelter” Fehler:

Definition 5.5

Der absolute Fehler der Differenz xTxTh ist definiert durch
(5.7) ε(h)=E(|xTxTh|).

Analog zum Fall gewöhnlicher Differentialgleichungen definieren wir die Konvergenz wie folgt:

Definition 5.6

Sei xt eine Lösung einer SDE und xth eine Approximation von xt. Wir sagen, xTh konvergiert stark mit der Ordnung γ>0 gegen xT, falls eine Konstante C>0 existiert, so dass für alle (genügend kleinen) h>0 gilt:
(5.8) ε(h)Chγ.
Die Folge {xTh} heißt stark konvergent gegen xT, wenn
limh0ε(h)=0.

Zur Berechnung des Erwartungswertes (5.7) bestimmen wir für die Stichprobe X=(X1,,Xn) den Wert, den der Schätzer (d. h. eine Approximation) für den Erwartungswert E(X) liefert:

θn=1nk=1nXk.

Der Schätzer ist erwartungstreu, d. h.

E(θn)=1nk=1nE(Xk)=1nk=1nE(X)=E(X)

und die Varianz konvergiert gegen Null für n:

Var(θn)=1n2k=1nVar(Xk)=1nVar(X)0(n).

Wir untersuchen das Euler-Maruyama-Verfahren, angewandt auf die bekannte SDE

(5.9) dXt=μXtdt+σXtdWt,

empirisch auf starke Konvergenz. Nehmen wir an, die Ungleichung (5.8) gilt annähernd als Gleichung. Dann folgt

logε(h)logC+γlogh.

Wenn wir also ε(h) über h mit einer doppeltlogarithmischen Skala plotten, so können wir die Konvergenzordnung als Steigung der Geradengleichung

y(x)logC+γx mit y(x)=logε(h),x=log(h)

bestimmen. Hierzu erzeugen wir N Realisierungen Wt1,,WtN eines Wiener-Prozesses und lösen für jede dieser Realisierungen

  • die SDE (5.5) exakt, nämlich (vgl. Kap. 3.3)
xtk=x0exp((μ12σ2)t+σWtk),k=1,,N
und notieren xTk.
  • die Approximation (5.6) mit Schrittweiten h1,,hm numerisch und notieren xTk,h1,,xTk,hm.
% Test auf starke Konvergenz des Euler-Maruyama-Verfahrens
randn(’state’,3)
mu = 2; sigma = 1; X0 = 1; T = 1;
N = 1000; % Anzahl der Pfade der Brownschen Bewegung
m = 6;    % Anzahl der verschiedenen Schrittweiten
K = 2^9;  % Anzahl der Gitterpunkte, wenn T = 1
h = T/K;  % kleinste Schrittweite
for s=1:N
  dW = sqrt(h)*randn(1,K);
  W = sum(dW);
  Xexakt = X0*exp((mu−sigma^2/2)+sigma*W(end));
  for p=1:m
    R = 2^(p−1);
    dt = R*h; % aktuelle Schrittweite
    L = K/R;  % Anzahl der Euler-Schritte
    X = X0;
    for j=1:L
      Wink = sum(dW(R*(j−1)+1:R*j));
      X = X + mu*X*dt + sigma*X*Wink;
    end
  Xerr(s,p) = abs(X − Xexakt);
  end
end
% Plotten der Fehler und einer Geraden mit Steigung 1/2
dtlist = h*(2.^(0:m−1));
loglog(dtlist,mean(Xerr),’*-’), hold on
loglog(dtlist,(dtlist.^(0.5)),’--’), hold off
% Kleinste-Quadrate-Methode Ax = b mit x = (logC gamma)
A = [ones(m,1), log(dtlist)’];
b = log(mean(Xerr)’);
x = A\b;
gamma = x(2), residuum = norm(A*x−b)

Der absolute Fehler ε(h) wird durch den Schätzer

(5.10) ε^(hj)=1Nk=1N|xTkxTk,hj|

approximiert.

Das angegebene Matlab-Programm zum Euler-Maruyama-Verfahren realisiert diese Vorgehensweise zur Approximation von (5.9) für μ=2,σ=1 und T=1 und erzeugt eine Abbildung, die den Fehlerschätzer ε^(h) für verschiedene Schrittweiten h darstellt. Die eingezeichnete Vergleichsgerade legt γ=0.5 als Konververgenzordnung nahe. Tatsächlich ergibt eine lineare Ausgleichsrechnung γ=0.536 bei einem Residuum von 0.026.

In vielen Anwendungen ist man nicht an den Trajektorien xT selbst, sondern nur an Momenten von xT (etwa dem Erwartungswert oder der Varianz) interessiert. Demzufolge suchen wir nur Approximationen von E(xT) bzw. von Var(xT), nämlich E(xTh) bzw. Var(xTh). Das führt auf den folgenden abgeschwächten Konvergenzbegriff.

Definition 5.7

Sei xt eine Lösung einer SDE und xth eine Approximation von xt. Wir nennen xth schwach konvergent bezüglich g mit der Ordnung γ>0, wenn eine Konstante C>0 existiert, so dass für alle (genügend kleinen) h>0 gilt:
|E(g(xt))E(g(xth))|Chγ.
Im Falle g=id (id - identischer Operator) nennen wir xth schwach konvergent mit der Ordnung γ.

Da wir nicht an einer pfadweisen Konvergenz interessiert sind, können wir auch verschiedene Pfade für jeden Zeitschritt ykyk+1 im Algorithmus (5.6) verwenden.

Wir untersuchen die schwache Konvergenzordnung des Euler-Maruyama-Verfahrens. Es wird ein Test ähnlich dem obigen für die SDE (5.9) mit μ=2,σ=0.1 und T=1 in einem Matlab-Programm realisiert.

% Test auf schwache Konvergenz des Euler-Maruyama-Verfahrens
randn(’state’,100)
mu = 2; sigma = 0.1; X0 = 1; T = 1;
N = 50000; % Anzahl der Pfade der Brownschen Bewegung
m = 5;     % Anzahl der verschiendenen Schrittweiten
for p=1:m
  h = 2^(p−10); % aktuelle Schrittweite
  L = T/h;      % Anzahl der Euler-Schritte
  X = X0*ones(N,1);
  for j=1:L
    dW = sqrt(h)*randn(N,1);
    X = X + mu*X*h + sigma*X.*dW;
  end
  Xerr(p) = abs(mean(X) − exp(mu));
end
% Plotten der Fehler und einer Geraden mit Steigung 1
dtlist = 2.^([1:m]−10);
loglog(dtlist,Xerr,’*-’), hold on
loglog(dtlist,dtlist,’--’), hold off
% Kleinste-Quadrate-Methode Ax = b mit x = (logC gamma)
A = [ones(m,1), log(dtlist)’];
b = log(Xerr)’;
x = A\b;
gamma = x(2), residuum = norm(A*x−b)

Man beachte, dass der Erwartungswert der exakten Lösung xt von (5.9) gleich E(xt)=exp(μt) ist.

Diesmal vermuten wir eine Konvergenzordnung von 1. Eine lineare Ausgleichsrechnung ergibt γ=0.9858 bei einem Residuum von 0.0508.

Wir wollen nun Verfahren höherer Konvergenzordnung entwickeln. Dazu greifen wir auf eine spezielle Klasse von Integrationsverfahren zurück, die auch für gewöhnliche Differentialgleichungen verwendet werden, nämlich auf Taylorreihen-Verfahren.

Stochastische Taylorentwicklungen:
Zuerst betrachten wir das gewöhnliche (autonome) Anfangswertproblem

x(t)=a(x(t)),xn,t>t0,x(t0)=0.

Um Verfahren höherer Ordnung als das Euler-Verfahren

yk+1=yk+a(yk)h,k=0,1,2,,y0=x0

für die Approximation yk von x(tk) (mit tk=kh,h>0) herzuleiten, entwickeln wir die Lösung x(t) in eine Taylorreihe um t, wobei genügend hohe Regularität der Lösung vorausgesetzt wird:

x(t+h)=x(t)+hx(t)+h22x(t)+h36x(t)+O(h4).

Rekursives Einsetzen der rechten Seite der DGl. liefert die Entwicklung

x(t+h)=x(t)+ha(x(t))+h22(a(x(t)))+h36(a(x(t)))+O(h4)
=x(t)+ha(x(t))+h22a(x(t))a(x(t))+h36[a(x(t))(a(x(t)))2+(a(x(t)))2a(x(t))]+O(h4),

wobei a(x(t))2 das Argument des Tensors a(x(t)) ist, d. h.

a(x(t))(a(x(t)))2=a(x(t))(a(x(t)),a(x(t)))n.

Wählen wir t=tk und ykx(tk) und vernachlässigen wir den Restterm O(h4), so erhalten wir das Taylor-Einschrittverfahren:

Für k=0,,n1:
ak:=a(yk),a'k:=a(yk),a'k:=a(yk),
yk+1=yk+hak+h22a'kak2+h36[a'k(ak)2+(a'k)2ak]

Wir können diese Idee auf SDE übertragen, indem wir die Taylorentwicklung durch eine stochastische Version ersetzen. Diese liefert gerade das Lemma von Itô.

Wir betrachten zunächst zur Vereinfachung der Notation die skalare, eindimensionaleund autonome SDE

(5.11) dxt=a(xt)dt+b(xt)dWt.

Das Lemma von Itô für f(xt) lautet in Integralform für die nicht explizit von t abhängige Funktion f(xt)

(5.12) f(xt)=f(xt0)+t0t(f(xs)a(xs)+12f(xs)(b(xs))2)ds+t0tb(xs)f(xs)dWs.

Speziell für f(x)=x folgt

(5.13) xt=xt0+t0ta(xs)ds+t0tb(xs)dWs.

Wir setzen (5.12) für f=a und f=b in (5.13) ein:

(5.14) xt=xt0+t0t(a(xt0)+t0s(aa+12ab2)dz+t0sabdWz)ds
+t0t(b(xt0)+t0s(ba+12bb2)dz+t0sbbdWz)dWs

Dabei wurden die Abkürzungen a=a(xz),b=b(xz) usw. benutzt.

Fassen wir die Doppelintegrale zu einem Restterm R zusammen, so erhalten wir

xt=xt0+a(xt0)(tt0)+b(xt0)t0tdWs+R.

Vernachlässigen von R liefert eine (recht umständliche) Herleitung des Euler-Maruyama-Verfahrens. Wir erhalten ein Verfahren höherer Ordnung, indem wir das Doppelintegral bezüglich dWzdWs aus dem Restterm herausnehmen und den Integranden b(xz)b(xz) durch b(xt0)b(xt0) ersetzen:

xt=xt0+a(xt0)(tt0)+b(xt0)t0tdWs+b(xt0)b(xt0)t0tt0sdWzdWs+R~.

Die zugrunde liegende Idee ist, dass sich t0tf(xs)dWs durch O(h) abschätzen lässt (motiviert durch die Merkregel dWt=dt; siehe Abschnitt 4), also sind alle anderen Terme in R~ von höherer Ordnung als der zusätzliche Term mit dWzdWs. Für die Fehlerterme gilt damit: R=O(h) und R~=O(h3/2). Wir berechnen die Doppelintegrale (analog wie in Kap. 4):

(5.15) t0tt0sdWzdWs=t0t(WsWt0)dWs=12(Wt2Wt02)tt02Wt0(WtWt0)
=12((WtWt0)2(tt0)).

Das führt auf das Milstein-Verfahren für die nicht-autonome SDE (5.5):

Für k=0,,n1:
tk+1:=tk+h,
ΔW:=Zh mit Z𝒩(0,1),
yk+1:=yk+a(yk,tk)h+b(yk,tk)ΔW+12b(yk,tk)b(yk,tk)((ΔW)2h), wobei b=bx.

Um das Milstein-Verfahren für die SDE (5.9) mit μ=2,σ=1 und T=1 in Matlab zu implementieren, genügt es, den Term 12σ2X((ΔW)2h) zu der Euler-Maruyama-Approximation von X hinzuzufügen. Eine lineare Ausgleichsrechnung liefert γ=0.971 bei einem Residuum von 0.048. Tatsächlich beträgt die starke Konvergenzordnung des Milstein-Verfahrens 1 (also um 1/2 besser als das Euler-Maruyama-Verfahren). Für einen Konvergenzbeweis verweisen wir auf [10].

Stochastische Runge-Kutta-Verfahren:
Als Beispiel für ein derartiges Verfahren leiten wir einen Algorithmus vom Milstein-Typ her. Um die Ableitung b'(x_t) zu ersetzen, entwickeln wir formal:

b(xt+Δxt)b(xt)=b(xt)Δxt+𝒪(|Δxt|2)=b(xt)(a(xt)h+b(xt)ΔWt)+𝒪(h)=b(xt)b(xt)ΔWt+𝒪(h).

Ersetzen wir ΔWt durch den Mittelwert h (wieder wie in Kapitel 4), so folgt

b(xt)b(xt)=1h(b(xt+Δxt)b(xt))+𝒪(h)=1h(b(xt+a(xt)h+b(xt)ΔWt)b(xt))+𝒪(h).

Damit erhalten wir die stochastische Runge-Kutta-Variante des Milstein-Verfahrens:

(5.16) Für k=0,,n1:
tk+1:=tk+h,
ΔW:=Zh mit Z𝒩(0,1),
y^:=yk+a(yk,tk)h+b(yk,tk)h,
yk+1:=yk+a(yk,tk)h+b(yk,tk)ΔW+12h(b(y^,tk)b(yk,tk))((ΔW)2h).

Bemerkung:

Wie kann eine allgemeine Klasse von stochastischen Runge-Kutta-Verfahren aussehen? Ein Versuch wäre die Definition

yk+1=yk+hj=1sdja(y^j)+ΔWj=1sejb(y^j)

mit den Zuwächsen

y^j=yj+hν=1sDjνa(yν)+ΔWν=1sEjνb(yν),j=1,,s.

Leider gibt es hierfür eine Schranke für die Konvergenzordnung. Derartige Verfahren können höchstens eine (starke) Konvergenzordnung von 1 haben und sind folglich nicht besser als das Milstein-Verfahren oder die oben konstruierte Runge-Kutta-Methode. Umgehen kann man diese Schranke nur, wenn weitere Zufallsvariable benutzt werden, um die Integrale der stochastischen Taylor-Entwicklung zu approximieren. Dann ersetzt man die Ausdrücke ejΔW bzw. EjνΔW durch Zufallsvariable Zj bzw. Zjk. Details findet man in der Literatur [1].

Systeme von SDE:
Wir können das Milstein-Verfahren auf Systeme von SDE der Dimension n mit m Wiener-Prozessen Wt=(Wt1,,Wtm) verallgemeinern:

dxt=a(xt,t)dt+b(xt,t)dWt,

wobei gilt

a:n×n,b=(bjν):n×n×m.

Solche Fälle treten etwa bei der Modellierung von Optionen mit stochastischer Volatilität (Bsp. 5.1) oder bei der Modellierung von Basket-Optionen (Bsp. 5.2) auf. Ist (Wt1,,Wtn) eine n-dimensionale Bewegung, so lautet die Gleichung, die die Dynamik der Aktienkurse St1,,Stn beschreibt,

dStj=μtjStjdt+k=1nσtjkdWtk,j=1,,n.

Der Fall eines einzigen Wiener-Prozesses m=1 ist einfach. Der Term bb geht für b=(b1,,bn)T über in

Db(xt,t)b(xt,t)=(b1x1b1xnbnx1bnxn)(b1bn)

und das Milstein-Verfahren schreibt sich als

yk+1=yk+a(yk,tk)h+b(yk,tk)ΔW+12((ΔW)2h)Db(yk,tk)b(yk,tk).

Ähnlich lässt sich das obige stochastische Runge-Kutta-Verfahren umformulieren.

Der allgemeine Fall von m>1 Wiener-Prozessen ist komplizierter. Wiederholen wir die Herleitung des Milstein-Verfahrens für skalare SDE, so erhalten wir das Milstein-Verfahren für Systeme:

(5.17) yk+1s=yks+as(yk,tk)h+j=1mbsj(yk,tk)ΔWj+i,j=1ml=1nbljbsixl(yk,tk)tktk+1tkτdWzjdWτi,s=1,,n.

Wir sind hier mit zwei Problemen konfrontiert:

  • Die stochastischen Integrale
Iji:=tktk+1tkτdWzjdWτi
sind nicht mehr einfach auf elementare Integrale der Form
(5.18) ΔWν=tktk+1dWτν
zurückführbar. Die Frage ist, wie sie sich berechnen lassen.
  • Die Differentialoperatoren
Lj:=l=1nbljxl
müssen auf alle Spaltenvektoren bν=(bsν)s=1n angewendet werden. Dies ist sehr mühsam, wie kann es vermieden werden?

Eine Möglichkeit, das erste Problem zu lösen, ist, die Integrale Iji bis auf einen Fehler 𝒪(h) zu approximieren, denn damit bleibt die Konvergenzordnung 1 des Milstein-Verfahrens erhalten. Interessanterweise sind die Integrale Lösungen eines (einfachen) Systems von SDE. Approximieren wir die Lösungen, so erhalten wir auch Approximationen der Integrale Iji. Wir zeigen, wie das Integral I21 approximiert werden kann; der allgemeine Fall funktioniert analog. Die Behauptung ist, dass I21 die erste Komponente der Lösung des Systems

dxt=(xt2001)dWt,tkttk+1,xt=(00)

an der Stelle t=tk+1 ist. Dies beweisen wir in dem folgenden Lemma.

Lemma 5.1

Die Lösung xt von (5.19) lautet an der Stelle t=tk+1:
xtk+1=(I21ΔW2), wobei gilt ΔW2=Wtk+12Wtk2.

Beweis:

Aus der zweiten Gleichung dxt=dWt2 ergibt sich mit dem Anfangswert xtk2=0 durch Integration

xtk+12=xtk2+tktk+1dWs2=tktk+1dWs2=Wtk+12Wtk2.

Für die erste Komponente folgt

xtk+11=xtk1+tktk+1xs2dWs2=tktk+1xs2dWs2=tktk+1tksdWτ2dWs1.

q.e.d.

Wir zerlegen das Intervall [tk,tk+1] in N Teilintervalle der Länge δ=(tk+1tk)/N. Sei zν die Approximation von xtk+νδ. Dann ist z0=(0,0)T. Die Euler-Maruyama-Approximation von (5.19) lautet dann:

(5.20) Für k=0,,n1:
ΔWk:=Wtk+(ν+1)δWtk+νδ
zν+1:=zν+(zk2001)ΔWν.

Diese Methode liefert tatsächlich eine Approximation von I21 der Ordnung 1, wenn N=1/h und h=tk+1tk gilt, denn das Euler-Maruyama-Verfahren hat die Konvergenzordnung 1/2, und damit gilt wegen δ=h2:

E(|zN1I21|)Cδ1/2=Ch.

Wir kommen nun auf das zweite Problem zurück. Die Differentiation der Spaltenvektoren bν=(bssν)s kann vermieden werden, indem wir ein stochastisches Runge-Kutta-Verfahren – wie im skalaren Fall beschrieben – verwenden.

Lemma 5.2

Es gilt die Approximation:
(5.21) Ljbν(yk,tk)=l=1nblj(yk,tk)bνxl(yk,tk)=1h(bν(y^j,tk)bν(yk,tk))+𝒪(h),
wobei gilt
(5.22) y^j=yk+a(yk,tk)h+bj(yk,tk)h.

Beweis:

Für die rechte Seite von (5.21) liefert eine Taylorentwicklung:

1h(bν(y^j,tk)bν(yk,tk))=1h(Dbν(y^jyk)+𝒪(h))
=1h(Dbν(ah+bjh)+𝒪(h))=Dbνbj+𝒪(h),

wobei wir das Argument (yk,tk) weggelassen haben. Die s-te Komponente von (5.24) ist gleich

(Dbνbj)s=l=1nbsνxlblj=(Ljbν)s

und das ist gerade die linke Seite von (5.21).

q.e.d.

Wir erhalten zusammengefasst das stochastische Runge-Kutta-Verfahren erster Ordnung für Systeme:

yk+1:=yk+a(yk,tk)h+b(yk,tk)ΔW+1hj,ν=1m(bν(y^ν,tk)bν(yk,tk))Ijν.

Dies ist die Verallgemeinerung des stochastischen Runge-Kutta-Verfahrens (5.17) für den skalaren Fall. Die Zwischenwerte y^j sind in (5.22) definiert, ΔW ist durch (5.18) gegeben und die Integrale Ijν können mittels (5.21) approximiert werden.

Bemerkung:

In speziellen Fällen können die Integrale Ijν explizit berechnet werden:

1. Für j=ν erhalten wir wegen (5.16)

Ijj=12((ΔWkj)2h)

mit ΔWkj=Wtk+1jWtkj und h=tk+1tk.

2. Hängt b nicht von x ab (man spricht auch von additivem Rauschen), verschwindet die Ableitung b/xl und das Milstein- und das Runge-Kutta-Verfahren reduzieren sich zum Euler-Maruyama-Verfahren.

3. Falls b=diag(b1(x1,t),,bn(xn,t)) (sog. diagonales Rauschen), folgt

Ljbν={0,jνbjbjxj,j=ν

und es sind nur Auswertungen von Ijj erforderlch.

Weitere Diskretisierungen von SDE und Konvergenzbeweise sind in [10] zu finden; für Matlab-Routinen siehe [6], [7].

5.4 Varianzreduktion

In Abschnitt 5.1 haben wir gesehen, dass sehr viele Monte-Carlo-Simulationen notwendig sind, um einen halbwegs akkuraten Preis einer Option zu erhalten. In Abbildung 5.12 schwankt der Preis einer europäischen Put-Option zwischen 16.7 und 17.3 (bei einem exakten Wert von 16.98), selbst bei mehr als 10 000 Simulationen. In diesem Abschnitt geben wir einen Grund für dieses langsame Konvergenzverhalten an und stellen zwei Methoden vor, mit denen die Genauigkeit ohne großen Aufwand verbessert werden kann.

Sei θn die Monte-Carlo-Approximation eines exakten Wertes θ. Beispiele für θn und θ sind

  • die Lösung einer stochastischen Differentialgleichung (SDE):
θ=xT Lösung einer SDE dx=a(x,t)dt+b(x,t)dW,
θN=yN Approximation von xT bei tN=T,
  • die stochastische Integration:
θ=Ωg(x)dx=Ωg(x)f(x)f(x)dx=E(ϕ(x)),
θn=1nk=1nϕ(Xk),
wobei ϕ(x)=g(x)/f(x) und Xk sind Stichproben einer nach F verteilten Zufallsvariablen mit F=f sind.

Der Fehler der Monte-Carlo-Methode |θnθ| ist selbst eine Zufallsvariable und so können wir nur Fehlergrenzen für gewisse Sicherheitswahrscheinlichkeiten angeben. Wir illustrieren dies für den Fall, dass θn eine stochastische Approximation eines Integrals mit dem Wert θ darstellt (siehe oben). Wir nehmen an, dass E(ϕ(Xk))=θ und Var(ϕ(Xk))=σ2 für alle k=1,,n gilt. Dann folgt

Var(θn)=1n2k=1nVar(ϕ(Xk))=σ2n,
E(θn)=1nk=1nE(ϕ(Xk))=θ.

Wir benutzen nun die Chebychev-Ungleichung für beliebige quadratisch integrierbare Zufallsvariable Y

P(|YE(Y)|δ)Var(Y)δ2,δ>0

für δ=σ/εn, um die elementare Fehlerabschätzung

P(|θnθ|σlεn)ε

oder äquivalent

P(|θnθ|<σlεn)ε

zu erhalten. Diese Ungleichung bedeutet, dass der Fehler |θnθ| umso kleiner wird, je größer die Stichprobenzahl n ist. Allerdings muss zur Reduktion des Fehlers (oder der Standardabweichung Var(θn)) um eine Dezimalstelle (also um den Faktor 10) die Stichprobenzahl um den Faktor 100 erhöht werden! Dies erklärt die langsame Konvergenz der Monte-Carlo-Simulationen. Eine andere Idee, den Fehler zu verkleinern, ist es, die Varianz Var(θn) möglichst klein zu halten. Diese Möglichkeit der Konvergenzverbesserung bezeichnet man als Technik der Varianzreduktion. Wir skizzieren zwei Techniken:

  • die Methode der Abtrennung des Hauptteils und
  • die Methode der antithetischen Variablen.

Die Methode der Abtrennung des Hauptteils versucht, durch geschicktes Hinzuaddieren eines zweiten Integranden die Gesamtvarianz des Schätzers zu verkleinern. Wir nehmen an, dass das Integral θ*=Ωψ(x)f(x)dx für eine Funktion ψ (Hauptteil genannt) analytisch berechenbar ist. Die Formulierung

θ=Ω(ϕ(x)ψ(x))f(x)dx+Ωψ(x)f(x)dx

motiviert dann den neuen Schätzer

θ^n=1nk=1n(ϕ(Xk)ψ(Xk))+Ωψ(x)f(x)dx=θnθn*+θ*, wobei θn*=1nk=1nψ(Xk).

Der Hauptteil ψ sollte möglichst ”einfach” sein, so dass das Integral θ* analytisch bestimmt werden kann, aber zugleich der Funktion ϕ möglichst ”ähnlich” sein, damit die Varianz von θ^n kleiner wird als die Varianz von θn. Warum sollte das funktionieren? Wenn ϕ und ψ sehr ”ähnlich” sind, erwarten wir, dass sowohl θ und θ* als auch die Approximationen θn und θn* ”ähnlich” sind. Dann sollte auch die Korrelation zwischen θn und θn* groß sein und nahe der oberen Schranke liegen, also:

(5.24) Cov(θn,θn*)12(Var(θn)+Var(θn*))>12Var(θn*).

Die obere Schranke lautet tatsächlich 12(Var(θn)+Var(θn*)), denn aus der Beziehung

(5.25) Var(X±Y)=Var(X)+Var(Y)±2Cov(X,Y)

für die zwei Zufallsvariablen X und Y folgt wegen Var(X±Y)0 die Ungleichung

(5.26) Cov(X,Y)12(Var(X)+Var(Y)).

Dann folgt für die neue Zufallsvariable:

Var(θ^n)=Var(θnθn*) (denn θ* ist konstant)
=Var(θn)+Var(θn*)2Cov(θn,θn*) (wegen (5.25))
<Var(θn) (wegen (5.24))

und die Varianz ist tatsächlich verringert worden.

Die zweite Methode führt eine sogenannte antithetische Variable ein. Sei θn mittels einer Zufallsvariablen Z𝒩(0,1) erzeugt worden. Definiert man dann eine Approximation θn, die genauso wie θn erzeugt wurde, aber mit Z𝒩(0,1) ist. Die antithetische Variable lautet

θ^n=12(θn+θn).

Wir behaupten, dass die Varianz von θ^n kleiner ist als die von θn (zumindest wenn Var(θn)Var(θn*). Aus (5.25) folgt

Varθ^n=14Var(θn+θn)=14(Var(θn)+Var(θn)+2Cov(θn,θn*))

und unter Berücksichtigung von (5.26) erhalten wir

Varθ^n<{14(Var(θn)+Var(θn)),wenn Cov(θn,θn)012(Var(θn)+Var(θn)),wenn Cov(θn,θn)>0

Im Falle Var(θn)Var(θn) erhalten wir also Var(θ^n)<Var(θn).

Wir illustrieren diese Methode mit einer Monte-Carlo-Simulation der europäischen Put-Option aus Beispiel 5.1. Die Variablen θn bzw. θn seien die Auszahlungsfunktionen zu den Aktienkursen Sk bzw. Sk, die durch

Sk+1=Sk(1+rh+Zh),
Sk+1=Sk(1+rh+Zh),k=1,,N1

mit Z𝒩(0,1) definiert sind. Die Auszahlungsfunktion ist dann gegeben durch 12((KSN)++(KSN)+). Dies ist in dem angegebenen Matlab-Programm realisiert.

% Monte-Carlo-Simulation fuer einen europaeischen Put
% mittels antithetischen Variablen
clear all, randn(’state’,10)
K = 100; r = 0.05; sigma = 0.2; T = 1;
N = 50; h = 1/N;
S(1) = 80; S1(1) = S(1);
for j=1:100 % 100
  M=j*100;
  for k=1:M
    for i=2:N
      dW = randn*sqrt(h);
      S(i) = S(i−1)*(1 + r*h + sigma*dW);
      S1(i) = S1(i−1)*(1 + r*h − sigma*dW);
    end
    payoff(j,k) = 0.5*(max(0,K−S(N))+max(0,K−S1(N)));
  end
  V(j) = exp(−r*T)*sum(payoff(j,:))/M;
  fprintf(’V = %f in Simulation Nr. %d\n’, V(j), j)
end
plot(V)
xlabel(’Anzahl der Simulationen ( \times 10^2)’,’FontSize’,12)
ylabel(’Optionspreis’,’FontSize’,12)

Die Abbildung stellt die Entwicklung des Optionspreises in Abhängigkeit der Anzahl der Monte-Carlo-Simulationen dar. Der exakte Wert für die gewählten Parameter beträgt 16.98. Bereits nach etwa 2000 Simulationen ist die Varianz sehr klein. Die Rechenzeit (XEON 2 GHz, Matlab) beträgt für 100 Durchläufe (genauer: 104 Simulationsschritte) ca. 3 Minuten.

5.5 Beispiel: Asiatischer Call im Heston-Modell

In den vorangegangenen Abschnitten haben wir die Techniken kennengelernt, mit denen wir die in Beispiel 5.1 vorgestellte asiatische Option im Heston-Modell bewerten können. Die Aufgabe lautet, den fairen Preis einer asiatischen Call-Option mit Auszahlungsfunktion

V0(ST)=(ST1T0TSτdτ)+

zu berechnen, wobei die Dynamik von St und σt durch das Heston-Modell

dS=rtSdt+σSdW1,
dσ2=κ(θσ2)dt+νσdW2

gegeben ist. Die risikofreie Zinsrate sei zeitabhängig und definiert durch

rt=1100(sin(2πt)+t+3),0tT.

Der Wiener-Prozess (W1,W2) sei 𝒩(0,Σ)-verteilt mit der Kovarianzmatrix

Σ=(1ρρ1).

Die Parameter seien

κ=2,θ=0.4,ν=0.2,T=1.

In Beispiel 5.4 haben wir eine Formel zur Berechnung einer zweidimensionalen 𝒩(μ,Σ)-verteilten Zufallsvariablen hergeleitet. Seien Z1,Z2 standardnormalverteilte Zufallsvariable. Dann ist

(W1W2)=(10ρ1ρ2)(Z1Z2)=(Z1ρZ1+1ρ2Z2)

𝒩(0,Σ)-verteilt. Wie in Abschnitt 5.1 erläutert, wird der Optionspreis approximativ über die Formel

V0=exp(0Trtdt)1Mk=1M(STk1Ni=1NStik)+

berechnet, wobei M die Anzahl der Monte-Carlo-Simulationen und N die Anzahl der Zeitschritte ist.

Die Berechnung erfolgt also in drei Schritten:

  • 1. Schritt: Berechne dW1 und dW2 aus
dWk1=Zk1h,dWk2=ρZk1h+1ρ2Zk2h.
  • 2. Schritt: Löse das SDE-System mit dem Euler-Maruyama-Verfahren:
(σ2)i+1k=(σ2)ik+κ(θ(σ2)ik)h+νσikdWk2,
Si+1k=Sik(1+r(ti)h+σikdWk1),i=1,...,N1.
  • 3. Schritt: Berechne die Approximation des Optionspreises:
Sk=1Ni=1NSik,V0=exp(0Trtdt)1Mk=1M(SNkSk)+.

Wir erhalten das weiter unten angegebene Matlab-Programm zur Preisbestimmung einer asiatischen Option im Heston-Modell.

Mit diesen Parametern erhalten wir die in der unteren Tabelle dargestellten Werte. Der ”faire” Preis der asiatischen Option beträgt also etwa 13.6.

Welchen Effekt hat die stochastische Volatilität? Der Preis einer asiatischen Option mit konstanter Volatilität σ=0.25 beträgt (bei 200 000 Simulationen) V=6.5. Warum ist diese Option deutlich preiswerter als diejenige mit stochastischer Volatilität? Wir sehen, dass die Volatilität überwiegend größer als der Startwert σ=0.25 ist. Dies begründet den höheren Preis. Berechnen wir den Preis einer asiatischen Option mit konstanter Volatilität σ=0.55, so erhalten wir bei 200 000 Simulationen V=13.3 – ein Wert, der nahe bei dem Wert der asiatischen Option im Heston-Modell liegt.
Wir sehen in unterer Tabelle, dass die Monte-Carlo-Methode recht langsam konvergiert und sehr viele Simulationen für halbwegs genaue Werte notwendig sind. Es ist also sinnvoll, ein Verfahren höherer Ordnung als das Euler-Maruyama-Verfahren zu wählen, etwa das Milstein-Verfahren (5.18) (vgl. Abschnitt 5.3):

yk+1s=yks+as(yk,tk)h+j=1mbsj(yk,tk)ΔWj+j,ν=1ml=1nbsνxl(yk,tk)tktk+1tkτdWzjdWτν,s=1,2,

wobei

yk=(σk2Sk),a(yk,tk)=(κ(θσk2)rtkSk),b(yk,tk)=(νσk00σkSk)
𝐒𝐢𝐦𝐮𝐥𝐚𝐭𝐢𝐨𝐧𝐞𝐧𝐎𝐩𝐭𝐢𝐨𝐧𝐬𝐩𝐫𝐞𝐢𝐬(Anzahl)(berechnet)100014.42500012.651000013.065000013.5110000013.4920000013.60

und bsνxl die partiellen Ableitungen nach x1=S bzw. x2=σ2 bezeichnet. Eine (etwas langwierige Rechnung) ergibt

Sk+1=Sk+rtkSkh+σkSkΔWk2+12σk2Sk((ΔWk2)2h)+ν2SkI12,
σk+12=σk2+κ(θσk2)hνσkΔWk1+ν24((ΔWk1)2h).

Wie in Abschnitt 5.3 erläutert, können die Integrale I21 und I12 mit dem Verfahren (5.21) approximiert werden.

Versuchen Sie, den Algorithmus zu implementieren.

% Bestimmung des Preises einer asiatischen Option
% im Heston-Modell
clear all, randn(’state’,2)
M = 1000; % Anzahl der Simulationen
N = 100; % Anzahl der Zeitschritte
T = 1; h = T/N;
S_0 = 100; sigma2_0 = 0.25*0.25; % Startwerte
kappa = 2; theta = 0.4; nu = 0.2; rho = 0.2;
% zeitabhaengige Zinsrate und Integral von 0 bis T
t=0:h:T;
r = 0.01*(sin(2*pi*t) + t) + 0.03;
intr = T*(T/200 + 0.03) − cos(2*pi*T)/(200*pi) + 1/(200*pi);
% zweidimensionaler Wiener-Prozess
dW1 = randn(M,N+1)*sqrt(h);
dW2 = rho*dW1 + sqrt(1−rho^2)*randn(M,N+1)*sqrt(h);
% Initialisierung von S und sigma^2
S = S_0*ones(M,N+1);
sigma2 = sigma2_0*ones(M,N+1);
% Loesung des SDE-Systems mit dem Euler-Maruyama-Verfahren
for i=1:N
  sigma2(:,i+1) = sigma2(:,i) + kappa*(theta−sigma2(:,i))*h . . . + nu*sqrt(sigma2(:,i)).*dW2(:,i);
  S(:,i+1) = S(:,i).*(1 + r(:,i)*h + sqrt(sigma2(:,i)).*dW1(:,i));
end
payoff = max(0,S(:,N+1)−mean(S,2));
V = exp(−intr)*mean(payoff)

Literatur

[1] Burrage, K., Burrage, P.M.: High strong order explicit Runge-Kutta methods for stochastic ordinary differential equations. Appl. Numer. Math. 22 (1996), 81-101.

[2] Cox, J., Ross, S., Rubinstein, M.: Option Pricing: A Simplified Approach. J. Financ. Econom. 7 (1979), 228 - 263.

[3] Fisz, M.: Wahrscheinlichkeitsrechnung und mathematische Statistik. Deutscher Verlag der Wissenschaften, Berlin

[4] Günther, M., Jüngel, A.: Finanzderivate mit MATLAB. Vieweg & Sohn, Wiesbaden 2003

[5] Hastings, C.: Approximations for Digital Computers. Princeton University Press, Princeton 1955

[6] Higham, D.: An algorithmic introduction to the numerical solution of stochastic differential equations. SIAM Review 43 (2001), 525-546.

[7] Higham, D.; Kloeden, P.: MAPLE and MATLAB for stochastic differential equations in finance. Preprint, 2002.

[8] Hull, J.C.: Options, Futures, and other Derivates. Prentice Hall 1997.

[9] Klimov, G.: Probability Theory, Mir 1988

[10] Kloeden, P.; Platen, E.: Numerical Solution of Stochastic Differential Equations. Springer, Berlin, 1995.

[11] Korn, R., Korn, E.: Optionsbewertung und Portfolio-Optimierung. Vieweg, Braunschweig 1999

[12] Kwok: Mathematical Models of Financial Derivatives. Springer, Singapur, 1998.

[13] Øksendal, B.: Stochastic Differential Equations. Springer, Berlin 1998

[14] Seydel, R.: Einführung in die numerische Berechnung von Finanzderivaten, Springer, Berlin-Heidelberg-New York 2000.

[15] Wilmott, P., Howison, S., Dewyenne, J.: The Mathematics of Financial Derivatives. Cambridge University Press, Cambridge 1996.

[16] Zhang, P.: Exotic Options, World Scientific, Singapure 1997.