Kurs:Modellierung und Numerische Methoden von Finanzderivaten/5 Die Monte-Carlo-Methode
Aus Wikiversity
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.
Inhaltsverzeichnis |
[Bearbeiten] 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.
[Bearbeiten] Beispiel 5.1: Asiatischer Call im Heston-Modell
Berechne den fairen Preis einer asiatischen Call-Option mit der Auszahlungsfunktion

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

gegeben sei. Dieses Beispiel erfordert die Integration von stochastischen Differentialgleichungen und des stochastischen Integrals
. Die Integration kann mit Hilfe der Monte-Carlo-Methode durchgeführt werden. Wir erläutern dies im Detail in Abschnitt 5.5.
[Bearbeiten] Beispiel 5.2: Basket-Option
Berechne den fairen Preis einer europäischen Option auf n</math> Aktien (Basket-Option) mit der Auszahlungsfunktion
. Ist die Dynamik der Aktienkurse
wie in Abschnitt 4.5 durch

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

mit
und

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.
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:

mit Anfangswert S0, konstantem risikofreien Zinssatz
, 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

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
den Itô-Prozess (5.1) zum Anfangswert S0 mit den Lösungen (St)k. - • Berechnung der Auszahlungsfunktion: Bestimme für alle
die Auszahlungsfunktion entsprechend zum Pfad (St)k:
- • Berechnung eines Schätzers: Berechne einen Schätzer für den Erwartungswert in (5.2). Naheliegend ist etwa die Wahl

- wobei
. - • Bestimmung des Optionspreises: Berechne eine Approximation des fairen Optionspreises durch

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
wobei ΔWt = Wt + Δt − Wt
-verteilt ist (siehe Satz 3.10 (3)). Wir benötigen nun Realisierungen des Wiener-Prozesses ΔWt. Wegen

genügt es, Realisierungen einer
-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

