MKZR:Modelowanie dynamiki instrumentów pochodnych

Z Skrypty dla studentów Ekonofizyki UPGOW

(Różnice między wersjami)
m (Rozwiązanie analityczne)
(Rozwiązanie analityczne)
Linia 68: Linia 68:
<math>P_x(x)= \frac{P_y(log(x))}{|x|}</math>
<math>P_x(x)= \frac{P_y(log(x))}{|x|}</math>
-
tak więc otrzymujemy formułę:
+
tak więc ostatecznie otrzymujemy formułę:
-
:<math>P_x(x,t|x_0,t_0)= \frac{1}{\sqrt{2\pi\sigma^2 t x^2}} e^{-\displaystyle\frac{(log(x/x_0)-(\mu-1/2\sigma^2)^2}{2\sigma^2t}}</math>
+
:<math>P_x(x,t|x_0,t_0)= \frac{1}{\sqrt{2\pi\sigma^2 t x^2}} e^{-\displaystyle\frac{(\log(x/x_0)-(\mu-1/2\sigma^2)^2}{2\sigma^2t}}</math>.
 +
Zmienna losowa w geometrycznym procesie Wienera po czasie <math>t</math> ma rozkład [http://pl.wikipedia.org/wiki/Rozkład_logarytmicznie_normalny logarytmicznie normalny].
 +
[[Plik:GeomBM_hist.png|thumb|360px|Rozkład P(x,t) dla geometrycznego procesu  Wienera w czterech następujących po sobie chwilach t =  0.7,3.5,6.2,9.1. Widać rozmywanie się piku zgodnie z odpowiednim rozkładem [http://pl.wikipedia.org/wiki/Rozkład_logarytmicznie_normalny logarytmicznie normalnym].]]
 +
Porównajmy ten wzrór z histogramami dużej licznby realizacji w kolejnych chwilach czasu. 
 +
W systemie GNU Octave/matlab funkcja rozkładu logarytmicznie normalnego jest dana jako '''normrnd'''. W poniższym programie startujemy z punktu <math>x(t=0)=1</math> dla którego <math>log(x)=0</math> czyli odpowiedni process Wienera z dryfen miałby warunke początkowy <math>y(t=0)=0</math>.
-
[[Plik:GeomBM_hist.png|thumb|360px|Rozkład P(x,t) dla geometrycznego procesu  Wienera w czterech następujących po sobie chwilach t =  0.7,3.5,6.2,9.1. Widać rozmywanie się piku zgodnie z odpowiednim rozkładem [http://pl.wikipedia.org/wiki/Rozkład_logarytmicznie_normalny logarytmicznie normalnym].]]
 
Linia 91: Linia 94:
sigma=.1;
sigma=.1;
mu=0.1;
mu=0.1;
-
 
for i=2:N
for i=2:N
   x(:,i)=x(:,i-1) + mu*x(:,i-1)*h + sigma*sqrt(h)*x(:,i-1).*normrnd (0,1,M,1);
   x(:,i)=x(:,i-1) + mu*x(:,i-1)*h + sigma*sqrt(h)*x(:,i-1).*normrnd (0,1,M,1);

Wersja z 15:15, 8 maj 2010

Spis treści

Geometryczny proces Wienera

Definicja

Geometryczny proces Wienera jest procesem losowym, który jest rozwiązaniem równania stochastycznego Ito:

\(dX(t) = \mu X(t) dt + \sigma X(t) d W(t)\,\).

Geometryczny proces Wienera, dwadzieścia trajektorii. Widoczny jest eksponencjalny wzrost zmiennej losowej z pewnymi fluktuacjami.

Część deterministyczna część tego równania jest liniowa, podobnie jak w przypadku Ornsteina-Uhlenbecka. Rozwiązanie dla przypadku \(\sigma=0\) wyraża się w postaci eksponencjalnej

\(x(t)\simeq e^{\mu t}\),

Symulacja numeryczna

Człon stochastyczny jest proporcjonalny o wartości procesu, czyli mamy do czynienia z tzw. "szumem multiplikatywnym". Ponieważ równanie jest w interpretacji Ito, moża je bezpośrednio rozwiązać numerycznie. Interpretacja Ito dla \(\sigma X(t) d W(t)\) oznacza, że w schemacie aproxymacyjnym bierzemy wartość procesu X(t) "przed skokiem". W takim przypadku możemy zastosować schemat numeryczny Eulera podobnie jak np. dla procesu Ornsteina-Uhlenbecka. Krok czasowy może być zapisany w postaci wektorowej jako:

  x(:,i)=x(:,i-1) + mu*x(:,i-1)*h + sigma*sqrt(h)*x(:,i-1).*normrnd (0,1,M,1);

Jako warunek początkowy dla symulacji należy przyjąć wartość x>0. Łatwo zauważyć własność równania definiującego proces, że startując w \(x(0)=0\) rozwiązaniem jest funkcja stała \(x(t)=0\). Poniższy program generuje 20 trajektori geometrycznego procesu Wienera:

clear all
close all
N=400;
M=20;
T=14;
h=T/N;
clear x
x=zeros(M,N);
x(:,1)=1*ones(M,1); # log(1)=0
sigma=.1;
mu=0.1;
for i=2:N
  x(:,i)=x(:,i-1) + mu*x(:,i-1)*h + sigma*sqrt(h)*x(:,i-1).*normrnd (0,1,M,1);
endfor
plot((1:N)*h,x,'r-')


Rozwiązanie analityczne

Równanie definiujące geometryczny proces Wienera można przetransformować do równania na proces Wienera z dryfem. Transformacją jest:

\(Y=\log(X)\).

Łatwo to zauważyć dzieląc równanie przez \(x(t)\) i korzystając z faktu, że

\(d log(X)= dX/X\)

i korzystając z formuły Ito na dla funkcji log(x) otrzymujemy:

otrzymujemy:

\(d \log(X(t)) = (\mu-\frac{1}{2}\sigma^2) dt + \sigma d W(t)\,\).

Tak więc geometryczny proces Wienera jest równoważny procesowi Wienera z dryfem dla \(log(X(t))\). Gęstośc pradwopodobieństwo przejścia ze stanu \(x(t_0)\) do \(x(t)\) w czasie \(t-t_0\) dla procesu Wienera z dryfem \(Y(t)=log(X(t))\) wynosi:

\(P_y(y,t|y_0,t_0)= \frac{1}{\sqrt{2\pi\sigma^2 t}} e^{-\displaystyle\frac{(y-(\mu-1/2\sigma^2)^2}{2\sigma^2t}}\)

Korzystając ze reguł transformacji zmiennych losowych dla funkcji log, która jest różnowartościowa:

\(P_y(y)=\frac{P_x(x)}{|g'(x)|}\)

mamy:

\(P_x(x)= \frac{P_y(log(x))}{|x|}\)

tak więc ostatecznie otrzymujemy formułę:

\[P_x(x,t|x_0,t_0)= \frac{1}{\sqrt{2\pi\sigma^2 t x^2}} e^{-\displaystyle\frac{(\log(x/x_0)-(\mu-1/2\sigma^2)^2}{2\sigma^2t}}\].

Zmienna losowa w geometrycznym procesie Wienera po czasie \(t\) ma rozkład logarytmicznie normalny.

Rozkład P(x,t) dla geometrycznego procesu Wienera w czterech następujących po sobie chwilach t = 0.7,3.5,6.2,9.1. Widać rozmywanie się piku zgodnie z odpowiednim rozkładem logarytmicznie normalnym.

Porównajmy ten wzrór z histogramami dużej licznby realizacji w kolejnych chwilach czasu. W systemie GNU Octave/matlab funkcja rozkładu logarytmicznie normalnego jest dana jako normrnd. W poniższym programie startujemy z punktu \(x(t=0)=1\) dla którego \(log(x)=0\) czyli odpowiedni process Wienera z dryfen miałby warunke początkowy \(y(t=0)=0\).




clear all
close all
N=100;
M=20000;
T=14;
h=T/N;
clear x
x=zeros(M,N);
x(:,1)=1*ones(M,1); # log(1)=0
sigma=.1;
mu=0.1;
for i=2:N
  x(:,i)=x(:,i-1) + mu*x(:,i-1)*h + sigma*sqrt(h)*x(:,i-1).*normrnd (0,1,M,1);
endfor
 
hold on
for idx=1:4
  n=5+(idx-1)*20;
  t=n/N*T
  xmax=5;
  h1=.1;
  hist(x(:,n),[0:h1:xmax],1/h1)
  fplot(@(xx) lognpdf(xx,(mu-0.5*sigma^2)*t,sigma*sqrt(t)),[0.0,xmax],200,'ro-')
endfor
hold off


Procesy