Predavanje 26: Primene, Glava 8

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]]}]

8. Vrednovanje opcija u WL

1. O opcijama

Uvod

O opcijama možemo da mislimo kao o osiguranju da ćemo neku akciju ili druga finansijsku aktivu moći da kupimo ili prodamo po unapred fiksiranoj ceni u nekom trenutku u budućnosti. Kao i osiguranje, opcija je ugovor između dve strane, prodavca i kupca opcije. Kupac opcije igra ulogu osiguraonika, a prodavac opcije igra ulogu osiguravajuće kuće.

Kupac opcije ima pravo ali ne i obavezu da izvrši neku finansijsku transakciju u nekom trenutku u buducnosti. On će izvršiti opciju samo ako mu se to isplati. Kupac opcije, po ustaljenoj terminologiji, ima dugu poziciju u toj opciji, dok prodavac opcije ima kratku poziciju. Dve opcije koje ćemo razmatrati su kol i put opcija.

Kol daje vlasniku opcije pravo da kupi neku aktivu (akciju, devize, obveznice, zlato, naftu, itd, pa čak i druge opcije - ova aktiva se zove primarna aktiva) u nekom trenutku vremena T (vreme trajanja opcije) po unapred fiksiranoj ceni k (cena izvršenja). Put opcija daje vlasniku opcije pravo da proda primarnu aktivu po nekoj fiksnoj ceni k u budućnosti.

Šta očekuje kupac a šta prodavac kol i put opcije? Kakvi su njihovi prihodi u trenutku izvršenja T?

Profit od kol opcije prilikom izvršenja

Pretpostavimo da kupac (vlasnik) opcije ima pravo da kupi jednu akciju IBM po ceni od k dolara kroz godinu dana. U trenutku izvršenja, prihod od duge i kratke pozicije u kol opciji u trenutku izvrsenja dati su izrazima Max[(Subscript[S, T])-k,0] i - Max[(Subscript[S, T])-k,0], respektivno.

