Predavanje 24: Primene, Glava 6

FlipView[{Text[Style[" Branko Urošević, imqfbrankourosevic@gmail.com ",20,"Text",Italic]],Text[Style[" Faculty of Economics, University of Belgrade, NBS and CESIfo Munich",20,"Text", Italic]]}]

6. Stohastički procesi u WL

1. Uvodna razmatranja

U prethodnom poglavlju smo govorili o diferencijalnim jednačinama i videli kako se one mogu da koriste da se opiše dinamika sistema. Ono što tu nismo posebno podvlačili, a veoma je važno, jeste implicitna pretpostavka da na dinamiku ne utiču slučajni faktori.

Takođe, pošto smo se bavili diferencijalnim jednačinama, takođe smo implicitno podrazumevali da se parameter "vreme" menja neprekidno.

Naravno, mogli smo da pretpostavimo nešto drugo. Na primer, ukoliko govorimo o promeni GDP-a neke zemlje, pošto se GDP meri, recimo, kvartalno, prirodno je da dinamilku takvog sistema opišemo preko jednačina u kojima se vreme menja u diskretnim tačkama. U tom slučaju postoji neka prirodna najmanja jedinica merenja vremena, npr kvartal.

Klasifikacija slučajnih procesa

Slučajni ili stohastički proces je vremenska zavisnost neke slučajne promenljive. Slučajni procesi se mogu odvijati kako u diskretnom tako i u neprekidnom vremenu. Ali, postoji još jedna dimenzija koja određuje o kakvim se slučajnim procesima radi. Naime, oni se razlikuju i po tome da li u svakom posmatranom trenutku vremena slučajna promenljiva ima diskretan ili neprekidan skup mogućih realizacija, odnosno da li su slučajne promenljive u zadatom trenutku diskretne ili neprekidne. Stoga se svi slučajni procesi mogu se klasifikovati po matrici (navodim neke tipične primere):

Grid[{{" ",Style["Diskretno vreme",20,Bold],Style["Neprekidno vreme",20,Bold]},{Style["Diskretno stanje",20,Bold],"BinomialProcess","PoissonProcess"},{Style["Neprekidno stanje",20,Bold],"ARMAProcess","WienerProcess"}},Frame->All]

Za binomni proces vreme protiče diskretno a moguće realizacije slučajne promenljive su takođe diskretne. Kod Poisson procesa vreme protiče neprekidno, ali je broj mogućih realizacija u svakom trenutku i dalje diskretan.

Svi procesi klase ARMA (SARMA, SARIMA itd), odvijaju se u diskretnim trenucima vremena, a u svakom trenutku postoji kontinuum mogućih vrednosti realizacije slučajne promenljive.

Intuicija za slučajni proces

Zamislimo da se krećemo po nekoj putanji ali u svakom trenutku postoji više od jedne mogućnosti kuda ćemo nastaviti. To je slučajni proces. Različite realizacije dovode do realizacije različitih putanja. Stoga, danas nikada nećemo sa sigurnošću moći da znamo šta će se desiti sutra.

Tu se stvari kod slučajnih procesa dramatično razlikuju od diferencijalnih ili diferencnih jednačina jer kod njih nema slučajnosti pa se na osnovu početnih i graničnih uslova dinamika (rešenje) može odrediti jednoznačno. U tom slučaju mi već danas možemo, na početku filma, da znamo kako će se neki film završiti.

Primer ulaganja na tržištu novca

Grid[{{" ",Style["Diskretno vreme",20,Bold],Style["Neprekidno vreme",20,Bold]},{Style["Diskretno stanje",20,Bold],"   "," "},{Style["Neprekidno stanje",20,Bold]," "," "}},Frame->All,Background->{None,None,{{3,2}->LightGray}}]

Pođimo od jednog vrlo intuitivnog primera koji pripada klasi procesa iz donjeg levog ugla (to jest, diskretno vreme i neprekidne moguće realicije slučajne promenljive). Pretpostavimo da imamo, radi jednostavnosti, 1 evro i da želimo da ga uložimo na tržištu novca. Kamatna stopa se određuje na kraju svake godine.

Kod tržišta novca to je dobra pretpostavka, pošto se kod tog finansijskog intrumenta nikada tačno unapred ne zna kamatna stopa koju ćemo ostvariti (za razliku od tipičnog štednog uloga). Realizovana stopa, naime, zavisi od tržišnih uslova.

Ukoliko bi stopa bila poznata sa izvesnošću i bila jednaka 4 posto godišnje, ako se obračunava jednom godišnje imali bismo posle 3 godine iznos od:

bezrizika=(((1+0.04))^3)

Šta ako je kamata na kraju godine slučajna promenljiva?

Pretpostavimo, međutim, da je godišnja stopa slučajna promenljiva koja ima uniformnu raspodelu oko srednje vrednosti od 0.04.

r\[Distributed]UniformDistribution[{0.02,0.06}]

To što je kamatna stopa po kojoj štedimo slučajna dovodi do toga da je i ušteđeni iznos slučajan. Naravno, raspodela verovatnoće ušteđevine zavisiće od vremena. Evo odgovarajućih raspodela ušteđene sume posle prve, druge i treće godine:

𝒟1=TransformedDistribution[(1+r),r\[Distributed]UniformDistribution[{0.02,0.06}]]

