(* budeme potrebovat nahodne cisla z normalneho rozdelenia *) << Statistics`ContinuousDistributions` (* pre skratenie zapisu definujme : *) randn[] := Random[NormalDistribution[0, 1]]; (* SIMULACIA WIENEROVHO PROCESU *) dt = 0.001; (* casovy krok *) n = 1000; (* pocet krokov *) t = Table[i*dt, {i, 0, n}]; (* vektor casov *) w = {0}; (* Wienerov proces startuje z nuly *) For [i = 1, i <= n, i++, dw = Sqrt[dt]*randn[]; w = AppendTo[w, w[[i]] + dw]; ]; ListPlot[Table[{t[[i]], w[[i]]}, {i, 1, n + 1}], PlotJoined -> True, Frame -> True]
Ak je parameter nulový, grafom je priamka. Pre nenulovú hodnotu
sa k tomuto lineárnemu trendu pridávajú náhodné fluktuácie.
SetDirectory["/home/stehlikova/fd2012svf"]; s = ReadList["goog.txt"]; dt = 1/252; (* denne data, cas sa v modeli pocita v rokoch *)Priebeh ceny je nasledovný:
n = Length[s]; v = {}; For[i = 1, i <= n - 1, i++, v = AppendTo[v, Log[s[[i + 1]]/s[[i]]]]; ];
miDelta = Mean[v]; (* odhad mi*dt *) s2Delta = Variance[v]; (* odhad (sigma^2)*dt *)
mi = miDelta/dt (* odhad parametra mi *) sigma = Sqrt[s2Delta/dt] (* odhad parametra sigma *)