Manipulate[kold=Plot[Max[s-k,0], {s,0,100}, AxesOrigin-> {0,0},PlotLabel->  Style[Framed["Prihod od duge kol opcije
u trenutku izvršenja"],14,Blue,Background->Lighter[Yellow]], AxesLabel->{"(Subscript[S, T])","(Subscript[C, T])"},LabelStyle->Directive[Bold, 14],ImageSize-> 400,PlotRange-> {0,60}];kolk=Plot[-Max[s-k,0], {s,0,100}, AxesOrigin-> {0,0}, PlotLabel->  Style[Framed["Prihod od kratke kol opcije 
u trenutku izvršenja"],14,Blue,Background->Lighter[Yellow]], AxesLabel->{"(Subscript[S, T])","-(Subscript[C, T])"},LabelStyle->Directive[Bold, 14],PlotRange-> {0,-60},ImageSize-> 400];GraphicsRow[{kold,kolk}],{{k,40,"cena izvršnjenja"},40,60,1,Appearance-> "Labeled"}]

Ako je cena izvršenja k=40, a tržišna cena akcije 50 dolara, vlasniku kol opcije bi se isplatilo da kupi akciju po 40 i odmah je proda po 50. Zaradio bi 10 dolara. Sa druge strane, ukoliko bi u trenutku izvršenja cena akjcija na tržištu bila 30, ne bi mu se isplatilo da je kupi po 40, pa bi novčani tok od opcije u tom slučaju bio jednak 0. 

Ukupan prihod vlasnika duge i kratke pozicije na bilo koju opciju je uvek jednak nuli (zero sum game!). Dok nekom ne smrkne drugom ne svane.

Profit od put opcije prilikom izvršenja

Kupac (vlasnik) put opcije ima pravo da proda jednu akciju IBM po ceni od k dolara. U trenutku izvršenja, prihod od duge i kratke pozicije u put opciji u trenutku izvrsenja dati su izrazima Max[k-(Subscript[S, T]),0] i - Max[k-(Subscript[S, T]),0], respektivno.

Manipulate[putd=Plot[Max[k-s,0], {s,0,80}, AxesOrigin-> {0,0},PlotLabel->  Style[Framed["Prihod od duge put opcije
u trenutku izvrsenja"],14,Blue,Background->Lighter[Yellow]], AxesLabel->{"(Subscript[S, T])","(Subscript[P, T])"},LabelStyle->Directive[Bold, 14],ImageSize-> 400,PlotRange-> {0,60}];putk=Plot[-Max[k-s,0], {s,0,80}, AxesOrigin-> {0,0}, PlotLabel->  Style[Framed["Prihod od kratke put opcije 
u trenutku izvrsenja"],14,Blue,Background->Lighter[Yellow]], AxesLabel->{"(Subscript[S, T])","-(Subscript[P, T])"},LabelStyle->Directive[Bold, 14],PlotRange-> {0,-60},ImageSize-> 400];GraphicsRow[{putd,putk}],{{k,40,"cena izvrsnjenja"},40,60,1,Appearance-> "Labeled"}]

Ukoliko imamo pravo da prodamo akciju IBM po ceni od 50 dolara u trenutku izvršenja, a na tržištu se prodaje po 80, ne bismo izvršili opciju, to jest zarada bi bila 0. Sa druge strane, ako možemo da je prodamo po 50 a njena cena u trenutku izvršenja je 30, zaradili bismo 20 dolara.

Opet vidimo da je ukupan prihod od duge i kratke pozicije uvek jednak 0!

Klasifikacija i oznake kod opcija

Još jedna važna podela opcija jeste po tome kada je moguće izvršiti opciju. Ukoliko je moguce opciju izvršiti samo u trenutku t = T kada opcija ističe, takva opcija naziva se opcija evropskog tipa. Ukoliko je moguće i bilo kada ranije izvršiti opciju, takva opcija naziva se opcijom američkog tipa. Kako kol tako i put opcije mogu biti bilo evropskog ili američkog tipa.

Opcije američkog tipa uvek su bar onoliko vredne koliko i identične opcije evropskog tipa (jer uvek možemo da kod opcije američkog tipa prosto čekamo sa izvršenjem i izvršimo ili ne izvršimo je na samom kraju). Mi ćemo se baviti dalje uglavnom samo opcijama evropskog tipa, to jest onima koje mogu da se izvrše samu u trenuktu kada ističu.

Važne oznake u vezi opcija su date u sledećoj tabeli:

Grid[{{"cena primarne aktive u trenutku t",(Subscript[S, t])},{"cena izvrsenja",k},{"vreme do dospeca",T},{"cena evropske kol opcije u trenutku t",(Subscript[C, t])},{"cena evropske put opcije u trenutku t",(Subscript[P, t])},{"cena američke kol opcije u trenutku t",(Subscript[AC, t])},{"cena američke put opcije u trenutku t",(Subscript[AP, t])},{"cena kol opcije u trenutku dospeća T",Max[(Subscript[S, T])-k,0]//TraditionalForm},{"cena put opcije u trenutku dospeća T",Max[k-(Subscript[S, T]),0]//TraditionalForm}},Frame-> All,Alignment->Left,ItemStyle->Directive[FontSize -> 20]]

2. Pojam finansijske arbitraže

Definicija

Kažemo da neki investicioni portfolio omogućava arbitražu ukoliko važi jedno od sledeceg:

a. Dobijamo neku pozitivnu sumu novca danas (cena portfolia je negativna), a u budućnosti nemamo nikakve novčane tokove. Znači, u tom slučaju neko nam je poklonio, možda greškom, neku sumu novca.

b. Danas nas ne košta ništa da uđemo u taj portfolio (cena mu je nula) a u budućnosti ne postoji mogućnost da izgubimo novac od te investicije, a postoji pozitivna verovatnoća da ostvarimo pozitivni profit.

Oba ta slučaja su savršena za investitora ukoliko se mogu realizovati, jer se bez ikakvih para može obogatiti samo na osnovu toga što ostali učesnici na tržištu nešto ne razumeju kako treba!

Ista roba sa dve različite cene u istom trenutku

Pretpostavimo da dve menjačnice menjaju dinare za evro. Pretpostavimo, takodje, da nema transakcionih troskova to jest spreda izmedju prodajne i kupovne cene. Menjačnica A nudi kurs od 120 dinara za evro, a menjačnica B nudi 123. Kako možemo, bez rizika, ostvariti arbitražni profit?

Pretpostavimo da smo u prvoj menjačnici kupili evro po ceni od 120 a u drugoj ga istovremeno prodali odmah za 123. To bi značilo da smo danas zaradili 3 dinara, a da pri tome nismo morali ni da imamo pare u početku.

Šta god da se posle desi sa deviznim kursom ne mozemo da izgubimo ukoliko obe transakcije izvršimo istovremeno. Kod takvog ulaganja nema rizika.

Jasno je da ovakva situacija ne bi mogla da traje dugo, jer bi menjačnica A morala vremenom da digne kurs, a B da ga spusti. To je slučaj koji bi odgovarao arbitraži tipa a.

Narušen odnos cena identične opcije američkog i evropskog tipa

Identična opcija američkog tipa ne može biti jeftinija od opcije evropskog tipa. To jest, mora da važi da je (Subscript[AC, t])>= (Subscript[C, t]) i (Subscript[AP, t])>= (Subscript[P, t]). Ukoliko ovo ne bi važilo bila bi moguća arbitraža, a takve mogućnosti za investicije ne traju dugo.

Neka američka kol opcija košta 3 a identična evropska kol opcija košta 5 dolara. Cene izvršenja kod obe opcije 50 evra. Da bismo ostvarili arbitražni profit, kupimo jeftiniju opciju i prodamo skuplju.

Naime, kupimo američku opciju a prodamo (uđemo u kratku poziciju) evropsku opciju. U tom slucaju, novčani tokovi u trenutku 0 (danas) i trenutku T (vreme dospeća opcija) su:

Grid[{{,"trenutak 0","vreme dospeca T"},{"novčani tok od evropske pozicije",5,-Max[(Subscript[S, T])-50,0]//TraditionalForm},{"novčani tok od americke pozicije",-3,Max[(Subscript[S, T])-50,0]//TraditionalForm},{"novčani tok od portfolia",5-3,-Max[(Subscript[S, T])-50,0]+Max[(Subscript[S, T])-50,0]}},Frame-> All,Alignment->Left,ItemStyle->Directive[FontSize -> 20]]

Znači, stavili bismo 2 dolara danas u džep, i ne bismo imali nikakve obaveze u vezi sa tim kasnije! Ovo je arbitraža tipa a. Ona ne bi mogla da traje dugo pa bi američka opcija poskupela a evropska pojeftinila.

3. Vrednovanje opcija metodom binomnog stabla u jednom vremenskom koraku

Numerički primer vrednovanja kol opcije u jednom vremenskom koraku

Najprostiji model kretanja cena finansijske aktive jeste binomni model. U tom slučaju u svakom trenutku postoje samo dve mogućnosti: cena može da ide ili naviše, za neki fiksni multiplikativni aktor, ili da pada, opet za neki fiksni multiplikativni faktor. Kasnije ćemo videti da je to u stvari binomni stohastički proces. Ali za sada razmatramo samo jedan korak, odnosno jedan vremensku period.

Ideja vrednovanja opcije je sledeca: replikovacemo kol ili put opciju trgujući portfoliom koji se sastoji od bezrizične aktive (koji u oba stanja u trenutku 1 daje isti prinos) i primarne aktive (recimo akcije) koja ima goreopisano ponašanje.

Ukoliko uspemo tako da izaberemo portfolio tako da u oba moguća stanja u trenutku 1 opcija koju želimo da vrednujemo ima iste vrednosti kao i naš replikacioni portfolio onda i njihova vrednost u trenutku 0 mora biti ista. U suprotnom, postojala bi mogucnost arbitraže.

Pošto nađemo portfolio koji replikuje opciju, njena cena u trenutku 0 je prosto jednaka vrednosti replikacionog portfolia (odnosno jednaka je količini para koju imamo na bezrizičnom računu i uloženim u rizičnu aktivu u trenutku 0).

Numerički primer vrednovanja kol opcije u jednom koraku

Nađimo vrednost opcije koja daje pravo kupovine akcije kroz godinu dana (kol opcija). Sadašnja vrednost akcije je S0 =  $100. Kroz godinu dana cena akcije može da poraste za 20% ili da padne za 20%, tako da su vrednosti akcije na kraju godine ili $120 ili $80. Ukoliko uložimo novac u bezričinu aktivu (u banku, recimo) dobicemo 10% prinos u oba stanja. Najzad, pored akcije i keša imamo i kol opciju sa cenom izvrsenja  K = 100. Sledeći dijagrami pokazuju novčane tokove (odnosno cene) vezane za te instrumente:

TreePlot[{100->120,100->80,1->1.1,1->"1.1"},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.35},{1,-0.35},{3,0},{4,0.35},{4,-0.35}},ImageSize->500,PlotLabel-> Style["Evolucija vrednosti akcije i bezrizične aktive
jedan korak",16,Bold,Blue]]

stabloC1=TreePlot[{"C0"->Inactivate[Max[120-100,0]]==Max[120-100,0],"C0"->Inactivate[Max[80-100,0]]==Max[80-100,0]},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5}},ImageSize->250,PlotLabel-> Style["Evol. vrednost kol 
opcije jedan korak",16,Bold,Blue]]

Replikacioni portfolio za numerički primer kol opcije

Naš je cilj da nađemo vrednost kol opcije u trenutku 0, to jest C0. To ćemo izvesti tako što ćemo pokazati da kol opcija u potpunosti može biti replikovana pomoću nerizične aktive i akcije. Pretpostavimo da smo kupili danas A akcija po ceni od 100 dolara i stavili na štednju (ili pozajmili) B dolara. U tom slučaju, da bismo perfektno replikovani novčane tokove kol opcije u trenutku 1, moralo bi da važi:

sol21= Solve[{120 A + 1.1 B==20,80 A + 1.1 B==0},{A,B}]

Kupujući 0.5 akcija i pozajmivši  $36.36 sa kamatom od 10% godisnje dobili bismo $20 ukoliko se realizuje stanje u (porast cena) i 0 ukoliko se realizuje pad cena (stanje d). Da ne bi bilo arbitraže, cena opcije danas mora biti jednaka ceni replikacionog portfolia, to jest:

C0=100*A + B/. sol21[[1]]

Znači, za takvu kol opciju bilo bi fer platiti 13.6364 dolara danas. Šta bi se dogodilo ukoliko bismo mogli da kupimo takvu opciju za 11 dolara? Evo arbitražne strategije. Naime, kupimo ono sto je jeftino (kol opciju po ceni od 11 dolara), a prodamo ono što je skupo (0.5 akcije bez pokrića po ceni od 0.5x100=50 i uložimo (umesto da pozajmimo) 36.3636 dolara po kamati od 10 posto):

Grid[{{,"trenutak 0","gornje stanje u trenutku 1","donje stanje u trenutku 1"},{"novčani tok od kol opcije",-11,Inactivate[Max[120-100,0]]==Max[120-100,0]//TraditionalForm,Inactivate[Max[80-100,0]]==Max[80-100,0]//TraditionalForm},{"novcani tok od prodaje na kratko 0.5 akcije",Inactivate[0.5 100,Times]==0.5*100,-Inactivate[0.5*120,Times]==-0.5 *120//TraditionalForm, -Inactivate[0.5*80,Times]==-0.5*80//TraditionalForm},{"novčani tok od ulaganja sume 36.3636 dolara",sol21[[1,2,2]],Inactivate[36.3636 *1.1,Times]==36.3636*1.1//TraditionalForm, Inactivate[36.3636 *1.1,Times]==36.3636*1.1//TraditionalForm},{"novčani tokovi od portfolia",-11+0.5 100+sol21[[1,2,2]] ,Max[120-100,0]-0.5*120-sol21[[1,2,2]] *1.1,Max[80-100,0]-0.5*80-sol21[[1,2,2]] *1.1}},Frame-> All,Alignment->Center,ItemStyle->Directive[FontSize -> 18]]

Ekvivalentno tome da nam danas nam neko stavi u džep 2.63 dolara, i nemamo nikakve troskove kasnije! To bi bila arbitraža tipa a!

Numerički primer vrednovanja put opcije u jednom vremenskom koraku

Nađimo sada vrednost opcije koja daje pravo kupovine akcije kroz godinu dana (put opcija). Svi parametri su isti kao ranije. Cena izvršenja put opcije je  K = 100. U tom slučaju, sledeći dijagrami pokazuju novčane tokove (odnosno cene) vezane za te instrumente:

TreePlot[{100->120,100->80,1->1.1,1->"1.1"},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.35},{1,-0.35},{3,0},{4,0.35},{4,-0.35}},ImageSize->500,PlotLabel-> Style["Evolucija vrednosti akcije i bezrizicne aktive
jedan korak",16,Bold,Blue]]

stabloC1=TreePlot[{"P0"->Inactivate[Max[100-120,0]]==Max[100-120,0],"P0"->Inactivate[Max[100-80,0]]==Max[100-80,0]},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5}},ImageSize->250,PlotLabel-> Style["Evol. vrednost put 
opcije jedan korak",16,Bold,Blue]]

Replikacioni portfolio za numerički primer put opcije

Naš je cilj nađemo vrednost put opcije u trenutku 0, to jest P0. Konstruišimo portfolio koji se sastoji iz akcije i bezrizične aktive koji replikuje novčane tokove opcije (0 i 20) u trenutku 1. Pretpostavimo da smo kupili ili prodali bez pokrića danas A akcija po ceni od 100 dolara i stavili B dolara (ili pozajmili) u banku. U tom slučaju u trenutku 1 morali bi da važi:

sol22= Solve[{120 A + 1.1 B==0,80 A + 1.1 B==20},{A,B}]

Prodajući na kratko 0.5 akcija i uloživši  $54.5455 sa kamatom od 10% godisnje dobili bismo $0 ukoliko se stanje u (porast cena) realizuje i 20 ukoliko se realizuje pad cena (stanje d). Da ne bi bilo arbitraže, cena opcije danas mora biti jednaka ceni replikacionog portfolia:

P0=100*A + B/. sol22[[1]]

Znači, za takvu put opciju bilo bi fer danas platiti 4.54545 dolara. Šta bi se dogodilo ukoliko bismo mogli da je kupimo u trenutku 0 za 3 dolara? U tom slučaju možemo da napravimo arbitražnu strategiju trgovanja na sledeći nacin. Naime, kupimo put opciju po ceni od 3 dolara, a kupimo akciju po ceni od 100 i pozajmimo 54.5455 dolara po kamati od 10 posto. Portfolio bi imao sledeće tokove:

Grid[{{,"trenutak 0","gornje stanje u trenutku 1","donje stanje u trenutku 1"},{"novčani tok od put opcije",-3,Inactivate[Max[100-120,0]]==Max[100-120,0]//TraditionalForm,Inactivate[Max[100-80,0]]==Max[100-80,0]//TraditionalForm},{"novčani tok od kupovine 0.5 akcije",-Inactivate[0.5 100,Times]==-0.5*100,Inactivate[0.5*120,Times]==0.5 *120//TraditionalForm, Inactivate[0.5*80,Times]==0.5*80//TraditionalForm},{"novčani tok od pozajmice 54.5455",sol22[[1,2,2]],-Inactivate[sol22[[1,2,2]] *1.1,Times]==-sol22[[1,2,2]]*1.1//TraditionalForm, -Inactivate[sol22[[1,2,2]] *1.1,Times]==-sol22[[1,2,2]]*1.1//TraditionalForm},{"novčani tokovi od portfolia",-3-0.5 100+sol22[[1,2,2]] ,Chop[Max[100-120,0]+0.5*120-sol22[[1,2,2]] *1.1],Chop[Max[100-80,0]+0.5*80-sol22[[1,2,2]] *1.1]}},Frame-> All,Alignment->Center,ItemStyle->Directive[FontSize -> 18]]

Znaci, danas nam neko stavi u džep 1.54545 dolara, i nemamo nikakve troškove kasnije! To je arbitraza!

Opšti slučaj vrednovanja kol opcije u jednom vremenskom koraku

Pretpostavimo da je cena primarne aktive u trenutku 0 jednaka S. U trenutku 1 cena moze biti ili u S ili d S. Vidimo da su u i d bruto prinosi na akciju. Sa druge strane, bruto bezrizična stopa je jednaka R=1+r. Imamo sledeće dijagrame:

stabloS1=TreePlot[{S->S u,S->S d,1->R,1->"R"},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.35},{1,-0.35},{3,0},{4,0.35},{4,-0.35}},ImageSize->600,PlotLabel-> Style["Evolucija vrednosti akcije i bezrizične aktive
jedan korak",16,Bold,Blue]]

Primetimo da odsustvo arbitraže zahteva da vazi d < R < u. Naime, u je bruto prinos na akcije u gornjem stanju, R=1+r je bruto prinos na nerizicnu aktivu dok je d bruto prinos na akcije u donjem stanju. Ukoliko bi, na primer, važilo da je d <u <R, ne bi se nikad isplatilo kupovati akcije. Slično, ukoliko je R<  d <u , onda se nikad ne bi isplatilo imati novac u bezrizičnoj aktivi.

Stoga mora da važi d < R < u.

Vrednovanje kol opcije u opštem slučaju u jednom vremenskom koraku

stabloC1=TreePlot[{"C0"->(Subscript[C, u])==Max[S u-k,0],"C0"->(Subscript[C, d])==Max[S d-k,0]},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5}},ImageSize->250,PlotLabel-> Style["Evol. vrednost kol 
opcije jedan korak",16,Bold,Blue]]

Replikacioni portfolio za kol opciju može da se predstavi na sledeći način:

sol24= Solve[{S u A + R B==(Subscript[C, u]),S d A + R B==(Subscript[C, d])},{A,B}]

tako da je cena kol opcije danas (u trenutku 0) jednaka:

C0=FullSimplify[S*A + B/. sol24[[1]]]

Opšti slučaj vrednovanja kol opcije u jednom koraku

Ovaj izraz moze da se trasformiše na sledeći način:

Collect[C0,{(Subscript[C, u]),(Subscript[C, d])}]

Iz prethodnih rezultata znamo da je d < R < u. Stoga se poslednji izraz moze predstaviti ovako: C0=(((Subscript[π, Q]) (Subscript[C, u]) + (1-(Subscript[π, Q])) (Subscript[C, d]))/R)

Collect[Simplify[(((Subscript[π, Q]) (Subscript[C, u]) + (1-(Subscript[π, Q])) (Subscript[C, d]))/R) /. (Subscript[π, Q]) -> ((R-d)/(u-d))],{(Subscript[C, u]),(Subscript[C, d])}]

Cena finansijskog derivata, recimo kol opcije, može se, stoga, naći kao riziko-neutralno očekivanje mogućih realizacija opcije u trenutku 1, i diskontovanih putem nerizične stope R = 1+r.

stabloC11=TreePlot[{{"C0"->(Subscript[C, u]),(Subscript[π, Q])},{"C0"->(Subscript[C, d]),1-(Subscript[π, Q])}},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5}},ImageSize->250,PlotLabel-> Style["Evol. vrednost kol 
opcije jedan korak",16,Bold,Blue]]

Opšti slučaj vrednovanja put opcije u jednom vremenskom koraku

stabloC1=TreePlot[{"P0"->(Subscript[P, u])==Max[k-S u,0],"P0"->(Subscript[P, d])==Max[k-S d,0]},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5}},ImageSize->250,PlotLabel-> Style["Evol. vrednosti put 
opcije jedan korak",16,Bold,Blue]]

Replikacioni portfolio za put opciju može da se predstavi na sledeći način:

sol25=Solve[{S u A + R B==(Subscript[P, u]),S d A + R B==(Subscript[P, d])},{A,B}]

tako da je cena put opcije danas (u trenutku 0) jednaka:

P0=FullSimplify[S*A + B/. sol25[[1]]]

To isto dobijamo koristeći riziko-neutralnu verovatnoću

Collect[Simplify[(((Subscript[π, Q]) (Subscript[P, u]) + (1-(Subscript[π, Q])) (Subscript[P, d]))/R) /. (Subscript[π, Q]) -> ((R-d)/(u-d))],{(Subscript[P, u]),(Subscript[P, d])}]

Još jedan način za određivanje riziko-neutralne verovatnoće

Ako znamo moguće realizacije opcije u trenutku izvršenja, riziko-neutralne verovatnoće i bezrizičnu diskontnu stopu možemo da jednoznačno odredimo cenu bilo koje opcije (kako kol tako i put).

Stoga je važno na još jedan način sagledati smisao riziko-neutralni verovatnoća. Pretpostavimo da želimo da nadjemo verovatnoce pr, 1-pr koje bi učinile da očekivanje rizične aktive postane jednako očekivanju bezrizične aktive. Naime, želimo da nađemo pr koji zadovoljavaju sledeću jednačinu:

Solve[pr S u + (1-pr)S d == S R,pr]

Vidimo da smo dobili izraz identičan onome za (Subscript[π, Q]). Stoga se ove verovatnoce i zovu riziko-neutralne verovatnoće. Naime, koristeći njih investitor sva očekivanja izračunava kao da je neutralan u odnosu na rizik.

4. Vrednovanje evropskih opcija metodom binomnog stabla u dva i više vremenskih koraka

Opšti izrazi za cenu evropske kol i put opcije u dva koraka

Sada predstavljamo algoritam za izračunavanje cene evropske kol i put opcije u slučaju kada imamo binomno stablo sa dve vremenska koraka.

TreePlot[{S->S u,S->S d,S u->S (u^2),S u->S u d,S d->S u d,S d->S (d^2)},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5},{2,1},{2,0},{2,-1}},ImageSize->400,PlotLabel-> Style["Evol. cene akcije 
 dva koraka",16,Bold,Blue]]

Evolucija evropske kol opcije u 2 koraka

TreePlot[{C0->(Subscript[C, u]),C0->(Subscript[C, d]),(Subscript[C, u])->(Subscript[C, uu])==Max[S (u^2)-k,0],(Subscript[C, u])->(Subscript[C, ud])==Max[S u d-k,0],(Subscript[C, d])->(Subscript[C, ud])==Max[S u d-k,0],(Subscript[C, d])->(Subscript[C, dd])==Max[S (d^2)-k,0]},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5},{2,1},{2,0},{2,-1}},ImageSize->400,PlotLabel-> Style["Evol. evropske kol opcije 
 dva koraka",16,Bold,Blue]]

Vrednovanje evropske kol opcije korak po korak

U trenutku t =2 (u trenutku izvršenja) cena kol opcije će zavisiti od toga koje se stanje realizuje. Moguca stanja su uu, ud, du i dd pri čemu ćemo u stanju ud i du dobiti istu vrednost, (Subscript[C, ud]). Cena evropske kol opcije u trenutku 1 izračunava se kao i ranije u slučaju jednog koraka, a naime:

Clear[C0]

(Subscript[С, u])==(((Subscript[𝔼, Q])[(Subscript[C, 2])\[Conditioned]u])/R)==(((Subscript[π, Q]) (Subscript[C, uu]) + (1-(Subscript[π, Q])) (Subscript[C, ud]))/R)

(Subscript[С, d])==(((Subscript[𝔼, Q])[(Subscript[C, 2])\[Conditioned]d])/R)==(((Subscript[π, Q]) (Subscript[C, du]) + (1-(Subscript[π, Q])) (Subscript[C, dd]))/R)

Najzad, cena evropske kol opcije u trenutku 0 je:

C0==(((Subscript[𝔼, Q])[(Subscript[C, 1])])/R)==(((Subscript[π, Q]) (Subscript[C, u]) + (1-(Subscript[π, Q])) (Subscript[C, d]))/R)

Ovde je riziko-neutralna verovatnoća data istim izrazom kao i ranije.

Evolucija evropske put opcije u 2 koraka

Cene evropske put opcije u različitim vremenskim trenucima su, analogno:

TreePlot[{P0->(Subscript[P, u]),P0->(Subscript[P, d]),(Subscript[P, u])->(Subscript[P, uu])==Max[k-S (u^2),0],(Subscript[P, u])->(Subscript[P, ud])==Max[k-S u d,0],(Subscript[P, d])->(Subscript[P, ud])==Max[k-S u d,0],(Subscript[P, d])->(Subscript[P, dd])==Max[k-S (d^2),0]},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5},{2,1},{2,0},{2,-1}},ImageSize->400,PlotLabel-> Style["Evol. evropske put opcije 
 dva koraka",16,Bold,Blue]]

Vrednovanje evropske put opcije korak po korak

U trenutku t =2 (u trenutku izvršenja) cena put opcije će zavisiti od toga koje se stanje realizuje. Moguća stanja su uu, ud, du i dd pri ćemu ćemo u stanju ud i du dobiji istu vrednost, (Subscript[P, ud]). Cena evropske put opcije u trenutku 1 izračunava se kao i ranije u slučaju jednog koraka, a naime:

Clear[P0]

(Subscript[P, u])==(((Subscript[𝔼, Q])[(Subscript[P, 2])\[Conditioned]u])/R)==(((Subscript[π, Q]) (Subscript[P, uu]) + (1-(Subscript[π, Q])) (Subscript[P, ud]))/R)

(Subscript[P, d])==(((Subscript[𝔼, Q])[(Subscript[P, 2])\[Conditioned]d])/R)==(((Subscript[π, Q]) (Subscript[P, du]) + (1-(Subscript[π, Q])) (Subscript[P, dd]))/R)

Najzad, cena evropske put opcije u trenutku 0 je:

P0==(((Subscript[𝔼, Q])[(Subscript[P, 1])])/R)==(((Subscript[π, Q]) (Subscript[P, u]) + (1-(Subscript[π, Q])) (Subscript[P, d]))/R)

Numerički primer u dva koraka

Konstruišimo prvo binomno stablo za primarnu aktivu u dva koraka u slučaju kada su parametri stabla:  S =100, u=1.2 i d =0.8 i R =1.1.

TreePlot[{100->100 1.2,100->100 0.8,100 1.2->100 (1.2^2),100 1.2->100 1.2 0.8,100 0.8->100 0.8 1.2,100 0.8->100 (0.8^2)},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5},{2,1},{2,0},{2,-1}},ImageSize->400,PlotLabel-> Style["Evol. cene akcije 
 dva koraka",16,Bold,Blue]]

Numerički primer vrednovanja evropske kol opcije u 2 koraka

Za prethodni primer, konstruisati binomno stablo cena evropske kol i put opcije za koje je cena izvrsenja jednaka 100. Koristeci gore navedeni algoritam za evropsku kol opciju dobijamo

TreePlot[{{C0==(0.75*30+0.25*0)/1.1->(Subscript[C, u])==(0.75*44+0.25*0)/1.1,0.75},{C0==(0.75*30+0.25*0)/1.1->(Subscript[C, d])==(0.75*0+0.25*0)/1.1,0.25},{(Subscript[C, u])==(0.75*44+0.25*0)/1.1->(Subscript[C, uu])==Max[144-100,0],0.75},{(Subscript[C, u])==(0.75*44+0.25*0)/1.1->(Subscript[C, ud])==Max[96-100,0],0.25},{(Subscript[C, d])==(0.75*0+0.25*0)/1.1->(Subscript[C, ud])==Max[96-100,0],0.75},{(Subscript[C, d])==(0.75*0+0.25*0)/1.1->(Subscript[C, dd])==Max[64-100,0],0.25}},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5},{2,1},{2,0},{2,-1}},ImageSize->400,PlotLabel-> Style["Evol. evropske kol opcije 
 dva koraka",16,Bold,Blue]]

Na slici su označene i odgovarajuće riziko-neutralne verovatnoce. Diskontna stopa je 10 posto. Za evropsku put opciju imamo

Numerički primer vrednovanja evropske put opcije u 2 koraka

TreePlot[{{P0==(0.75*0.909091+0.25*10.9091)/1.1->(Subscript[P, u])==(0.75*0+0.25*4)/1.1,0.75},{P0==(0.75*0.909091+0.25*10.9091)/1.1->(Subscript[P, d])==(0.75*4+0.25*36)/1.1,0.25},{(Subscript[P, u])==(0.75*0+0.25*4)/1.1->(Subscript[P, uu])==Max[100-144,0],0.75},{(Subscript[P, u])==(0.75*0+0.25*4)/1.1->(Subscript[P, ud])==Max[100-96,0],0.25},{(Subscript[P, d])==(0.75*4+0.25*36)/1.1->(Subscript[P, ud])==Max[100-96,0],0.75},{(Subscript[P, d])==(0.75*4+0.25*36)/1.1->(Subscript[P, dd])==Max[100-64,0],0.25}},Left,DirectedEdges->True,VertexLabeling->True,VertexCoordinateRules->{{0,0},{1,0.5},{1,-0.5},{2,1},{2,0},{2,-1}},ImageSize->400,PlotLabel-> Style["Evol. evropske put opcije 
 dva koraka",16,Bold,Blue]]

Opšti izraz za izračunavanje evropske kol i put opcije: prostiji metod

Ako nas zanima samo vrednost opcije danas a ne i sve moguće vrednosti opcije u budućnosti, postoji jednostavniji metod za izračunavanje cene evropskog kol i puta. Naime, primetimo da u slučaju evropske kol opcije u dva perioda:

(Subscript[С, u])==(((Subscript[𝔼, Q])[(Subscript[C, 2])\[Conditioned]u])/R)==(((Subscript[π, Q]) (Subscript[C, uu]) + (1-(Subscript[π, Q])) (Subscript[C, ud]))/R)

(Subscript[С, d])==(((Subscript[𝔼, Q])[(Subscript[C, 2])\[Conditioned]d])/R)==(((Subscript[π, Q]) (Subscript[C, du]) + (1-(Subscript[π, Q])) (Subscript[C, dd]))/R)

Stoga je cena evropske kol opcije u trenutku 0:

С0==(((Subscript[𝔼, Q])[(Subscript[C, 1])])/R)==(((Subscript[π, Q]) (Subscript[C, u]) + (1-(Subscript[π, Q])) (Subscript[C, d]))/R)==Collect[(((Subscript[π, Q]) (((Subscript[π, Q]) (Subscript[C, uu]) + (1-(Subscript[π, Q])) (Subscript[C, ud]))/R) + (1-(Subscript[π, Q])) (((Subscript[π, Q]) (Subscript[C, ud]) + (1-(Subscript[π, Q])) (Subscript[C, dd]))/R))/R),{(Subscript[C, uu]),(Subscript[C, ud]),(Subscript[C, dd])}]==(((Subscript[𝔼, Q])[(Subscript[C, 2])])/(R^2))//TraditionalForm

a cena evropske put opcije u trenutku 0:

P0==(((Subscript[𝔼, Q])[(Subscript[P, 1])])/R)==(((Subscript[π, Q]) (Subscript[P, u]) + (1-(Subscript[π, Q])) (Subscript[P, d]))/R)==Collect[(((Subscript[π, Q]) (((Subscript[π, Q]) (Subscript[P, uu]) + (1-(Subscript[π, Q])) (Subscript[P, ud]))/R) + (1-(Subscript[π, Q])) (((Subscript[π, Q]) (Subscript[P, ud]) + (1-(Subscript[π, Q])) (Subscript[P, dd]))/R))/R),{(Subscript[P, uu]),(Subscript[P, ud]),(Subscript[P, dd])}]==(((Subscript[𝔼, Q])[(Subscript[P, 2])])/(R^2))//TraditionalForm

Ovaj metod se najlakše uopštava u slučaju kada uzimamo, radi preciznosti, veći broj koraka u stablu.

Koristeci metod iz prethodnog primera izracunati cene evropske kol i put opcije iz numeričkog primera:

C0==((0.75^2)*44+2 0.75 0.25 0+(0.25^2)*0)/(1.1^2)

P0==((0.75^2)*0+2 0.75 0.25 4+(0.25^2)*36)/(1.1^2)

Standardna parametrizacija binomnog modela

Vidimo da, u principu, nije teško proceniti cenu opcije koristeći binomni model. Međutim, ostalo je do sada otvoreno pitanje kako uopšte da znamo koliko treba da budu parametri u, d, i R. Postoji puno načina na koji se to može uraditi (to je takozvana parametrizacija binomnog modela). Jedan od najčešće korišćenih i najjednostavnijih načina je sledeći. Naime, uvedimo sledeće oznake:

σ je godišnja volatilnost, odnosno standardna devijacija logaritamskog prinosa na godišnjem nivou. O njoj ćemo za trenutak.
r je godišnja kontinualno obračunata stopa prinosa na nerizičnu obveznicu
T je vreme do izvršenja opcije
n je broj koraka u koji podelimo T, tako da je dužina jednog koraka Δt = T/n

Onda su vrednosti elementarnih parametara za jedan korak u binomnom modelu dati izrazima

u = Exp[σ (Sqrt[Δt])]
d = 1/u
R = Exp[ r Δt]

U praksi, prinosi na državne obveznice poznati su sa tržišta. Sa druge strane, volatilnost na akcije obično se određuje na sledeći način. Pretpostavimo da nas interesuje logaritamski prinos na SP500 indeks. Ako nas interesuje 2015 godina, možemo da iskoristimo prethodno snimljene podatke.

Najprostija procena volatilnosti prinosa na akcije na bazi istorijskih podataka

Danas je prvi dan 2016. godine. Pretpostavimo da nas zanima da nađemo cenu opcije na SP500 indeks (ignorišimo ovde dividende). Naime, želimo da nađemo cenu kol opcije sa cenom izvršenja od 2100 i rokom dospeća od 9 meseci. Pretpostavimo da je vrednost za SP500  jednaka 2168 (to je vrednost koja odgovara poslednjem danu trgovanja u 2015). Želimo da uporedimo cenu kol opcije ukoliko koristimo jedan ili 2 vremenska koraka. Prvo učitavamo vrednosti SP500 indeksa za 2015.

spindex=Import["C:\\Users\\Branko Urosevic\\Desktop\\OI 2016 Predavanja\\Podaci za WL Primene\\sp500indexu2015.dat"]\[Transpose][[1]];

Izračunajmo sada logaritamske prinose na dnevnom nivou.

prinos=Differences[Log[spindex]];

Najzad, volatilnost SP500 na godišnjem nivou određujemo na osnovu volatilnosti na dnevnom nivou pomnoženom sa (Sqrt[252]) (korenom od broja dana trgovanja u jednoj godini):

σ=(Sqrt[252])StandardDeviation[prinos]

Primer ekplicitnog izračunavanja cene kol opcije u jednom koraku

Pretpostavimo da je prinos na državnu obveznicu (obračunat kontinualno) jednak 0.013 (odnosno 1.3 posto godišnje). U tom slučaju, za model sa jednim vremenskim korakom, kada je T=0.75 (odnosno 9 meseci) imali bismo sledeće vrednosti parametara:

T=0.75;r=0.013;S=2168;n=1;

{u=Exp[σ (Sqrt[(T/n)])],d=Exp[-σ(Sqrt[(T/n)])],R=Exp[r (T/n)]}

U tom slučaju, riziko-neutralna verovatnoća bi bila:

p=(((R-d))/(u-d))

a cena kol opcije bi onda bila:

C0jedan=((p Max[S u-2100,0]+(1-p) Max[S d-2100,0])/R)

Clear[u,d,r,n,T,p,C0, R,S]

Povećanje broja koraka povećava preciznost. Razmotrimo, stoga, kako bismo ovaj model koristili u slučaju kada želimo da uzmemo veći broj koraka.

Primer ekplicitnog izračunavanja cene kol opcije u dva koraka

Razmotrimo sada istu opciju kao i ranije, ali izračunajmo vrednost opcije ukoliko koristimo 2 koraka umesto jednog. U tom slučaju, moramo da ponovo izračunamo parametre za vrednovanje. Jedina razlika je da je sada:

T=0.75;r=0.013;S=2168;n=2;

{u=Exp[σ (Sqrt[(T/n)])],d=Exp[-σ(Sqrt[(T/n)])],R=Exp[r (T/n)]}

U tom slučaju, riziko-neutralna verovatnoća bi bila:

p=(((R-d))/(u-d))

a cena kol opcije bi onda bila:

C0dva=(1/(R^2))((p^2) Max[S (u^2)-2100,0]+(((1-p))^2) Max[S (d^2)-2100,0]+2 p(1-p)Max[S u d-2100,0])

Clear[u,d,r,n,T,p,C0, R,S]

Povećanje broja koraka povećava preciznost. Razmotrimo, stoga, kako bismo ovaj model koristili u slučaju kada želimo da uzmemo proizvoljan broj koraka.

Primer ekplicitnog izračunavanja cene kol opcije u tri koraka

Razmozimo sada istu opciju kao i ranije, ali izračunajmo vrednost opcije ukoliko koristimo 2 koraka umesto jednog. U tom slučaju, moramo da ponovo izračunamo parametre za vrendovanje. Jedina razlika je da je sada

T=0.75;r=0.013;S=2168;n=3;

{u=Exp[σ (Sqrt[(T/n)])],d=Exp[-σ(Sqrt[(T/n)])],R=Exp[r (T/n)]}

U tom slučaju, riziko-neutralna verovatnoća bi bila:

p=(((R-d))/(u-d))

a cena kol opcije bi onda bila:

C0tri=(1/(R^3))((p^3) Max[S (u^3)-2100,0]+(((1-p))^3) Max[S (d^3)-2100,0]+3 (p^2)(1-p)Max[S (u^2) d-2100,0]+3 p(((1-p))^2)Max[S u (d^2)-2100,0])

Clear[u,d,r,n,T,p,C0, R,S]

Na veoma sličan način bi se računala cena put opcije (samo zamenimo odgovaraće vrednosti opcije u trenutku izvršenja).

5. Vrednovanje evropske kol i put opcije metodom binomnog stabla u proizvoljnom broju vremenskih koraka

Cena evropske kol opcije za proizvoljan broj koraka n

Pretpostavimo da smo umesto sa 2 koraka računali evropsku kol ili put opciju koristeći n koraka. Veličine u i d odgovaraju bruto prinosima u dobrom i lošem stanju u jednom koraku, respektivno. Broj načina na koji se, u n koraka, može realizovati događaj da je cena porasla tačno j puta od n koraka dat je pomoću BinomialProcess[p][n] a realizovana cena bi bila S (u^j)(d^(n-j)). Ovde je p riziko-neutralna verovatnoća da cena jednom poraste. Sada ćemo napisati funkciju koja izračunava cenu kol opcije za proizvoljni broj koraka:

c0[σ_,r_,T_,S_,k_,n_]:=Module[{u=Exp[σ (Sqrt[(T/n)])],d=Exp[-σ(Sqrt[(T/n)])],R=Exp[r (T/n)],p},p=(R-d)/(u-d);Expectation[(1/(R^n)) Max[S u^j d^(n-j)-k,0],j\[Distributed]BinomialProcess[p][n]]]

U Module u, d i R su definisani preko input parametara funkcije. Sa druge strane, u definiciji Module samo smo deklarisali riziko-neutralnu verovatnoću p pošto njena definicija zahteva da se prvo odrede u, d i R. Ovo radi kako treba:

c0[σ,r,T,S,k,1]/.{σ->0.15017378172820744`,r-> 0.013,T->0.75,S-> 2168,k->2100}

c0[σ,r,T,S,k,2]/.{σ->0.15017378172820744`,r-> 0.013,T->0.75,S-> 2168,k->2100}

c0[σ,r,T,S,k,3]/.{σ->0.15017378172820744`,r-> 0.013,T->0.75,S-> 2168,k->2100}

Najzad, možemo da vidimo kako se sa povećanjem broja koraka menja cena opcija (svi ostali parametri su fiksirani):

ListLinePlot[c0[0.15017378172820744`,0.013,0.75,2168,2100,#]&/@Range[100],PlotRange->All]

c0[0.15017378172820744`,0.013,0.75,2168,2100,5000]

Konvergira ka nekoj određenoj vrednosti. Ta vrednost odgovara limesu neprekidnog trgovanja, t. j. Black-Scholes formuli.

Cena evropske put opcije za proizvoljno n

Razmotrimo sada kako bismo vrednovali evropsku put opciju u proizvoljnom broju koraka. Za to moramo samo da zamenimo cenu prilikom izvršenja pa umestoMax[S u^j d^(n-j) - k,0] koristimo Max[k-S u^j d^(n-j),0]. Sve ostalo je potpuno isto. Naime:

p0[σ_,r_,T_,S_,k_,n_]:=Module[{u=Exp[σ (Sqrt[(T/n)])],d=Exp[-σ(Sqrt[(T/n)])],R=Exp[r (T/n)],p},p=(R-d)/(u-d);Expectation[(1/(R^n)) Max[k-S u^j d^(n-j),0],j\[Distributed]BinomialProcess[p][n]]]

Primetimo da opet postoji konvergencija kada povećavamo broj koraka, n.

p0[0.15017378172820744`,0.013,0.75,2168,2100,1]

p0[0.15017378172820744`,0.013,0.75,2168,2100,2]

ListLinePlot[p0[0.15017378172820744`,0.013,0.75,2168,2100,#]&/@Range[100],PlotRange->All]

p0[0.15017378172820744`,0.013,0.75,2168,2100,5000]

Sada ćemo probati da nađemo egzaktni izraz koji c0 i p0 aproksimiraju u slučaju kada n teži beskonačnosti. U pitanju je Black-Scholes formula.

6. Vrednovanje evropske kol i put opcije u neprekidnom vremenu trgovanja

Raspodela verovatnoće binomnog stabla u slučaju velikog broja koraka

Vratimo se za trenutak izrazu za cenu kol opcije. Primetimo da je verovatnoća da cena ide gore j puta iz n koraka data binomnom raspodelom

BinomialProcess[p][n]

gde je verovatnoća p riziko-neutralna verovatnoća. Kakva je onda raspodela cene akcije? Ona se određuje na sledeći način:

raspodela[σ_,r_,T_,S_,n_]:=Module[{u=Exp[σ (Sqrt[(T/n)])],d=Exp[-σ(Sqrt[(T/n)])],R=Exp[r (T/n)],p},p=(R-d)/(u-d);TransformedDistribution[S u^j d^(n-j),j\[Distributed]BinomialProcess[p][n]]]

Razmotrimo sada raspodelu za iste vrednosti parametara kao u prethodnom primeru.

𝒟binom=raspodela[0.15017378172820744`,0.013,0.75,2168,5000];

Sada generišimo histogram za ovu raspodelu kako bismo sagledali njen približni oblik.

SmoothHistogram[RandomVariate[𝒟binom,500000]]

Izračunajmo njenu srednju vrednost, varijansku, kao i druga dva centralna momenta.

{Mean[𝒟binom],StandardDeviation[𝒟binom],Skewness[𝒟binom],Kurtosis[𝒟binom]}

Videćemo da ova raspodela u limesu odgovara SliceDistribution geometrijskog Brown-ovog kretanja.

Geometrijsko Brown-ovo kretanje u slučaju riziko-neutralne mere

Razmotrimo GeometricBrownianMotionProcess:

s=GeometricBrownianMotionProcess[r,σ,s0]

Primetimo da bi SliceDistribution ovog procesa u trenutku t bio:

s[t]

Očekivana cena akcije i njena varijansa, u trenutku t, su onda:

Mean[s[t]]//FullSimplify

Variance[s[t]]//FullSimplify

Vidimo da je očekivana vrednost akcije ekponencijalna funkcija vremena, a da je, u riziko-neutralnoj meri, r brzina rasta (ekponenta) očekivane vrednosti investicije. Ovaj izraz ne zavisi od rizika. Sa druge strane, varijansa cene akcije zavisi kako od r tako i od standardne devijacije. Konkretizujmo sada za slučaj prethodnih parametara:

s=GeometricBrownianMotionProcess[0.013,0.15017378172820744`,2168.]

Očekivana vrednost i druge karakteristike raspodele su date sledećim izrazima:

{Mean[s[0.75]],StandardDeviation[s[0.75]],Skewness[s[0.75]],Kurtosis[s[0.75]]}

Vidimo da raspodela implicirana binomnim modelom za dovoljno veliki broj koraka izvrsno aproksimira ovu lognormlanu raspodelu. Mogli bismo da vidimo kako bi izgledale simuliranje putanje kretanja cena akcije:

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

ListLinePlot[data]

Jednostavno je naći opšti izraz za cenu kol i put opcije koristeći model geometrijskog Brown-ovog kretanja za modeliranje cene akcije.

Monte Carlo pristup vrednovanju opcija

Odličan način da se stekne intuicija oko toga kako se vrednuju opcije jeste da iskoristimo Monte Carlo pristup. Naime, generišimo prvo skup mogućih realizacija vrednosti akcije prilikom izvršenja. To ćemo dobili koristeći raspodelu

moguceCene=RandomVariate[s[0.75],4000000];

Ako ih predstavimo preko histograma dobijamo nešto vrlo slično onome što smo imali kad smo koristili binomni model cena akcija:

SmoothHistogram[moguceCene]

Pretpostavimo da želimo da izračunamo cenu kol opcije sa cenom izvršenja k=2100. Kako će izgledali raspodela mogućih profita? Dobićemo je na osnovu formule da je profit= Max[mogucaCena- 2100,0]. Drugim rečima

profitKol=Max[#-2100.,0]&/@moguceCene;

Histogram[profitKol]

Primetimo da dobar deo realizacija cene vodi ka nultom profitu (u slučaju da je cena akcije posle 9 meseci ispod cene izvršenja, to jest ispod 2100). Vrednost kol opcije dobila bi se kao srednja vrednost mogućih profita diskontovana putem nerizične stope r. Stoga:

kolMC=Exp[-r T]Mean[profitKol]/.{r-> 0.013,T->0.75}

Na sličan način možemo da nađemo vrednost put opcije sa istom cenom izvršenja. Naime:

profitPut=Max[2100.-#,0]&/@moguceCene;

putMC=Exp[-r T]Mean[profitPut]/.{r-> 0.013,T->0.75}

Black-Scholes formule za cenu evropske kol i put opcije

Počnimo od izraza za geometrijsko Brownovo kretanje u riziko-neutralnoj meri:

s=GeometricBrownianMotionProcess[r,σ,s0];

Black-Scholes formula za cenu evropske opcije je diskontovana očekivana vrednost profita od njene realizacije:

c0=Exp[-r T]Refine[Expectation[Max[cena-k,0],cena\[Distributed]s[T]],k>0]

p0=Exp[-r T]Refine[Expectation[Max[k-cena,0],cena\[Distributed]s[T]],k>0]

Vrednosti kol i put opcije koje dobijamo, za iste parametre kao i ranije, su:

{c0,p0}/.{σ-> 0.15017378172820744`,r-> 0.013,s0-> 2168., k-> 2100.,T-> 0.75}

To je veoma blizu rezultatima Monte Carlo i binomnog modela. Black-Scholes formule za kol i put opciju i mogu se, jednostavnije, definisati ovako:

Φ[x_]:=CDF[NormalDistribution[],x]
kol[s0_,k_,σ_,r_,T_]:=Module[{d1=((Log[s0/k]+(r+((σ^2)/2))T)/(σ (Sqrt[T]))),d2=((Log[s0/k]+(r-((σ^2)/2))T)/(σ (Sqrt[T])))},s0 Φ[d1]-k Exp[-r T]Φ[d2]]
put[s0_,k_,σ_,r_,T_]:=Module[{d1=((Log[s0/k]+(r+((σ^2)/2))T)/(σ (Sqrt[T]))),d2=((Log[s0/k]+(r-((σ^2)/2))T)/(σ (Sqrt[T])))},-s0 Φ[-d1]+k Exp[-r T]Φ[-d2]]

kol[2168.,2100.,0.15017378172820744`,0.013,0.75]

put[2168.,2100.,0.15017378172820744`,0.013,0.75]