𝒟2=TransformedDistribution[(((1+r))^2),r\[Distributed]UniformDistribution[{0.02,0.06}]]

𝒟3=TransformedDistribution[(((1+r))^3),r\[Distributed]UniformDistribution[{0.02,0.06}]]

Nastavak

Vidimo da je u prvom slučaju raspodela ušteđene sume uniformna. Kada štedimo veći broj godina, to više neće biti slučaj. Tada izvedena raspodela  nema neki prepoznatljiv oblik. Ono što je jasno, međutim, jeste da se raspodela verovatnoće ostvarene sume menja sa vremenom.

Nije teško nađi očekivani iznos i standardnu devijaciju iznosa novca na računu posle 3 godine:

(((1+0.04))^3)

{Mean[𝒟3],StandardDeviation[𝒟3]}

Funkcija gustine verovatnoće ima sledeći oblik:

Plot[PDF[𝒟3,x],{x,1,1.3},Filling->Automatic]

Nađimo verovatnoću da ćemo posle 3 godine imati manju ušteđevinu nego suma koju bismo ostvarili po garantovanoj stopi od četiri posto godišnje. Ima, kao i uvek, više načina da to uradimo. Jedan je:

Probability[ustedjevina<bezrizika,ustedjevina \[Distributed]𝒟3]

Nastavak primera sa ulaganjem na tržištu novca

Pogledajmo histograma mogućih realizacija ušteđevine posle 3 godine:

Histogram[RandomVariate[TransformedDistribution[(((1+r))^3),r\[Distributed]UniformDistribution[{0.03,0.05}]
],{100000}]]

iz čega možemo da odredimo najmanju i najveću realizovanu vrednost (vidimo da se ove vrednosti manje-više poklapaju sa vrednostima gde PDF postaje jednak nuli).

Max[RandomVariate[𝒟3,{100000}]]

Min[RandomVariate[𝒟3,{100000}]]

Primetimo da od toga koliko je neizvesna realizacija kamatne stope zavisi i neizvesnost ušteđene sume. Ukoliko smanjimo neizvesnost za kamatnu stopu, smanjićemo, razume se, i neizvesnost za ušteđenu sumu. Da vidimo koliko bi se efekat dobio ukoliko bi opseg bio od 3 do 5 posto godišnje, umeste od 2 do 6 posto.

𝒟3uza=TransformedDistribution[(((1+r))^3),r\[Distributed]UniformDistribution[{0.03,0.05}]];

Max[RandomVariate[𝒟3uza,{100000}]]

Min[RandomVariate[𝒟3uza,{100000}]]

što potvrđuje našu intuiciju.

A šta ukoliko postoji mogućnost da izgubimo novac?

Grid[{{" ",Style["Diskretno vreme",20,Bold],Style["Neprekidno vreme",20,Bold]},{Style["Diskretno stanje",20,Bold],"   "," "},{Style["Neprekidno stanje",20,Bold]," "," "}},Frame->All,Background->{None,None,{{3,3}->LightGray}}]

Napravićemo sada par promena u odnosu na početni model. Naime, pretpostavimo da se kamata obračunava kontinualno (a ne jedno godišnje kao u prethodnom primeru). Takođe, pretpostavimo da je godišnji prinos normalna slučajna promenljiva sa očekivanom vrednošću od 10 posto i standardnom devijacijom od 20 posto na godišnjem nivou tako da, za razliku od prethodnog primera, postoji ne samo rizik manjeg dobitka nego i rizik gubitka.

Ove pretpostavke se mogu opravdati ukoliko, recimo, razmatramo investicije u neki portfolio akcija. Primetimo da sada zapravo radimo sa modelom u kome su i vreme i slučajna promenljiva neprekidne veličine (odnosno da smo u donjem desnom uglu).

Ovako bi izgledala raspodela verovatnoće za akumulirani iznos od ulaganja jednog evra u neki portfolio akcija na tri godine:

𝒟3n=TransformedDistribution[Exp[3 r],r\[Distributed]NormalDistribution[0.1,0.20]]

Vidimo da je raspodela vrednosti investicije sada log-normalna. Gustina verovatnoće je:

Plot[PDF[𝒟3n,x],{x,0,8}]

Nastavak

Jedna od karakteristika lognormalne raspodele jeste da počevši od 1 evra možemo u principu da posle 3 godine imamo i mnogo više od 1 evra ali i da izgubimo sav novac (u tom slučaju stižemo na nulu, što predstavlja levi kraj raspodele). I očekivana vrednost ali i rizik investicije bio bi mnogo veći od investiranja na tržištu novca:

{Mean[𝒟3n],StandardDeviation[𝒟3n]}

Nađimo sada verovatnoću da ćemo posle 3 godine imati ušteđeno manje nego da smo bez rizika uložili u kamatu od 4 posto godišnje:

Probability[ustedjevina<bezrizika,ustedjevina \[Distributed]𝒟3n]

Primetimo da je ova verovatnoća manja od 50 posto.

Ovakav stohastički proces igra veoma važnu ulogu u finansijama i naziva se Geometrijsko Brown-ovo kretanje. Implementiran je u WL kao GeometricBrownianMotionProcess. O njemu ćemo pričati nešto kasnije govoriti podrobnije.

