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.
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.
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 Putclear 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;
endplot(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 ,
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
ifthen;
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-Generatorrand(’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:
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
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 .
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
(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 bfunction 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.
% 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.
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:
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-Verfahrensrandn(’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 Schrittweitefor 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);
endend% 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-Verfahrensrandn(’state’,100)
mu = 2; sigma = 0.1; X0 = 1; T = 1;
N = 50000; % Anzahl der Pfade der Brownschen Bewegung
m = 5; % Anzahl der verschiendenen Schrittweitenfor 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:
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.
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.
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 Variablenclear 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)
endplot(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.
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-Modellclear 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-Verfahrenfor 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)