%------------------------------- % SIMULACIA WIENEROVHO PROCESU %------------------------------- T=1; % do casu T dt=0.001; % casovy krok dt t=(0:dt:T); % vektor casov, v ktorych generujeme hodnoty procesu n=length(t); w(1)=0; % Wienerov proces zacina z nuly for i=1:n-1 % prvu hodnotu mame, potrebujeme zvysnych n-1 dw=sqrt(dt)*randn; % prirastok dw; randn ~ N(0,1) => dw ~ N(0,dt) w(i+1)=w(i)+dw; % nova hodnota = povodna + prirastok end; plot(t,w); % vykreslime priebeh
%------------------------------------------- % RYCHLEJSIA SIMULACIA WIENEROVHO PROCESU %------------------------------------------- T=1; % do casu T dt=0.001; % casovy krok dt t=(0:dt:T); % vektor casov, v ktorych generujeme hodnoty procesu n=length(t); dw=sqrt(dt)*randn(n-1,1); % vektor prirastkov - nezavisle N(0,dt) w=[0;cumsum(dw)]; % zaciname z nuly, dalej kumulativne sucty dw plot(t,w); % vykreslime priebeh
Ak je parameter nulový, grafom je priamka. Pre nenulovú hodnotu
sa k tomuto lineárnemu trendu pridávajú náhodné fluktuácie.
s=load('goog.txt'); dt=1/252; % denne data, cas sa v modeli pocita v rokochPriebeh ceny je nasledovný:
n=length(s); for i=1:n-1 v(i)=log(s(i+1)/s(i)); end; % alebo vektorovo namiesto cyklu: % v=log(s(2:n)./s(1:n-1));
miDelta=mean(v); % odhad mi*dt s2Delta=var(v); % odhad (sigma^2)*dt
mi=miDelta/dt; % odhad parametra mi sigma=sqrt(s2Delta/dt); % odhad parametra sigma
>> mi mi = 0.3225 >> sigma sigma = 0.2877