SliceDistribution: raspodela verovatnoće realizacije slučajnog procesa u datom trenutku vremena

Potrebno je sada da damo jedan opšti iskaz. Naime, kada radimo sa slučajnim procesom u WL, ukoliko želimo da nađemo raspodelu verovatnoće proces SlucajniProces u trenutku t, to se radi koristeći:

SliceDistribution[SlucajniProces, t]

ili, skraćeno

SlucajniProces[t]

SliceDistribution nam daje raspodelu verovatnoće u trenutku t.

2. Stohastički procesi kada su i vreme i slučajne promenljive diskretne

Uvod u Diskretni Markov proces: DiscreteMarkovProcess

Grid[{{" ",Style["Diskretno vreme",20,Bold],Style["Neprekidno vreme",20,Bold]},{Style["Diskretno stanje",20,Bold],"   "," "},{Style["Neprekidno stanje",20,Bold]," "," "}},Frame->All,Background->{None,None,{{2,2}->LightGray}}]

Diskretni Markov proces je slučajni proces u kome postoji konačan broj mogućih stanja koja su numerisana od 1 do n. Za  svako stanje definisane su verovatnoće prelaska iz stanja i u stanje j, gde su i, j od 1 do n. Tako se dobija takozvana tranziciona matrica (TransitionMatrix).

U njenom prvom redu su verovatnoće prelaska iz prvog stanja u prvo, drugo, ..., nto stanje. U drugom redu su verovatnoće prelaska iz drugog stanja u prvo, drugo, ..., do ntog stanja. Poslednji red sadrži verovatnoće prelaska iz nog stanja u prvo, drugo itd. Suma verovatnoća u svakom redu mora biti jednaka 1, pošto se  iz bilo kog stanja mora stiće negde u jednom koraku.

Prilikom definisanja DiscreteMarkovProcess moramo da zadamo najmanje dva argumenta. Prvi argument jeste početno stanje sistema (broj od 1 do n) a drugi argument je tranziciona matrica.

Diskretni Markov proces: Model vremenske prognoze

Razmotrimo veoma jednostavan metod za vremensku prognozu. Svakog dana (vremenski korak je jedan dan) postoje samo dva moguća stanja: pada kiša (stanje 1) ili ne pada (stanje 2).

Ukoliko danas pada kiša (stanje 1) na osnovu prethodnih merenja znamo da će sutra opet padati kiša sa verovatnoćom 0.7 (to je verovatnoća prelaska iz stanja 1 opet u stanje narednog dana 1), a neće padati sa verovatnoćom 1-0.7 = 0.3 (verovatnoća prelaska iz stanja 1 u 2). Ukoliko danas ne pada kiša (stanje 2), onda će sutra padati sa verovatnoćom 0.4 (verovatnoća prelaska iz stanja 2 u stanje 1), a neće padati sa verovatnoćom 1-0.4 =0.6 (verovatnoća prelaska iz stanja 2 u 2). Te četiri verovatnoće definišu tranzicionu matricu

tranzicionaMatrica={{0.7,0.3},{0.4,0.6}};

Želimo da saznamo: kakva je verovatnoća da će kiša padati kroz 4 dana ukoliko je danas padala kiša, kolika je verovatnoća da ćemo kroz 4 dana biti u stanju 1 ukoliko smo danas u stanju 1. To je tipičan problem koji se rešava preko diskretnog Markovskog procesa.

Ono što je ključno kod Markov-skog procesa, to je da je u pitanju proces bez pamćenja. Naime, da bismo odredili verovatnoću toga šta će se desiti kroz 4 dana, nije neophodno da znamo šta se desilo pre 10 dana nego samo ono što se desilo danas (a naime, da je pala kiša) kao i tranzicionu matricu. Ovako onda definišemo diskretni Markov proces u ovom najjednostavnijem slučaju:

Nastavak

Ovako definiše Markov proces (prvi argument je početno stanje a drugi je tranziciona matrica):

prognoza=DiscreteMarkovProcess[1,tranzicionaMatrica];

Ovaj proces se može predstaviti i kao graf. U našem slučaju:

Graph[prognoza,VertexLabels->{1->"pada",2->"ne pada"},VertexSize->Small,EdgeLabels->With[{sm=MarkovProcessProperties[prognoza,"TransitionMatrix"]},Flatten@Table[DirectedEdge[i,j]->sm[[i,j]],{i,2},{j,2}]],ImageSize->Large]

Ovde smo koristili sledeću identifikaciju za označavanje prelazaka iz jednog stanja u drugo:

Flatten@Table[DirectedEdge[i,j]->tranzicionaMatrica[[i,j]],{i,2},{j,2}]

Pronađimo sada verovatnoću da će kroz 4 dana padati kiša. Ovde prognoza[4] definiše SliceDistribution odnosno raspodelu verovatnoće da će padati kiša kroz 4 dana.

prognoza[4]

Verovatnoca da kroz 3 dana nece padati kisa ako danas ne pada kisa, koja je sansa da ce kroz tri dana padati

tranzicionaMatrica

tranzicionaMatrica.tranzicionaMatrica.tranzicionaMatrica

prognoza2 definise Markov proces za slucaj da danas nije padala kisa

prognoza2=DiscreteMarkovProcess[2,tranzicionaMatrica];

