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
[Bearbeiten]
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
[Bearbeiten]
Berechne den fairen Preis einer asiatischen Call-Option mit der Auszahlungsfunktion

wobei die Dynamik von
und
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.
Berechne den fairen Preis einer europäischen Option auf
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
-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
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:
(5.1)

mit Anfangswert
, konstantem risikofreien Zinssatz
, konstanter Volatilität
und einem Wiener-Prozess
(siehe Abschnitt 3.2). In Bemerkung 4.10 haben wir gezeigt, dass der Optionspreis
zur Zeit
gegeben ist durch den diskontierter Erwartungswert
(5.2)

Die Grundidee der Monte-Carlo-Simulation besteht nun darin, den Erwartungswert in (5.2) durch Simulation von
Pfaden
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
mit den Lösungen
.
- • Berechnung der Auszahlungsfunktion: Bestimme für alle
die Auszahlungsfunktion entsprechend zum Pfad
:

- • 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
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
-verteilt ist (siehe Satz 3.10 (3)). Wir benötigen nun Realisierungen des Wiener-Prozesses
. Wegen

genügt es, Realisierungen einer
-verteilten Zufallsgröße
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)

% 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
der Monte-Carlo-Simulationen. Der Black-Scholes-Optionspreis beträgt
. Der Monte-Carlo-Preis weicht von dem Black-Scholes-Preis stark ab, wenn die Anzahl
der Monte-Carlo-Simulationen zu klein gewählt wurde. Allerdings schwanken die Werte auch für große
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.
Für die Simulation des Wiener-Prozesses benötigen wir standard-normalverteilte Zufallszahlen
, 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
gleichverteilte (Pseudo-)Zufallszahlen
,
![{\displaystyle Y\sim {\mathcal {U}}[0,1],}](https://wikimedia.org/api/rest_v1/media/math/render/svg/9dece6e22043662e27cd8cf94b6c69e970db7fd8)
und transformieren sie dann auf normalverteilte Zufallszahlen:

Um die obigen Begriffe zu präzisieren, hier eine Definition:
- Eine Zufallsvariable
heißt gleichverteilt auf dem Intervall
(in Zeichen:
), wenn sie die Dichtefunktion
besitzt.
- Eine Folge von Zufallszahlen heißt nach
verteilte Zufallszahlen, wenn sie unabhängige Realisierungen einer nach einer Verteilungsfunktion
verteilten Zufallsvariablen sind.
Gleichverteilte Zufallszahlen:
Ein einfacher Algorithmus, um auf
gleichverteilte Zufallszahlen zu erzeugen, ist durch die lineare Kongruenz-Methode gegeben: Seien
.
- Für


Offenbar müssen wir
und (wenn
)
ausschließen. Außerdem sollte
sein, denn ansonsten wäre
zu leicht vorhersagbar. Die Folge
hat die folgenden Eigenschaften:
- Die Folge
ist periodisch mit einer Periode, die kleiner oder gleich
ist, denn: Wegen
muss es ein
geben, so dass
und daher
für alle
ist.
- Die Verteilung der Zufallsvektoren
ist leider korreliert (also nicht unabhängig voneinander); siehe das folgende Beispiel.
Wir betrachten den Fall
mit den Daten
und
. 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
können aber die Ergebnisse recht unbefriedigend sein. Es sind weit weniger als 2000 Punkte zu sehen, da die Folge
sich wiederholt.
Geeigneter sind sogenannte lagged Fibonacci-Generatoren (oder Fibonacci-Generatoren mit ”Verzögerung”) der Form
- Für


if
then 
;

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:
- Sei
eine gleichverteilte Zufallsvariable und
eine stetige, streng monotone Verteilungsfunktion. Dann ist die Zufallsvariable
nach
verteilt.
Die Umkehrfunktion
existiert gemäß Voraussetzungen. Die Annahme der Gleichverteilung impliziert für alle
:
. Somit folgt

Dies bedeutet, dass
nach
verteilt ist.
q.e.d.
Ist dieser Satz auf die Normalverteilung
anwendbar? Es liegen weder für
noch für
geschlossene Formelausdrücke vor. Die nichtlineare Gleichung
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
bewirken sehr große Änderungen in
). Als Ausweg kann man
ähnlich wie in Abschnitt 4.2 durch eine rationale Funktion
approximieren und
setzen. Bei der rationalen Approximation ist das asymptotische Verhalten von
(senkrechte Tangenten bei
und
) sowie die Punktsymmetrie zu
zu berücksichtigen.
Wir wählen allerdings die zweite Idee: Transformation der Zufallszahlen. Grundlage hierfür ist der folgende Satz.
- Sei
eine Zufallsvariable auf
mit der Dichtefunktion
auf der Menge
von
. Die Transformation
sei umkehrbar mit stetig invertierbarer Inversen
. Dann hat
die Dichtefunktion

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

