Z cvičení možno dostať maximálne 40 bodov.
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)
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ť:
BigCamelCase
, t.j. každé
slovo (vrátane prvého) sa začína veľkým písmenom,x[, 1]
,for
, if
,
while
sa píše medzera: while (TRUE) {}
,function(x) {}
,=
, <-
,
&&
, sa oddeľujú medzerami z oboch strán,+
a
-
: 2*x^2 + y^2
,if (y < 0) {
message("y is negative")
}
# TODO
. Po dokončení kódu tento komentár vymažte.# FIXME
. Po dokončení kódu tento komentár taktiež
vymažte.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.
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
Č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.
Viac o stratégiách sa môžete dočítať napríklad na portáli The Options Guide
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
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.
Nájdite kombinácie call a put opcií, ktoré majú nasledovné payoffy:
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.
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.
Viac úloh na precvičenie môžete nájsť v archíve cvičení