Probability[kisa==1,kisa\[Distributed]prognoza[3]]

Probability[kisa==2,kisa\[Distributed]prognoza[3]]

Probability[kisa==1,kisa\[Distributed]prognoza2[3]]

Probability[kisa==2,kisa\[Distributed]prognoza2[3]]

Probability[kisa==2,kisa\[Distributed]prognoza[3]]

Probability[kisa==1,kisa\[Distributed]prognoza[3]]

Dakle, ako danas pada kiša, postoji preko 50 posto verovatnoće da će padati i kroz 4 dana.

Uvod u binomni proces - BinomialProcess

Grid[{{" ",Style["Diskretno vreme",20,Bold],Style["Neprekidno vreme",20,Bold]},{Style["Diskretno stanje",20,Bold],"   "," "},{Style["Neprekidno stanje",20,Bold]," "," "}},Frame->All,Background->{None,None,{{2,2}->LightGray}}]

Razmotrimo sada još jedan veoma koristan proces iz gornjeg levog ugla matrice, naime binomni proces. Da bismo definisali BinomialProcess potrebno je da zadamo samo verovatnoću pozitivnog (a samim tim i negativnog) događaja.

BinomialProcess[p]

Nađimo sada SliceDistribution odnosno raspodelu verovatnoće u trenutku n za ovakav stohastički proces:

BinomialProcess[p][n]

To je isto što i:

SliceDistribution[BinomialProcess[p],n]

Očekivana vrednost i standardna devijacija broja pozitivnih realizacija zavisi od veličine uzora, n, i verovatnoće pozitivnog ishoda u jednom koraku, p. Evo šta dobijemo u opštem slučaju:

Mean[BinomialProcess[p][n]]

StandardDeviation[BinomialProcess[p][n]]

Naravno, to smo znali i od ranije, pošto je raspodela koja odgovara uzorku veličine n zapravo stara dobra binomna raspodela

Primena binomnog procesa: Provera kvaliteta proizvoda

Inspektor za obezbeđenje kvaliteta proizvodnje izdvaja na slučajan način 10 proizvedenih rezervnih delova. Verovatnoća škarta je poznata i jednaka 20 posto. Naći verovatnoću da je u nasumično izabranih 10 proizvedenih delova bilo ne više od 1 škarta.

Probability[skart≤1,skart\[Distributed]BinomialProcess[0.2][10]]

Ovo je primer BinomialProcess. Naime, sada je događaj škart a odsustvo događaja nije škart. Pošto znamo da je verovatnoća škarta 0.2, definišemo proces kao

procesUzorkovanja=BinomialProcess[0.2];

Nađimo sada verovatnoću da u uzorku veličine 10 neće biti više od jednog škarta. To bismo onda mogli predstaviti ovako:

CDF[procesUzorkovanja[10],1]

NProbability[x≤1,x\[Distributed]procesUzorkovanja[10]]

Simulirajmo sada ovaj proces za 50 koraka:

simulacija=RandomFunction[BinomialProcess[0.2],{0,49}]

simulacija["Values"]

ListPlot[simulacija,Filling->Axis]

Primena binomnog procesa: Gledanost televizijskog programa

Poznato je da, u srednjem, 50 posto stanovnika nekog mesta u Srbiji voli da gleda “Farmu”. Naći verovatnoću da će od 804 stanovnika koji su ispitani bar njih 55 posto voleti “Farmu”. Popularnost programa je opisana binomnim stohastičkim procesom sa verovatnoćom 0.5, to jest:

BinomialProcess[0.5]

Verovatnoća da će bar 55 posto od 804 ispitanika da kaže da vole taj program je data sa:

Module[{n=804,popularnostPrograma=BinomialProcess[0.5]},Probability[x/n≥0.5,x\[Distributed]popularnostPrograma[n]]]

Sa druge strane, kolika je verovatnoća da će bar polovina da kaže da voli taj program?

Module[{n=804,popularnostPrograma=BinomialProcess[0.5]},Probability[x/n≥0.5,x\[Distributed]popularnostPrograma[n]]]

Vidimo da relativno malo pomeranje u odnosu na to što tražimo može da pravi veliku razliku!

Stohastički procesi kada je vreme neprekidno a slučajne promenljive diskretne - Poisson-ov proces

Uvod u Poisson-ov proces

Grid[{{" ",Style["Diskretno vreme",20,Bold],Style["Neprekidno vreme",20,Bold]},{Style["Diskretno stanje",20,Bold],"   "," "},{Style["Neprekidno stanje",20,Bold]," "," "}},Frame->All,Background->{None,None,{{2,3}->LightGray}}]

Razmatramo samo jednog predstavnika, a naime PoissonProcess. Ovaj proces opisuje relativno retke događaje koji se mogu dogoditi u proizvoljnom neprekidnom trenutku vremena sa učestalošću μ.

Naime, zamislimo BinomialProcess[p] kod koga je verovatnoća p dovoljno mala a n dovoljno veliko tako da je μ=np konstantno. Tada iz BinomialProcess dobijamo PoissonProcess[μ].

Primetimo da je u svakom trenutku vremena raspodela PoissonProcess-a data pomoću PoissonDistribution:

SliceDistribution[PoissonProcess[μ],t]

ili, drugim rečima,