q.e.d.
Im Falle
und
(Gleichverteilung in
) 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
, 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
und
an. Wähle die Transformation y = h(x)</math> mit

Die Umkehrabbildung lautet

Für die Determinante ergibt sich mit
:

Dies ist die Dichtefunktion der Standardnormalverteilung in
(von zwei unabhängigen Zufallsvariablen). Also ist
standardnormalverteilt, falls
auf
gleichverteilt ist.
Daraus folgt der Algorithmus von Box-Muller: Generiere
und setze
und
. Dann sind

und

standardnormalverteilt. Das Histogramm zeigt, dass dieser Algorithmus tatsächlich normalverteilte Zufallszahlen
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
würde auf Kurven in der
-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:

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

- besitzt.
- (2) Sei
eine
-verteilte Zufallsvariable. Dann heißt die Matrix
die Kovarianz-Matrix und es gilt
![{\displaystyle \Sigma _{ij}=E[(X_{i}-\mu _{i})(X_{j}-\mu _{j})],}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4941d78717f35e518f2dac08cc0b4757c33e42c4)
- wobei
der Erwartungswert von
ist. Die Matrix
, 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
mit der Dichtefunktion
. Wir konstruieren mittels
eine
-verteilte Zufallsvariable
. Es sei
und
symmetrisch und positiv definit
. Dann existiert eine Cholesky-Zerlegung

Wir zeigen, dass
die Eigenschaft der
-Korrelation besitzt:
Sei
(für die Vektoren schreiben wir
), dann folgt


(mit

)


(weil

)

Damit ist
und
.
Der Algorithmus lässt sich wie folgt zusammenfassen:
- Berechne die Cholesky-Zerlegung
.
- Berechne unabhängige
(z.B. mit dem Box-Muller-Verfahren). Setze
.
- Die Zufallsvariable
ist
-verteilt.
Gesucht ist eine 2D-
-verteilte Zufallsvariable
. Dabei sei

Der Vektor
heißt durch
korreliert. Mit dem Ansatz

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

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

Sind
unabhängig und
-verteilt, so ist

