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

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.

Beispiel 5.2: Basket-Option Bearbeiten

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.

5.2 Pseudo-Zufallszahlen Bearbeiten

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  ,

 

und transformieren sie dann auf normalverteilte Zufallszahlen:

 

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

Definition 5.1 Bearbeiten

  1. Eine Zufallsvariable   heißt gleichverteilt auf dem Intervall   (in Zeichen:  ), wenn sie die Dichtefunktion   besitzt.
  2. 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.

Beispiel 5.3 Bearbeiten

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:

Satz 5.1 Bearbeiten

Sei   eine gleichverteilte Zufallsvariable und   eine stetige, streng monotone Verteilungsfunktion. Dann ist die Zufallsvariable   nach   verteilt.

Beweis: Bearbeiten

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.

Satz 5.2 Bearbeiten

Sei   eine Zufallsvariable auf   mit der Dichtefunktion   auf der Menge   von  . Die Transformation   sei umkehrbar mit stetig invertierbarer Inversen  . Dann hat   die Dichtefunktion
 

Beweis: Bearbeiten

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:

 

Definition 5.2 Bearbeiten

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

Beispiel 5.4 Bearbeiten

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.

Beispiel 5.5: Bearbeiten

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.

Definition 5.3 Bearbeiten

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

 

Definition 5.4 Bearbeiten

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

 

Beispiel 5.6 Bearbeiten

(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,:),’.’)

Beispiel 5.7 Bearbeiten

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.

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

Definition 5.5 Bearbeiten

Der absolute Fehler der Differenz   ist definiert durch
(5.7)  

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

Definition 5.6 Bearbeiten

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.

Definition 5.7 Bearbeiten

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

 
 

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  :
 
 

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  ,
 
 

Bemerkung: Bearbeiten

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.

Lemma 5.1 Bearbeiten

Die Lösung   von (5.19) lautet an der Stelle  :
 , wobei gilt  .

Beweis: Bearbeiten

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.

Lemma 5.2 Bearbeiten

Es gilt die Approximation:
(5.21)  
wobei gilt
(5.22)  

Beweis: Bearbeiten

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.

Bemerkung: Bearbeiten

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

5.4 Varianzreduktion Bearbeiten

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)

Literatur Bearbeiten

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