PoissonProcess[μ][t]

Funkcija raspodele i momenti Poisson-ovog procesa

Funkcija verovatnoće ove raspodele izgleda ovako:

PDF[PoissonDistribution[t μ],x]

Očekivana vrednost i varijansa ovog procesa u trenutku t je

Mean[PoissonProcess[μ][t]]

StandardDeviation[PoissonProcess[μ][t]]

Vidimo da je očekivana vrednost proporcionalna vremenu koje protiče, dok je standardna devijacija proporcionalna kvadratnom korenu vremena.

Primena Poisson-ovog procesa: Model dolaska kupaca u radnju

Dolazak kupaca u radnju može se opisati se pomoću Poisson-ovog procesa. Pretpostavimo da u srednjem dolazi 4 kupca na sat. Onda je μ=4. Ukoliko se radnja otvori u 9 ujutro, naći verovatnoću da će tačno jedan kupac doći do 9.30.

Probability[x==23,x \[Distributed]procesDolaska[4]]//N

Probability[x>=23,x \[Distributed]procesDolaska[4]]//N

Probability[x==1,x \[Distributed]procesDolaska[0.5]]

procesDolaska[0.5]

procesDolaska=PoissonProcess[4];

Verovatnoća da će doći tačno jedan kupac do 9.30 (posto je jedinica vremena sada 1 sat) je:

Probability[x==1,x\[Distributed]procesDolaska[1/2]]

N[%]

Naći verovatnoću da će do 1 popodne doći bar 20 kupaca. Pošto je 1 popodne 13 časova, protećiće 13-9 =4 sata od otvaranja. Stoga će odgovarajuća verovatnoća biti jednaka:

NProbability[x≥20,x\[Distributed]procesDolaska[4]]

Stohastički procesi sa diskretnim protokom vremena i neprekidnom raspodelom stanja

Uvodna razmatranja

Grid[{{" ",Style["Diskretno vreme",20,Bold],Style["Neprekidno vreme",20,Bold]},{Style["Diskretno stanje",20,Bold],"   "," "},{Style["Neprekidno stanje",20,Bold]," "," "}},Frame->All,Background->{None,None,{{3,2}->LightGray}}]

U ekonomiji postoji veliki broj procesa ovakvog tipa: svi procesi tipa SARIMA (odnosno, AR, MA, ARMA, SARMA, SARIMA itd) jesu procesi gde vreme protiče diskretno a moguće realizacije slučajnih promenljivih su neprekidne. U takve procese spadaju i svi procesi tipa  GARCH. Dakle, ovo je jedna veoma široka klasa procesa.

Pošto ćemo na narednom času da posvetimo vreme nekim od ovih procesa, ovde ih nećemo dalje razmatrati. Samo smo ih klasifikovali.

Slučajni procesi sa neprekidnim vremenom i neprekidnom raspodelom stanja

Uvodna razmatranja

U finansijama se često pretpostavlja da se finansijskim aktivama trguje toliko često da je vreme trgovanja de-fakto neprekidno. Naime, takozvani elektronski trgovci trguju u deliću sekunde, a trgovina nikada ne prestaje jer kada se tržište zatvori na jednom kontinentu otvara se na drugom.

Dakle, nije nerazumno pretpostaviti da vreme trgovanja protiče neprekidno. Takođe, mada u suštini postoje najmanji pomeraji cena (na primer 1/32 dolara u slučaju obveznica na američkom tržištu), manje-više može se razumno pretpostaviti da prinosi i cene finansijskih instruimenata u svakom trenutku imaju neku neprekidnu raspodelu verovatnoće.

U ovom delu predavanja predstavićemo modele koji se standardno koriste za modeliranje prinosa i cena finansijskih hartija od vrednosti u neprednom vremenu.

Osnovni gradivni materijal: standardni Wiener-ov proces

Pretpostavimo da u svakom beskonačno malom intervalu vremena (t, t+dt) imamo nezavisno izabranu normalnu slučajnu promenljivu koja ima očekivanu vrednost 0 i varijansu dt. To što dobijemo su nezavisni inkrementi stohastičkog procesa u intervalu  (t, t+dt) .

U svakom trenutku t izračunamo sumu tih nezavisnih normalnih inkremenata dobijenih od 0 do t. Kao rezultat dobijamo proces koji je neprekidan u vremenu. Pošto je suma normalnih slučajnih promenljivih normalna, slice distribution za ovaj proces je, za svako t, normalna slučajna promenljiva.  Ta beskonačna suma nezavisnih normalnih inkremenata je Wiener-ov proces. Formalnije, Wiener-ov proces je stohastički proces u neprekidnom vremenu z[t] takav da je:

1. z[0] = 0   to jest početna vrednost Wienerovog procesa je po definiciji jednaka 0
2. dz[t] =  z[t+dt] - z[t] su i.i.d normalno raspodeljeni inkrementi sa uslovnim očekivanjem 0 i varijansom dt

Iz ove definicije proizilazi da se vrednost Wiener-ovog procesa u trenutku t, z[t], može da se predstavi kao suma uzastopnih nezavisnih normalnih inkremenata. Pošto je dt->0, možemo da napišemo sumu inkremenata i kao integral:

z[t]=(∫_0^t)\[DifferentialD]z[t]

