---
title: "Cvičenie 4"
author: "Finančné deriváty"
#date: "22. 4. 2021"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

# Black-Scholesov model: delta akcie

## Zaistenie portfólia a delta hedžing

Delta hedžing sa používa na zaistenie portfólia proti posunu ceny podkladového aktíva pomocou vhodnej kombinácie akcií a opcií. Pri odvodení Black-Scholesovej rovnice sme mali portfólio $$
  1\ \text{opcia} - \Delta\ \text{akcií}
$$ A pre vhodne zvolenú deltu sme dostali bezrizikové portfólio $$
  \Delta = \frac{\partial V}{\partial S},
$$ resp. v bezrizikovom portfóliu musí platiť: $$
  \Delta = -\frac{\#\text{akcií}}{\#\text{opcií}}
$$

Ak by sme poznali hodnotu $\frac{\partial V}{\partial S}$, môžeme v portfóliu eliminovať riziko. V Black-Scholesovom modeli sa dá delta *call* opcie, napísať ako $\Delta = \Phi(d_1)$, ak akcia nevypláca dividendy. Implementujte funkciu, ktorá vypočíta deltu pre put opciu

```{r}
CallValue <- function(S, E, r, sigma, tau, q=0) {
  d1 <- (log(S/E) + (r - q + 0.5*sigma^2)*tau)/(sigma*sqrt(tau))
  d2 <- (log(S/E) + (r - q - 0.5*sigma^2)*tau)/(sigma*sqrt(tau))
  
  return(s*exp(-q*tau)*pnorm(d1) - e*exp(-r*tau)*pnorm(d2))
}

PutValue <- function(S, E, r, sigma, tau, q=0) {
  d1 <- (log(S/E) + (r - q + 0.5*sigma^2)*tau)/(sigma*sqrt(tau))
  d2 <- (log(S/E) + (r - q - 0.5*sigma^2)*tau)/(sigma*sqrt(tau))
  
  return(-s*exp(-q*tau)*pnorm(-d1) + e*exp(-r*tau)*pnorm(-d2))
}
```

```{r}
CallDelta <- function(S, E, r, sigma, tau) {
  d1 <- (log(S/E) + (r + 0.5*sigma^2)*tau)/(sigma*sqrt(tau))
  
  return(pnorm(d1))
}

PutDelta <- function(S, E, r, sigma, tau){
  # TODO
}
```

## Úloha 1: Delta hedžing

Cena akcie dnes je 20 USD, jej volatilita je 0.3 a úroková miera je 0.5 percenta.

```{r}
# TODO
```

Zaujíma nás počet akcií v portfóliu ak sme...

### a)

vypísali 1000 call opcií s exspiračnou cenou 25 USD a exspiráciou o pol roka,

```{r}
# TODO
```

### b)

vypísali 1000 put opcií s exspiračnou cenou 20 USD a exspiráciou o pol roka,

```{r}
# TODO
```

### c)

kúpili 1000 call opcií s exspiračnou cenou 30 USD a exspiráciou o pol roka

```{r}
# TODO
```

### d)

kúpili 1000 put opcií s exspiračnou cenou 20 USD a exspiráciou o pol roka,

```{r}
# TODO
```

## Úloha 2: Rôzne časy do exspirácie

Nasledovný graf zobrazuje deltu troch call opcií ako funkcií ceny akcie. Tieto opcie majú rôzny čas do exspirácie. **1 deň, 1/2 roka, 2 roky**. Ostatné parametre sú rovnaké. Priraďte časy exspirácie ku grafom. Svoju odpoveď overte výpočtom.

![](http://www.iam.fmph.uniba.sk/institute/stehlikova/fd17/cv03_files/cv11.png)

```{r}
# TODO
```

## Úloha 3: Limita delty

Vypočítajte limitu delty, pre $\tau\to 0^+$ a pre $\tau \to \infty$. Treba rozlíšiť prípady $S>E, S=E, S<E$.

Overte svoje riešenie grafickým výpočtom:

```{r}
S <- 50
r <- 0.005
sigma <- 0.5
tau <- seq(0, 5, length.out=501)

# S > E
E <- 40
v <-  CallDelta(S, E, r, sigma, tau)
plot(tau, v, type="l", col="blue", ylim = c(0,1), ylab = "delta call opcie" )

# S = E
E <- 50
v <- CallDelta(S, E, r, sigma, tau)
lines(tau, v, type="l", col="red" )

# S < E
E <- 60
v <- CallDelta(S, E, r, sigma, tau)
lines(tau, v, type="l", col="green" )

# limita
abline(0.5, 0) # FIXME
```

## Úloha 4: Dividendy

Napíšte funkciu, ktorá vráti deltu pre *call* a *put* opcie v prípade, že akcia vypláca dividendy.

```{r}
CallDelta <- function(s, e, r, signa, tau, q = 0) {
  # TODO  
}

PutDelta <- function(s, e, r, signa, tau, q = 0) {
  # TODO  
}
```

# Iné greeks

Pozrite sa aké iné greeks sa používajú. Pomôžte si [wikipédiou](https://en.wikipedia.org/wiki/Greeks_(finance)).

## Bonus: greeks numericky (2b)

Implementujte približný výpočet delty akcie pomocou aproximácie prvej derivácie: $$
 \frac{\partial V}{\partial S} \doteq \frac{V(S+h, t) - V(S-h, t)}{2h}
$$

Podobne implementujte výpočet gamy a vegy. Získané hodnoty porovnajte s presnými hodnotami nájdenými podľa vzorca pre call opciu a put opciu. Použite hodnoty $S = 50, E = 45, \sigma = 0,\!5$ a $\tau = 1$.

## Bonus: iná limita (2b)

V článku [A Black--Scholes user's guide to the Bachelier model](https://arxiv.org/pdf/2104.08686.pdf) sa píše, že cena *call* opcie *at the money* (t.j. keď je exspiračná cena rovná cene podkladového aktíva) sa dá pre krátky čas do exspirácie aproximovať ako: $$
  Call(E=S) \approx 0,\!4 \sigma S \sqrt \tau
$$

-   Vypočítajte limitu $$
    \lim_{\tau \to 0^+}\frac{Call(E=S)}{\sqrt \tau},
    $$ kde $Call(E=S)$ je Black-Scholesova cena *call* opcie *at the money*. Vysvetlite ako to súvisí s aproximáciou vyššie a zdôvodnite v nej hodnotu $0,\!4$.
-   Do obrázka nakreslite ako sa mení cena *call* opcie *at the money* v závislosti na čase do exspirácie. Na vodorovnej osi bude $\tau$ a na zvislej cena opcie. Použite parametre $S = E = 20, r = 0,\!04$ a $\sigma = 0,\!25$.

# Domáca úloha (5b)

Domácu úlohu odovzdajte do stredy 20.03.2024 (vrátane) mailom s predmetom **FD24 -- nick**. V riešení uveďte mená všetkých členov skupinky.

## Úloha 1: Mocninová opcia (3b)

Nech sú splnené všetky predpoklady Black-Scholesovho modelu. Nájdite cenu derivátu, ktorý v čase exspirácie $T$ vyplatí $(S_t)^n$. Použite ansatz v tvare $V(S, t) = S^n \cdot A(t)$, kde $A(t)$ je nejaká funkcia.

Koľko kusov tohto derivátu treba nakúpiť/predať, aby sme zaistili 1000 akcií pomocou delta hedžingu? Dnešná cena akcie je $S = 50$, úroková miera je $r = 0,\! 2\%$ a volatilita podkladového aktíva je $\sigma = 40\%$.

## Úloha 2: Dve opcie (2b)

Uvažujme európsku *call* a *put* opciu na to isté aktívum s tým istým časom do exspirácie $\tau = 4$ a s exspiračnou cenou $E=70$. Podkladové aktívum nevypláca dividendy. Vieme že dnešná cena akcie je $60$ a *call* opcia je o pätnásť centov drahšia ako *put* opcia. Vypočítajte úrokovú mieru.

# Odovzdanie bonusov

Bonusové úlohy odovzdajte do 6 dní mailom s predmetom **FD24 -- nick**, kde **nick** je vami zvolená prezývka skupiny.