normalverteilt mit den Parametern
und
wie beschrieben.
Gesucht ist eine dreidimensionale Verteilung
, die normalverteilt sein soll, den Erwartungswert
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.
- 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
![{\displaystyle {\frac {\#x_{k}\in Q}{\#{\text{ aller Punkte}}}}\approx {\frac {\operatorname {vol} (Q)}{\operatorname {vol} ([0,1]^{m})}}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0e2a3e9dae4587d808ecb0c255d8bca7bb83ceed)
- (1) Eine Folge
mit
heißt gleichmäßig verteilt in
, wenn gilt:

- (2) Eine Folge
mit
heißt von niedriger Diskrepanz, wenn es eine Konstante
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:

(1) Die Menge
mit
liefert eine Folge von niedriger Diskrepanz, weil
ist. Allerdings muss für jedes
eine neue Folge
berechnet und im Falle der Monte-Carlo-Integration eine neue Funktionswertauswertung vorgenommen werden. Es ist praktisch viel effizienter, bereits berechnete Zahlen
für wachsendes
zu verwenden. Daher ist eine so konstruierte Folge ungeeignet. Der Wert
lässt sich allerdings für
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
die Verteilung zunehmend feiner wird, wird mit der Corput-Folge erreicht:

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

Beispielsweise erhält man

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

Man nennt
die Radix-inverse Funktion. Das folgende Matlab-Programm erzeugt die ersten
Corput-Zahlen zur Basis
.
% 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
werden durch Abdividieren von
ermittelt.
(4) Die Radix-inverse Funktion erlaubt auch die Konstruktion von Punkten in
. Es seien
paarweise teilerfremde natürliche Zahlen. Dann heißt die Menge der Vektoren

Halton-Folge. Für
und
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,:),’.’)
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
-dimensionale Halton-Zahlen sind. Das folgende Matlab-Programm realisiert die Konstruktion.
![{\displaystyle {\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}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c810df58e34c55f0a1fc6532e762cbe63d441e86)
% 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
[Bearbeiten]
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

wobei
gilt, die Konvergenzordnung 1 hat, d. h.

Hierbei ist
eine von
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
die skalare stochastische Differentialgleichung (Abkürzung: SDE)
(5.5)

für einen gegebenen Wiener-Prozess
. Das Euler-Maruyama-Verfahren für diese SDE lautet (mit der Schrittweite
und Startwert
):
- (5.6) Für
:



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

Analog zum Fall gewöhnlicher Differentialgleichungen definieren wir die Konvergenz wie folgt:
- Sei
eine Lösung einer SDE und
eine Approximation von
. Wir sagen,
konvergiert stark mit der Ordnung
gegen
, falls eine Konstante
existiert, so dass für alle (genügend kleinen)
gilt:
(5.8)

- Die Folge
heißt stark konvergent gegen
, 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
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
(5.9)

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

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

mit

bestimmen. Hierzu erzeugen wir
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
.
% 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
(5.10)

approximiert.
Das angegebene Matlab-Programm zum Euler-Maruyama-Verfahren realisiert diese Vorgehensweise zur Approximation von (5.9) für
und
und erzeugt eine Abbildung, die den Fehlerschätzer
für verschiedene Schrittweiten
darstellt. Die eingezeichnete Vergleichsgerade legt
als Konververgenzordnung nahe. Tatsächlich ergibt eine lineare Ausgleichsrechnung
bei einem Residuum von 0.026.
In vielen Anwendungen ist man nicht an den Trajektorien
selbst, sondern nur an Momenten von
(etwa dem Erwartungswert oder der Varianz) interessiert. Demzufolge suchen wir nur Approximationen von
bzw. von
, nämlich
bzw.
. Das führt auf den folgenden abgeschwächten Konvergenzbegriff.
- Sei
eine Lösung einer SDE und
eine Approximation von
. Wir nennen
schwach konvergent bezüglich
mit der Ordnung
, wenn eine Konstante
existiert, so dass für alle (genügend kleinen)
gilt:

- Im Falle
(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
und
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
von (5.9) gleich
ist.
Diesmal vermuten wir eine Konvergenzordnung von 1. Eine lineare Ausgleichsrechnung ergibt
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

Um Verfahren höherer Ordnung als das Euler-Verfahren

für die Approximation
von
(mit
) herzuleiten, entwickeln wir die Lösung
in eine Taylorreihe um
, wobei genügend hohe Regularität der Lösung vorausgesetzt wird:

Rekursives Einsetzen der rechten Seite der DGl. liefert die Entwicklung

![{\displaystyle =x(t)+ha(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}),}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6ff4d425d289de7aadf9cd734a4b1f7093df6400)
wobei
das Argument des Tensors
ist, d. h.

Wählen wir
und
und vernachlässigen wir den Restterm
, so erhalten wir das Taylor-Einschrittverfahren:
- Für
:

![{\displaystyle y_{k+1}=y_{k}+ha_{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 ]}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/1a3822744c3bcdb2dceec17fcdc9f00a53aaa6d4)
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)

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

Speziell für
folgt
(5.13)

Wir setzen (5.12) für
und
in (5.13) ein:
(5.14)


Dabei wurden die Abkürzungen
usw. benutzt.
Fassen wir die Doppelintegrale zu einem Restterm
zusammen, so erhalten wir

Vernachlässigen von
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:
und
.
Wir berechnen die Doppelintegrale (analog wie in Kap. 4):
(5.15)


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
und
in Matlab zu implementieren, genügt es, den Term
zu der Euler-Maruyama-Approximation von
hinzuzufügen. Eine lineare Ausgleichsrechnung liefert
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
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

,


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
bzw.
durch Zufallsvariable
bzw.
. Details findet man in der Literatur [1].
Systeme von SDE:
Wir können das Milstein-Verfahren auf Systeme von SDE der Dimension
mit
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
-dimensionale Bewegung, so lautet die Gleichung, die die Dynamik der Aktienkurse
beschreibt,

Der Fall eines einzigen Wiener-Prozesses
ist einfach. Der Term
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
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)

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

- sind nicht mehr einfach auf elementare Integrale der Form
(5.18)

- 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
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
. Wir zeigen, wie das Integral
approximiert werden kann; der allgemeine Fall funktioniert analog. Die Behauptung ist, dass
die erste Komponente der Lösung des Systems

an der Stelle
ist. Dies beweisen wir in dem folgenden Lemma.
- Die Lösung
von (5.19) lautet an der Stelle
:
, wobei gilt
.
Aus der zweiten Gleichung
ergibt sich mit dem Anfangswert
durch Integration

Für die erste Komponente folgt

q.e.d.
Wir zerlegen das Intervall
in
Teilintervalle der Länge
. Sei
die Approximation von
. Dann ist
. Die Euler-Maruyama-Approximation von (5.19) lautet dann:
- (5.20) Für
:


Diese Methode liefert tatsächlich eine Approximation von
der Ordnung 1, wenn
und
gilt, denn das Euler-Maruyama-Verfahren hat die Konvergenzordnung 1/2, und damit gilt wegen
:

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.
- Es gilt die Approximation:
(5.21)

- wobei gilt
(5.22)

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


wobei wir das Argument
weggelassen haben. Die
-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,
ist durch (5.18) gegeben und die Integrale
können mittels (5.21) approximiert werden.
In speziellen Fällen können die Integrale
explizit berechnet werden:
1. Für
erhalten wir wegen (5.16)

mit
und
.
2. Hängt
nicht von
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
erforderlch.
Weitere Diskretisierungen von SDE und Konvergenzbeweise sind in [10] zu finden; für Matlab-Routinen siehe [6], [7].
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
die Monte-Carlo-Approximation eines exakten Wertes
. Beispiele für
und
sind
- die Lösung einer stochastischen Differentialgleichung (SDE):

Lösung einer SDE

,

Approximation von

bei

,
- die stochastische Integration:


- wobei
und
sind Stichproben einer nach
verteilten Zufallsvariablen mit
sind.
Der Fehler der Monte-Carlo-Methode
ist selbst eine Zufallsvariable und so können wir nur Fehlergrenzen für gewisse Sicherheitswahrscheinlichkeiten angeben. Wir illustrieren dies für den Fall, dass
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

für
, um die elementare Fehlerabschätzung

oder äquivalent

zu erhalten. Diese Ungleichung bedeutet, dass der Fehler
umso kleiner wird, je größer die Stichprobenzahl
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
. Warum sollte das funktionieren? Wenn
und
sehr ”ähnlich” sind, erwarten wir, dass sowohl
und
als auch die Approximationen
und
”ähnlich” sind. Dann sollte auch die Korrelation zwischen
und
groß sein und nahe der oberen Schranke liegen, also:
(5.24)

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

für die zwei Zufallsvariablen
und
folgt wegen
die Ungleichung
(5.26)

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
mittels einer Zufallsvariablen
erzeugt worden. Definiert man dann eine Approximation
, die genauso wie
erzeugt wurde, aber mit
ist. Die antithetische Variable lautet

Wir behaupten, dass die Varianz von
kleiner ist als die 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
bzw.
seien die Auszahlungsfunktionen zu den Aktienkursen
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.
5.5 Beispiel: Asiatischer Call im Heston-Modell
[Bearbeiten]
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
und
durch das Heston-Modell


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

Der Wiener-Prozess
sei
-verteilt mit der Kovarianzmatrix

Die Parameter seien

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

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

berechnet, wobei
die Anzahl der Monte-Carlo-Simulationen und
die Anzahl der Zeitschritte ist.
Die Berechnung erfolgt also in drei Schritten:
- 1. Schritt: Berechne
und
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
beträgt (bei 200 000 Simulationen)
. Warum ist diese Option deutlich preiswerter als diejenige mit stochastischer Volatilität? Wir sehen, dass die Volatilität überwiegend größer als der Startwert
ist. Dies begründet den höheren Preis. Berechnen wir den Preis einer asiatischen Option mit konstanter Volatilität
, so erhalten wir bei 200 000 Simulationen
– 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
bzw.
bezeichnet. Eine (etwas langwierige Rechnung) ergibt


Wie in Abschnitt 5.3 erläutert, können die Integrale
und
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)
[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.