Ovaj integral naziva se Itov integral. To je integral u kome se integrira po slučajnom procesu z. Ono što je važno ovde jeste da je za svako konačno t, vrednost Wiener-ovog procesa integral (suma) nezavisnih inkremenata od 0 do trenutka t, te je stoga u pitanju normalna promenljiva.

Uvod u standardni Wiener-ov proces

U WL, ovakav slučajni proces definisan je pomoću WienerProcess[]:

z=WienerProcess[]

z[t]

Ovo je standardni Wienerov proces koji u jedinici vremena (mereno godinama) ima očekivani prinos 0 i varijansu 1. Raspodela verovatnoće u trenutku t data je kao SliceDistribution[z,t] ili kao:

SliceDistribution[z,t]

z[t]

Dakle, ukoliko odmotavamo proces t godina, moguće vrednosti procesa su u svakom trenutku normalne slučajne promenljive sa očekivanom vrednosću 0 i varijansom t.

Da očekivana vrednost mora biti uvek jednaka nuli sledi iz toga što su mali inkrementi iz čije se sume sastoji proces - normalne slučajne promenljive i svaka ima očekivanu vrednost jednaku 0. Sa druge strane, pošto su inkrementi nezavisni jedan od drugog (kakva će se promena realizovati u jednom malom intervalu vremena ne zavisi od realizacije promene u nekom drugom intervalu vremena) i pošto je varijansa u svakom intervalu jednaka dt, onda je ukupna varijansa prosto suma svih dt, a to je t.

Nije teško videti da je to zaista tako:

z[t]

{Mean[z[t]],StandardDeviation[z[t]]}

Primeri izračunavanja za standardni Wiener-ov proces

Znamo da je početna tačka standardnog Wienerovog procesa 0. Naći verovatnoću da će posle dve godine standardni Wienerov proces imati vrednost od najmanje 1. Ova verovatnoća je data izrazom:

z[2]

Probability[x≥1,x\[Distributed]z[2]]

N[%]

A kolika je verovatnoća da će ovaj proces imati posle 2 godine vrednost manju od 0.5?

Probability[x<0.5,x\[Distributed]z[2]]

Primetimo da se za standardan Wienerov proces ne očekuje da mu se vremenom menja vrednost (njegovo očekivanje u trenutku 0 je, kao što smo videli, jednako nula kolilko god dugo da gledamo u budućnost). Mada se vrednost stalno menja, ona osciluje oko 0.

data["Values",1][[50]]

Max[data["Values",1]]

Last[data["Values",1]]

data["Values",7]

data["Values",1]

data=RandomFunction[WienerProcess[],{0,1,0.01},30]

ListLinePlot[data, PlotRange-> All]

Dinamika prinosa na hartije od vrednosti u neprekidnom vremenu: Aritmetičko Brown-ovo kretanje

Dinamika prinosa na hartije od vrednosti se veoma pomno proučava. Upravo prinosi odredjuju da li ćemo zaraditi ili izgubiti novac prilikom investiranja.

Jedan od najjednostavnijih ali veoma često korišćenih modela za prinos investiranja u akcije jeste  aritmetičko Brown-ovo kretanje. Naime, umesto da modeliramo očekivani prinos kao fiksan i jednak nuli (kao u prethodnom odeljku), zamislimo da je na godisnjem nivou očekivani prinos na akciju jednak nekoj konstantnoj vrednosti μ.

r==μ t +σ z[t]

Kada ne bi bilo rizika, onda bi prinos za t godina bio prosto μ t. Naravno, rizik postoji. Jedna mogucnost da ga uzmemo u obzir jeste da definisemo prinos kao sumu drifta μ t (to je promena ocekivanog prinosa na investiciju sa vremenom) i slucajnog dela, σ z[t], gde je z standardni Wienerov proces.

Posto je suma deterministicke velicine μ t i normalne promenljive σ z[t] opet normalna promenljiva, ovakav model pretpostavlja da je prinos na hartije od vrednosti u svakom trenutku vremena normalna slučajna promenljiva.

Implementacija Aritmetičkog Brown-ovog kretanja u WL

U WL definisemo ga na sledeci nacin:

prinos=WienerProcess[μ,σ]

Proverimo da je prinos u svakom trenutku zaista normalna slučajna promenljiva. Naime, nađimo SliceDistribution procesa WienerProcess[μ,σ] u trenutku t

prinos[t]

Vidimo dve promene u odnosu na standardni Wiener-ov proces. Prva je da ocekivani prinos nije jednak nuli nego:

Mean[prinos[t]]

Drugim rečima, očekivani prinos je linearna funkcija vremena. Sa druge strane, rizik investicije je proporcionalan (Sqrt[t]). Naime:

StandardDeviation[prinos[t]]

Velicina σ je godisnja standardna devijacija ili volatilnost prinosa. Upravo volatilnost meri rizik investicije za zadati period vremena. Vidimo da se volatilnost cena akcije za interval različi od jedne godine dobija množenjem sa faktorom (Sqrt[t]) (izračenom u godinama).

Primeri izračunavanja vezani za aritmetičko Brown-ovo kretanje

Pretpostavimo da je prinos opisan pomoću slučajnog procesa tako da je očekivani prinos jednak 10 posto a standardna devijacija 20 posto godišnje. Naći verovatnoću da ćemo izgubiti 5 posto vrednosti investicije kroz godinu dana kao i da će se to isto desiti kroz kroz 2 godine.

