Z Skrypty dla studentów Ekonofizyki UPGOW
m (→Rozwiązanie analityczne: porównanie z symulacją) |
m (→Wycena opcji: modele z czasem ciągłym) |
||
Linia 125: | Linia 125: | ||
===Wycena opcji: modele z czasem ciągłym=== | ===Wycena opcji: modele z czasem ciągłym=== | ||
+ | |||
+ | ====Wzór Blacka-Scholesa dla europejskiej opcji kupna.=== | ||
+ | |||
+ | Model Blacka-Scholesa zakłada że, że cena akcji <math>S(t)</math> ewoluuje zgodnie z geometrycznym ruchem Browna przy ciągłej kapitalizacji z roczną stopą procentową r: | ||
+ | |||
+ | |||
<source lang='matlab'> | <source lang='matlab'> | ||
function [C,P] = BlackScholes(S0,K,r,T,sigma) | function [C,P] = BlackScholes(S0,K,r,T,sigma) |
Wersja z 07:43, 27 maj 2010
Spis treści |
Geometryczny proces Wienera
Geometryczny proces Wienera znajduje zastosowanie w ekonomii jako model ceny akcji (patrz: Przykłady zastosowań równań stochastycznych w ekonomii).
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)\,\).
Część deterministyczna część tego równania jest liniowa, podobnie jak w przypadku Ornsteina-Uhlenbecka. Wprzypadku \(\sigma=0\) rozwiązanie przedstawia exponencjalne rosnącą funkcję czasu:
\(x(t)\simeq e^{\mu t}\),
Można się spodziewać, że zabużenie równania szumem będzie odwzierciedlało tą cechę.
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żna je bezpośrednio rozwiązać numerycznie. Interpretacja Ito dla \(\displaystyle \sigma X(t) d W(t)\) oznacza, że w schemacie aproksymacyjnym 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 \(\displaystyle x(t)=0\). Z drugiej strony równanie jest symetryczne ze względu transformację \(x\to -x\) i ponadto jeśli x oznacza cenę to powinno mieć wartość dodatnią. Dlatego zawsze bierzemy x>0 jako warunek początkowy. 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: porównanie z symulacją
Równanie definiujące geometryczny proces Wienera można przetransformować do równania na proces Wienera z dryfem. Transformacją jest:
\(\displaystyle Y=\log(X)\).
Łatwo to zauważyć dzieląc równanie przez \(x(t)\) i korzystając z faktu, że
\(\displaystyle 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.
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 dryfem miałby warunek 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
Wycena opcji: modele z czasem dyskretnym
Binomial options pricing model
rozdział 7 P.B.
http://gillesdaniel.com/natlab/
Wycena opcji: modele z czasem ciągłym
=Wzór Blacka-Scholesa dla europejskiej opcji kupna.
Model Blacka-Scholesa zakłada że, że cena akcji \(S(t)\) ewoluuje zgodnie z geometrycznym ruchem Browna przy ciągłej kapitalizacji z roczną stopą procentową r:
function [C,P] = BlackScholes(S0,K,r,T,sigma) d1=(log(S0./K)+(r+sigma^2/2)*T)/(sigma*sqrt(T)); d2=d1-sigma*sqrt(T); C = S0.*normcdf(d1)-K*exp(-r*T)*normcdf(d2); P = K*exp(-r*T)*normcdf(-d2)-S0.*normcdf(-d1); end
clear all close all N=303; M=32313; T=13.1; h=T/N; x=zeros(M,1); S0=11; sigma=0.4; K = 50; r = 0.1; x=S0*ones(M,1); % integrate in one step y = x .* exp( (r-0.5*sigma^2)*T + sigma.*sqrt(T).*normrnd (0,1,M,1) ) ; % integrate in N steps mu=>r for i=2:N x =x + r*x*h + sigma*sqrt(h)*x.*normrnd (0,1,M,1); endfor %exp(-r*T)*mean( max(K-x,0) ) % Call option value Nsteps=exp(-r*T)*mean( max(x-K,0) ) onestep=exp(-r*T)*mean( max(y-K,0) ) exact=BlackScholes(S0,K,r,T,sigma)
% Black Scholes, własności S0 = 1:1:80; K = 55; r = 0.08; sigma = 0.1; T=5.01 plot(S0,BlackScholes(S0,K,r,T,sigma), S0, S0-K*exp(-r*T),'o' ); axis([0 80 -5 35]); grid on