Organizácia cvičení

Cvičiaci

Hodnotenie

Z cvičení možno dostať maximálne 40 bodov.

  • 4 domáce úlohy po 5 – 10 bodov (v skupinkách veľkosti 1 – 3 členov, skupinky medzi sebou nekomunikujú)
  • 1 písomka za 15 bodov (samostatne, formou „open book”, možnosť opravnej písomky)
  • bonusové body (max. 10) – dobrovoľné domáce úlohy, bonusová aktivita na hodine
  • účasť na cvičeniach sa nehodnotí

R Markdown

Budeme pracovať v R markdown v prostredí RStudio. Markdown umožňuje jednoduché formátovanie textu, vytváranie nadpisov odrážok atď. Do týchto súborov si môžete dopsiovať vlastné poznámky a postrehy.

V RStudiu možno vytvoriť nový takýto dokument pomocou: File → New File → R Markdown. Vyplníte základné údaje o dokumente a vyberiete si formát, v ktorom sa má dokument zobraziť (html, pdf, doc). Dokument dokáže spúšťať kód a zobraziť jeho výstupy a zvládne aj \(\LaTeX\). Matematický text sa zobrazí v riadku (in-line), ak ho napíšete do dolárikov: \(a^2 = b^2 + c^2 - 2bc \cos \alpha\), alebo na somastatný riadok, ak použijete dvojitý dolár: \[f'(x) \overset{def}{=} \lim_{h\to 0} \frac{f(x + h) - f(x)}{h}.\]

Viac o markdowne sa dočítate v dokumentácii

Napísaný zdrojový kód treba skompilovať (uštrikovať, knit) do zvoleného formátu. Kompiláciu začnete tlačítkom s klbkom a ihlicami knit, alebo skratkou Ctrl + Shift + K. Na správne kompilovanie je potrebný balík knitr.

Ak sa kód má spustiť, za apostrofmi treba že kód sa spustí v jazyku R. Výstup z kódu sa zobrazí vo výslednom dokumente.

n <- 5
rnorm(n)
## [1] -1.3929738  1.5271911  1.5486204 -0.7149183  1.6890190

Takýto blok kódu možno vytvoriť aj pomocou klávesovej skratky Ctrl + Alt + I.

Na týchto cvičeniach budú existovať bloky kódu, ktorý treba doplniť. Takéto kódy majú okrem jazyka R vyznačený parameter eval=FALSE, ktorý treba po doplnení kódu vymazať.

n <- 5
rnorm(n)

Príručka štýlu

Pri písaní kódu si treba vybrať štýl a držať sa ho. Široko uznávanou príručkou je tidyverse. S miernymi modifikáciami ho používa aj google.

Počas týchto cvičení budeme dodržiavať:

  • názvy funkcií sa píšu formou BigCamelCase, t.j. každé slovo (vrátane prvého) sa začína veľkým písmenom,
  • pred čiarkou sa medzera napíše nikdy, za čiarkou vždy: x[, 1],
  • pred a za zátvorkami pri for, if, while sa píše medzera: while (TRUE) {},
  • medzera sa píše aj za zátvorkami v ktorých sú argumenty funkcie: function(x) {},
  • operátory =, <-, &&, sa oddeľujú medzerami z oboch strán,
  • pri viacčlene sa oddeľujú medzerou znaky + a -: 2*x^2 + y^2,
  • vnútro cyklu alebo podmienky sa zarovnáva o dve medzery:
if (y < 0) {
  message("y is negative")
}
  • Miesto na ktoré treba dopísať kód bude označené komentárom # TODO. Po dokončení kódu tento komentár vymažte.
  • Miesto na ktoré treba opraviť časť kódu bude označené komentárom # FIXME. Po dokončení kódu tento komentár taktiež vymažte.

Európske opcie

Reálne ceny opcií

Ceny opcií sa dajú pozrieť online na yahoo finance, alebo na google finance. Symboly opcie majú svoj štandardný tvar, v ktorom sú uvedené všetky potrebné detaily opcie. Tento tvar je možné použiť aj pri automatizovanom načítavaní dát.

Payoff

Napíšte funkcie ktoré vrátia payoff call a put opcie, ak je exspiračná cena rovná E a cena podkladového aktíva v čase exspirácie S. Funkcia musí zbehnúť aj keď je premenná S alebo E vektor. Po dokončení tento úlohy vymažte z kódu eval=FALSE. Návod: nájdite funkciu pre pozložkové maximum dvoch vektorov.

CallPayoff <- function(S, E)
{
  # TODO
}

PutPayoff <- function(S, E)
{
  # TODO
}

Vyskúšajte tieto funkcie pre exspiraču cenu \(E = 250\) a cenu akcie \(S = 200, 201, \ldots , 300\).

S <- 200:300
E <- 250

plot(S, PutPayoff(S, E), "l") # "l" znamená čiarový graf

Opčné stratégie

Často portfólio obsahuje viacero opcií. V tom prípade hovoríme o opčných stratégiách. Stratégiu volí investor podľa svojich očakávaní o budúcom vývine ceny podkladového aktíva.

Typy stratégií

  • Investori, ktorí očakávajú, že cena podkladového aktíva bude rásť sa v žargóne nazývajú bulls (býci). Stratégie, ktoré prinesú profit, ak sa tento predpoklad naplní sa nazývajú bullish (býčie).
  • Investori, ktorí naopak očakávajú, že cena podkladového aktíva bude klesať sa nazývajú bears (medvede). Stratégie, ktoré prinesú profit, ak sa tento predpoklad naplní sa nazývajú bearish (medvedie).
  • Niektoré stratégie sú postavené na tom, či cena podkladového aktíva sa zmení.
    • Stratégie, pri ktorých sa predpokladá, že sa cena aktíva výrazne zmení, sa nazývajú short (krátke). Tento názov je odvodený od tzv. short pozícií, pri ktorých má investor záporný počet nejakého cenného papiera.
    • Stratégie, ktoré predpokladajú že sa cena aktíva veľmi nezmení, sa nazývajú long (dlhé).
    • Existuje veľa druhov takýchto stratégií.

Viac o stratégiách sa môžete dočítať napríklad na portáli The Options Guide

Úloha: tri stratégie

Zoberieme opčné stratégie zo stránky http://www.iam.fmph.uniba.sk/institute/stehlikova/fd17/kody/strategie.R. Interpretujte tieto stratégie: Koľko akých opcií investor kúpil/predal? Koľko stáli jednotlivé opcie? Aké boli očakávania investora o budúcom pohybe ceny akcie?

Profit1 <- function(S){
  call1 <- CallPayoff(S,510)
  call2 <- CallPayoff(S,517.5)
  14*((call1-36.4)+(-call2+29.55))
}

Profit2 <- function(S) {
  8*CallPayoff(S,530)-16*CallPayoff(S,550)+8*CallPayoff(S,570)-39.2
}

Profit3 <- function(S){
  call510<-CallPayoff(S,510)
  call550<-CallPayoff(S,550)
  call570<-CallPayoff(S,570)
  5*(call510-36.4 - 2*(call550-12) + call570-6.3)
}

Vykreslite profit diagramy, tak ako na obrázku.

# Po dokončení vymažte `eval=FALSE`

# S pôjde od 500 do 600
S <- 500:600

p1 <- Profit1(S)
p2 <- Profit2(S)
p3 <- Profit3(S)

# Vykreslenie profitu jednotlivých stratégií
# TODO

# vodorovná čiara
abline(0, 0)

Doplňte výpočet, ktorý do grafu zakreslí, ktorá stratégia prináša pri danej cene akcie najvyšší zisk. Červená farba znamená, že všetci sú v strate, inak farba zodpovedá farbe profit diagramu najziskovejšej stratégie.

# Najziskovejšia stratégia
# TODO

Úloha: butterfly stratégia

Investor očakáva, že cena podkladového aktíva bude v čase exspirácie okolo hodnoty \(S = 100\). Od svojej stratégie navyše požaduje aby mala zdola ohraničený profit. Zvolil preto stratégiu long butterfly, ktorej profit je znázornený na obrázku:

- Čo vieme povedať o cenách opcií, ktoré použil? - Vytvorte portfólio, ktoré má rovnaký profit, požijúc iba call opcie. - Vytvorte portfólio, ktoré má rovnaký profit, požijúc iba put opcie.

Úloha: stratégie z obrázka

Nájdite kombinácie call a put opcií, ktoré majú nasledovné payoffy:

Ohraničenia na ceny a arbitráž

Ak má nejaké portfólio profit, ktorý nadobúda iba nezáporné hodnoty, ide o arbitráž: kúpou tohto portfólia s istotou nič nestratím a prinajlepšom niečo získam.

Podľa princípu no arbitrage sa dá napr. ukázať, že cena call opcie musí byť konvexnou funkciou exspiračnej ceny.

Úloha (zo semestrálnej písomky)

Uvažujme nasledujúce ceny put opcií s rovnakým časom exspirácie a na rovnaké podkladové aktívum:

exspiračná cena cena put opcie
20 10
25 12
40 15
e <- c(20, 25, 40)
price <- c(10, 12, 15)
plot(e, price, pch=19, xlab="Exspiračná cena", ylab="Cena opcie")

Nájdite arbitrážnu príležitosť a nakreslite je profit diagram.

Ďalšie úlohy

Viac úloh na precvičenie môžete nájsť v archíve cvičení