prinos=WienerProcess[0.1,0.1];

prinos[1]

prinos[2]

Probability[x≤ -0.05,x\[Distributed]prinos[1]]

Probability[x≤ -0.05,x\[Distributed]prinos[2]]

ListLinePlot[RandomFunction[prinos,{0,2,0.01},30]]

Kolika je verovatnoca da ćemo kroz 2 godine napraviti prinos od najmanje 50 posto:

Probability[x>= 0.5,x\[Distributed]prinos[2]]

Naći Monte Carlo simulaciju za 30 putanja prethodnog procesa, za dve godine:

Module[{data=RandomFunction[prinos,{0,2,0.01},30]},ListLinePlot[data,PlotRange-> All]]

Dinamika kretanja cene akcija u neprekidnom vremenu: Geometrijsko Brown-ovo kretanje

Sada smo spremni da formulišemo i model za dinamiku same cene akcije, a ne za njen prinos. Naime, cena akcije, za raziliku od prinosa, nikada ne može biti manja od nule. Jedan standardni model koji se koristi za modeliranje dinamike cena akcija jeste takozvano Geometrijsko Brown-ovo kretanje.

Pretpostavimo da je očekivani prinos na godišnjem nivou jednak μ a volatilnost σ. Ukoliko je početna cena akcije jednaka s0, onda sledeći proces opisuje dinamike cene akcije na najprostiji način:

GeometricBrownianMotionProcess[μ,σ,s0]

SliceDistribution ovog procesa je log-normalna raspodela:

GeometricBrownianMotionProcess[μ,σ,s0][t]

Iz ovoga sledi da se ovaj proces, u trenutku t, može predstaviti kao

Mean[GeometricBrownianMotionProcess[μ,σ,s0][t]]

Mean[GeometricBrownianMotionProcess[μ,σ,s0][t]]//Simplify

Variance[GeometricBrownianMotionProcess[μ,σ,s0][t]]//Simplify

s0 Exp[(μ-((σ^2)/2))t+σ (Sqrt[t])y]

Ovde je y standardna normalna promenljiva, odnosno normalna promenljiva sa očekivanom vrednošću 0 i standardnom devijacijom jednakom 1. Da bismo se u to uverili, dovoljno je da proverimo važi sledeća ekvivalencija.

Pokazati ekvivalenciju dva opisa Geometrijskog Brown-ovog kretanja na primeru

Razmotrimo situaciju u kojoj je inicijalna vrednost akcije jednaka s0=1 evro, očekivani prinos μ =0.1, i standardna devijacija σ=0.2 na godišnjem nivou. U tom slučaju, proces koji opisuje dinamiku cene akcije imao bi, posle dve godine, sledeću SliceDistribution:

GeometricBrownianMotionProcess[0.1,0.2,1][2]

Sa druge strane, raspodela verovatnoće za s0 Exp[(μ-((σ^2)/2))t+σ (Sqrt[t])y] bila bi u tom slučaju:

TransformedDistribution[Exp[(0.1-((0.2^2)/2))2+0.2(Sqrt[2])y],y\[Distributed]NormalDistribution[]]

Jasno je da se ove dve raspodele poklapaju. One se, zapravo, poklapaju uvek. Nekada nam je lakše da koristimo izraz preko ekponente, a nekada direktno preko SliceDistribution iz stohastičkog procesa.

Neki primeri izračunavanja sa Geometrijskim Brown-ovim kretanjem

Pretpostavimo da je početna cena akcije jednaka s0, a očekivani prinos i standardna devijacija na godišnjem nivou jednaki, respektivno, μ i σ. Definišimo ovaj stohastički proces kao:

s=GeometricBrownianMotionProcess[μ,σ,s0]

SliceDistribution ovog procesa u trenutku t bi bio:

s[t]

Očekivana cena akcije i njena varijansa u trenutku t su date izrazima:

Mean[s[t]]//FullSimplify

Variance[s[t]]//FullSimplify

Vidimo da je očekivana vrednost akcije ekponencijalna funkcija vremena, a da je μ brzina rasta (ekponenta) očekivane vrednosti investicije. Ovaj izraz ne zavisi od rizika. Sa druge strane, varijansa cene akcije zavisi kako od očekivanog prinosa tako i od standardne devijacije.

Nastavak

Konkretizujmo sada za slučaj kada je početna cena ulaganja 100 evra, očekivani prinos 10 posto a standardna devijacija 20 posto:

s=GeometricBrownianMotionProcess[0.1,0.2,100];

Očekivan vrednost i standardna akcije posle 2 godina bila bi:

{Mean[s[2]],StandardDeviation[s[2]]}

100 Exp[0.1 2]

Mogli bismo da vidimo kako bi izgledale simuliranje putanje kretanja cena akcije:

data=RandomFunction[s,{0,2,0.01},30]

Ovako izdvajamo podatke vrednostima akcije za, recimo, sedmu putanju:

data["Values",7]

ListLinePlot[data["Values",3],PlotRange-> All]

ListLinePlot[data,PlotRange-> All]

U nekim slučajevima gubimo novac a u drugim zaradimo i preko 100 posto, a u srednjem 10 posto godišnje (2 god.):