% 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
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.
[Bearbeiten] 5.2 Pseudo-Zufallszahlen
Für die Simulation des Wiener-Prozesses benötigen wir standard-normalverteilte Zufallszahlen Z, um die Inkremente
zu berechnen. Wir benutzen dafür die Notation

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 \sim \mathcal U[0, 1],](http://upload.wikimedia.org/math/c/1/3/c13d08e8d340d85fb6b9f58254dbd5d8.png)
und transformieren sie dann auf normalverteilte Zufallszahlen:

Um die obigen Begriffe zu präzisieren, hier eine Definition:
[Bearbeiten] Definition 5.1
- Eine Zufallsvariable X heißt gleichverteilt auf dem Intervall [a,b] (in Zeichen:
), wenn sie die Dichtefunktion
besitzt. - 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
.
- Für


Offenbar müssen wir a = 0 und (wenn b = 0) X0 = 0 ausschließen. Außerdem sollte
sein, denn ansonsten wäre
zu leicht vorhersagbar. Die Folge Xk hat die folgenden Eigenschaften:
- Die Folge
ist periodisch mit einer Periode, die kleiner oder gleich M ist, denn: Wegen
muss es ein
geben, so dass Xp = X0 und daher Xk = Xk + p für alle
ist. - Die Verteilung der Zufallsvektoren
ist leider korreliert (also nicht unabhängig voneinander); siehe das folgende Beispiel.
[Bearbeiten] 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


mit
. 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


if Xk < 0 then Xk: = Xk + M;wobei die Anfangszahlen
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:
[Bearbeiten] Satz 5.1
- Sei
eine gleichverteilte Zufallsvariable und F eine stetige, streng monotone Verteilungsfunktion. Dann ist die Zufallsvariable F − 1(U) nach F verteilt.
[Bearbeiten] Beweis:
Die Umkehrfunktion F − 1 existiert gemäß Voraussetzungen. Die Annahme der Gleichverteilung impliziert für alle
:
. Somit folgt

Dies bedeutet, dass F − 1(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
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
setzen. Bei der rationalen Approximation ist das asymptotische Verhalten von φ − 1 (senkrechte Tangenten bei u = 0 und u = 1) sowie die Punktsymmetrie zu
zu berücksichtigen.
Wir wählen allerdings die zweite Idee: Transformation der Zufallszahlen. Grundlage hierfür ist der folgende Satz.
[Bearbeiten] Satz 5.2
- Sei X eine Zufallsvariable auf
mit der Dichtefunktion f > 0 auf der Menge
von f. Die Transformation
sei umkehrbar mit stetig invertierbarer Inversen h − 1. Dann hat Y: = h(X) die Dichtefunktion

[Bearbeiten] Beweis:
Wir geben nur eine grobe Beweisskizze. Nach dem Transformationssatz im
gilt (sei A der Wertebereich von h, d. h.
):

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:

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

Die Umkehrabbildung lautet

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

Dies ist die Dichtefunktion der Standardnormalverteilung in
(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
und setze θ = 2πU2 und
. Dann sind
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:

[Bearbeiten] Definition 5.2
- (1) Sei
ein Zufallsvektor,
und Σ eine symmetrische, positiv definite
-Matrix. Dann heißt der Vektor X mit μ und Σ normalverteilt, also
-verteilt, wenn X</math> die Dichtefunktion

- besitzt.
- (2) Sei
eine
-verteilte Zufallsvariable. Dann heißt die Matrix Σ = (Σij) die Kovarianz-Matrix und es gilt
- wobei
der Erwartungswert von X ist. Die Matrix P = (ρij), die aus den Elementen

- besteht, heißt die Korrelation.
Der Begriff ”korreliert” bedeutet also, dass die Korrelation einer
-verteilten Zufallsvariablen keine Diagonalmatrix ist.
Wir betrachten nun einen Vektor
aus unabhängigen, standard-normalverteilten Zufallsvariablen Zk mit der Dichtefunktion f. Wir konstruieren mittels Z eine
-verteilte Zufallsvariable Y. Es sei
und
symmetrisch und positiv definit (Σ = ΣT > 0). Dann existiert eine Cholesky-Zerlegung
Wir zeigen, dass Y = μ + LZ die Eigenschaft der
-Korrelation besitzt:
Sei x = Lz (für die Vektoren schreiben wir
), dann folgt

(mit x = Lz)
(weil
)
Damit ist
und
.
Der Algorithmus lässt sich wie folgt zusammenfassen:
- Berechne die Cholesky-Zerlegung Σ = LLT.
- Berechne unabhängige
(z.B. mit dem Box-Muller-Verfahren). Setze
. - Die Zufallsvariable Y = μ + LZ ist
-verteilt.
[Bearbeiten] Beispiel 5.4
Gesucht ist eine 2D-
-verteilte Zufallsvariable (X1,X2). Dabei sei

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

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

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

Sind Z1,Z2 unabhängig und
-verteilt, so ist

normalverteilt mit den Parametern μ = 0 und Σ wie beschrieben.
[Bearbeiten] Beispiel 5.5:
Gesucht ist eine dreidimensionale Verteilung (X1,X2,X3), die normalverteilt sein soll, den Erwartungswert μ = ( − 5,0,10)T und die Kovarianzmatrix

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

die Summe
Volumen/Maß von Ω (endlich)mit geeigneten Zahlen
zu approximieren. Sind diese Zahlen (Pseudo-)Zufallszahlen, so sprechen wir von einer stochastischen Monte-Carlo-Integration, benutzt man dagegen geschickt vorgegebene Zahlen
, so ist der Begriff "deterministische Monte-Carlo-Integration” üblich. Die Zahlen sollten möglichst gleichmäßig verteilt sein. Die Diskrepanz einer Menge
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.
[Bearbeiten] Definition 5.3
- Die Diskrepanz einer Menge
mit
ist definiert durch
-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
liegen, dem Volumen des Quaders entsprechen sollte, d. h. man vergleicht die Ausdrücke
![\frac{\# x_k \in Q}{\# \text{ aller Punkte}} \approx \frac{\operatorname{vol}(Q)}{\operatorname{vol}([0, 1]^m)}.](http://upload.wikimedia.org/math/0/9/e/09e77ec4ccaf6f3cdc395e6008bdd402.png)
[Bearbeiten] Definition 5.4
- (1) Eine Folge
mit
heißt gleichmäßig verteilt in [0,1]m, wenn gilt:

- (2) Eine Folge
mit
heißt von niedriger Diskrepanz, wenn es eine Konstante Cm > 0 gibt, so dass für alle genügend große
gilt:

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:

[Bearbeiten] Beispiel 5.6
(1) Die Menge
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
Pseudo-Zufallszahlen, die durch Kongruenz-Generatoren erzeugt werden. Diese sind nicht gleichmäßig verteilt, denn mit
folgt (wegen
)
für
.(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:

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

Beispielsweise erhält man

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

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

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
paarweise teilerfremde natürliche Zahlen. Dann heißt die Menge der Vektoren

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,:),’.’)
[Bearbeiten] 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

wobei
; zum Vergleich steht der exakte Wert des Integrals zur Verfügung. Mit
und
folgt nämlich
, (Satz von Fubini, feste Grenzen)


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

wobei
m-dimensionale Halton-Zahlen sind. Das folgende Matlab-Programm realisiert die Konstruktion.
![\begin{array}{|r|c|c|c||r|} \hline N & m = 10 & m = 20 & m = 50 & \text{CPU-Zeit }[s]\\ \hline 1000 & 0.213699 & 4.7695135\text{e-02} & 5.4333431\text{e-03} & 0.08\\ 10000 & 0.210716 & 4.4806662\text{e-02} & 8.9903270\text{e-04} & 1.16\\ 100000 & 0.210343 & 4.4285053\text{e-02} & 4.6574057\text{e-04} & 15.02\\ 200000 & 0.210323 & 4.4257742\text{e-02} & 4.4108892\text{e-04} & 30.33\\ 500000 & 0.210306 & 4.4241263\text{e-02} & 4.2502363\text{e-04} & 79.80\\ \hline \text{exakt} & 0.21029627 & 4.42245209\text{e-02} & 4.11299177\text{e-04} & \\ \hline \end{array}](http://upload.wikimedia.org/math/c/c/1/cc13128a3646017feb04755d7f283b55.png)
% 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.
[Bearbeiten] 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
bzw.
,mit Lipschitz-stetiger Funktion
kann man zeigen, dass das Euler-Verfahren mit der Schrittweite h > 0

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

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)

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

wobei die Realisierungen des Wiener-Prozesses Wt dieselben sind, wie diejenigen für die SDE (5.5). Das erlaubt es, die Trajektorien
mit yk paarweise zu vergleichen und einen punktweisen Fehler
oder
einzuführen, wobei
ist. Uns interessiert ein ”gemittelter” Fehler:
[Bearbeiten] Definition 5.5
- Der absolute Fehler der Differenz
ist definiert durch

Analog zum Fall gewöhnlicher Differentialgleichungen definieren wir die Konvergenz wie folgt:
[Bearbeiten] Definition 5.6
- Sei xt eine Lösung einer SDE und
eine Approximation von xt. Wir sagen,
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:

- Die Folge
heißt stark konvergent gegen xT, wenn

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

Der Schätzer ist erwartungstreu, d. h.

und die Varianz konvergiert gegen Null für
:

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

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

Wenn wir also
über h mit einer doppeltlogarithmischen Skala plotten, so können wir die Konvergenzordnung als Steigung der Geradengleichung
mit 
bestimmen. Hierzu erzeugen wir N Realisierungen
eines Wiener-Prozesses und lösen für jede dieser Realisierungen
-
- die SDE (5.5) exakt, nämlich (vgl. Kap. 3.3)

- und notieren
.
- die Approximation (5.6) mit Schrittweiten
numerisch und notieren
.
- die Approximation (5.6) mit Schrittweiten
% 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
wird durch den Schätzer

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
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
, nämlich
bzw.
. Das führt auf den folgenden abgeschwächten Konvergenzbegriff.
[Bearbeiten] Definition 5.7
- Sei xt eine Lösung einer SDE und
eine Approximation von xt. Wir nennen
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:

- Im Falle g = id (id - identischer Operator) nennen wir
schwach konvergent mit der Ordnung γ.
Da wir nicht an einer pfadweisen Konvergenz interessiert sind, können wir auch verschiedene Pfade für jeden Zeitschritt
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 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

Um Verfahren höherer Ordnung als das Euler-Verfahren

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:

Rekursives Einsetzen der rechten Seite der DGl. liefert die Entwicklung

![= x(t) + h a(x(t)) + \frac{h^2}{2} a'(x(t)) \cdot a(x(t)) + \frac{h^3}{6} \Bigl[ a''(x(t)) \Bigl( a(x(t)) \Bigr)^2 + \Bigl( a'(x(t)) \Bigr)^2 \cdot a(x(t)) \Bigr] + O(h^4),](http://upload.wikimedia.org/math/f/9/2/f926a6f29bac5896a68f9afad5db1d8c.png)
wobei a(x(t))2 das Argument des Tensors a''(x(t)) ist, d. h.

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

![y_{k + 1} = y_k + h a_k + \frac{h^2}{2} a'_k \cdot a_k^2 + \frac{h^3}{6} \Bigl[ a''_k \cdot (a_k)^2 + (a'_k)^2 \cdot a_k \Bigr]](http://upload.wikimedia.org/math/e/f/c/efc8e49ecc0bc500ff4f1f53af216e61.png)
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

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

Speziell für f(x) = x folgt

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


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

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
aus dem Restterm herausnehmen und den Integranden
durch
ersetzen:

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


Das führt auf das Milstein-Verfahren für die nicht-autonome SDE (5.5):
- Für
:
mit
,
, wobei
.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
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:

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

Damit erhalten wir die stochastische Runge-Kutta-Variante des Milstein-Verfahrens:
- (5.16) Für
:
mit
,

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

mit den Zuwächsen

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
verallgemeinern:

wobei gilt

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
eine n-dimensionale Bewegung, so lautet die Gleichung, die die Dynamik der Aktienkurse
beschreibt,

Der Fall eines einzigen Wiener-Prozesses m = 1 ist einfach. Der Term b'b geht für
über in

und das Milstein-Verfahren schreibt sich als

Ä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:

Wir sind hier mit zwei Problemen konfrontiert:
-
- Die stochastischen Integrale

- sind nicht mehr einfach auf elementare Integrale der Form

- zurückführbar. Die Frage ist, wie sie sich berechnen lassen.
- Die Differentialoperatoren

- müssen auf alle Spaltenvektoren
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
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

an der Stelle t = tk + 1 ist. Dies beweisen wir in dem folgenden Lemma.
[Bearbeiten] Lemma 5.1
- Die Lösung xt von (5.19) lautet an der Stelle t = tk + 1:
, wobei gilt
.[Bearbeiten] Beweis:
Aus der zweiten Gleichung
ergibt sich mit dem Anfangswert
durch Integration

Für die erste Komponente folgt

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


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

Wir kommen nun auf das zweite Problem zurück. Die Differentiation der Spaltenvektoren
kann vermieden werden, indem wir ein stochastisches Runge-Kutta-Verfahren – wie im skalaren Fall beschrieben – verwenden.
[Bearbeiten] Lemma 5.2
- Es gilt die Approximation:

- wobei gilt

[Bearbeiten] Beweis:
Für die rechte Seite von (5.21) liefert eine Taylorentwicklung:


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

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:

Dies ist die Verallgemeinerung des stochastischen Runge-Kutta-Verfahrens (5.17) für den skalaren Fall. Die Zwischenwerte
sind in (5.22) definiert, ΔW ist durch (5.18) gegeben und die Integrale Ijν können mittels (5.21) approximiert werden.
[Bearbeiten] Bemerkung:
In speziellen Fällen können die Integrale Ijν explizit berechnet werden:
1. Für j = ν erhalten wir wegen (5.16)

mit
und h = tk + 1 − tk.
2. Hängt b nicht von x ab (man spricht auch von additivem Rauschen), verschwindet die Ableitung
und das Milstein- und das Runge-Kutta-Verfahren reduzieren sich zum Euler-Maruyama-Verfahren.
3. Falls
(sog. diagonales Rauschen), folgt

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].
[Bearbeiten] 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):
,-
- die stochastische Integration:


- 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
und
für alle
gilt. Dann folgt


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

für
, um die elementare Fehlerabschätzung

oder äquivalent

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
) 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
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
für eine Funktion ψ (Hauptteil genannt) analytisch berechenbar ist. Die Formulierung

motiviert dann den neuen Schätzer
, wobei
.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
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
”ähnlich” sind. Dann sollte auch die Korrelation zwischen θn und
groß sein und nahe der oberen Schranke liegen, also:

Die obere Schranke lautet tatsächlich
, denn aus der Beziehung

für die zwei Zufallsvariablen X und Y folgt wegen
die Ungleichung

Dann folgt für die neue Zufallsvariable:
(denn θ * ist konstant)
(wegen (5.25))
(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
erzeugt worden. Definiert man dann eine Approximation
, die genauso wie θn erzeugt wurde, aber mit
ist. Die antithetische Variable lautet

Wir behaupten, dass die Varianz von
(zumindest wenn
. Aus (5.25) folgt

und unter Berücksichtigung von (5.26) erhalten wir

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


mit
definiert sind. Die Auszahlungsfunktion ist dann gegeben durch
. 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.
[Bearbeiten] 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

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


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

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

Die Parameter seien

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

-verteilt. Wie in Abschnitt 5.1 erläutert, wird der Optionspreis approximativ über die Formel

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

- 2. Schritt: Löse das SDE-System mit dem Euler-Maruyama-Verfahren:


- 3. Schritt: Berechne die Approximation des Optionspreises:

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):

wobei


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


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)
[Bearbeiten] 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.