Exp[0.1 2]

Uslovno očekivanje

Pretpostavimo da želimo da izračunamo očekivanu vrendnosti za s[2]. Ali, umesto bezuslovog očekivanja, kao u prethodnom odeljku, izračunajmo očekivanje ukoliko znamo da će u trenutku t=1 akcija imati vrednost s[1]==105. Za to će nam trebati raspodela verovatnoće u dva trenutka, naime 1 i 2. Dobijamo je ovako:

s[2]

SliceDistribution[s,2]

SliceDistribution[s,{1,2}]

Znak za uslov \[Conditioned] se unosi kao Esc cond Esc.

\[Conditioned]

110 Exp[0.1 2]

Expectation[y \[Conditioned]x== 110,{x,y}\[Distributed]SliceDistribution[s,{2,4}]]

140 Exp[0.1 1]

Expectation[y \[Conditioned]x== 140,{x,y}\[Distributed]SliceDistribution[s,{1,2}]]

Expectation[y \[Conditioned]x== 105,{x,y}\[Distributed]SliceDistribution[s,{1,2}]]

105 Exp[0.1 1]

Vidimo da informacija u trenutku 1 utiče na naše očekivanje o tome šta će se dogoditi u trenutku 2. Naime, pošto uslov fiksira s[1]==100,  mi ne možemo da očekujemo da će cena porasti više od 10 posto na godini dana. Ukoliko bismo znali da je, umesto toga, u trenutku t=1 cena bila 130, imali bismo mnogo više očekivanje:

Expectation[y \[Conditioned]x== 130,{x,y}\[Distributed]SliceDistribution[s,{1,2}]]

Obrnuto, ukolilko bi u trenutku 1 cena bila samo 80, očekivanu cenu u trenutku 2 bi bila:

Expectation[y \[Conditioned]x== 80,{x,y}\[Distributed]SliceDistribution[s,{1,2}]]

Primetimo da je uslovno očekivanje, za razliku od bezuslovnog, slučajna promenljiva koja zavisi od toga koji će se uslov realizovati u trenutku 1.

Naći očekivanu vrednost Max[s[2]-100,0] u t=0 egzaktno

s[2]

realizacijePuno=RandomVariate[s[2],3000000];

Expectation[Max[y-100,0],y \[Distributed]s[2]]

Mean[Max[#-100,0]&/@realizacijePuno]

realizacije=RandomVariate[s[2],50]

Pretpostavimo da nas interesuje da nađemo očekivanu vrednost razlike u ceni akcije kroz dve godine i početne cene (to jest očekivani profit) pod uslovom da profit nikada ne sme da bude negativan (kada je negativan dobijemo nulu). Videćemo u poslednjem predavanju zašto je tako nešto važno. Naravno, kao i uvek, ima puno načina da izračunamo tako nešto. Evo egzaktnog načina. Naime, možemo prosto izračunati očekivanje slučajne promenljive Max[cena-100,0] pretpostavljajući da je cena\[Distributed]s[2].

s=GeometricBrownianMotionProcess[0.1,0.2,100]

Expectation[Max[cena-100,0],cena\[Distributed]s[2]]

Naravno, možemo da probamo da prvo nađemo raspodelu verovatnoće za promenljivu Max[cena-100,0] pa da onda izračunamo Mean od takve raspodele. Evo kako bismo to uradili:

novaRaspodela=TransformedDistribution[Max[cena-100,0],cena\[Distributed]s[2]];

Mean[novaRaspodela]

Dobili smo, kao što smo mogli pretpostaviti, istu vrednost.

Kako približno izračunati to očekivanje koristeći Monte Carlo simulacije

Ono što smo prethodno uradili je egzaktan rezultat. Kada umemo da nađemo egzaktan rezultat, naravno, nema potrebe da radimo to isto približno.

Na žalost, to se retko dešava u praksi. Stoga je korisno da vidimo kako bismo mogli približno da izračunamo ovo očekivanje koristeći Monte Carlo simulacije (pa da uporedimo sa tačnim rezultatom).

Ideja je prosta. Ukoliko generišemo mnogo puta realizacije cena, na osnovu njih možemo naći odgovarajuće realizacije Max[cena-100,0]. Srednja vrednost tih realizacije daje pribiližnu vrednost ovog očekivanja.

Generišimo prvo mali uzorak mogućih cena u trenutku 2

maliUzorakCena=RandomVariate[s[2],30]

Odgovarajuće vrednosti Max[cena-100,0] bile bi

Max[#-100,0]&/@maliUzorakCena

Mean[%]

Nastavak primera sa izračunavanjem očekivanja pomoću Monte Carlo simulacije

To će se, u principu, dosta razlikovati od tačne vrednosti. Takođe, ako ponovimo proces, dobićemo neku drugu vrednost svaki put (to je slučaj sa svakom simulacijom, razume se). Ali, da li ćemo se u srednjom približiti tačnoj vrednosti ako povećamo uzorak?

Cene=RandomVariate[s[2],4000000];

Histogram[Cene]

Histogram[Max[#-100,0]&/@Cene]

Mean[Max[#-100,0]&/@Cene]

Pošto je tačna vrednost

Mean[novaRaspodela]

vidimo da je poklapanje dosta dobro.