---
title: "Cvičenie 9"
author: "Ján Gašper"
date: "24 4. 2023"
output: html_document
---

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

# Ceny dlhopisov všeobecne

Okamžitú úrokovú mieru modelujeme pomocou stochastickej diferenciálnej rovnice:
$$
  dr = \mu(r, t) dt + \sigma(r, t) dw.
$$
Potom sa dá odvodiť parciálna diferenciálne rovnica pre cenu dlhopisu:
$$
  \frac{\partial P}{\partial t} + \big( \mu(r,t) - \lambda(r,t)\sigma(r,t) \big)\frac{\partial P}{\partial r} + \frac{\sigma^2}{2} \frac{\partial^2 P}{\partial r^2} - rP = 0.
$$
K tejto parciálnej diferenciálnej rovnici prislúcha okrajová podmienka, ktorá hovorí, že dlhopis v čase $T$ vypláca jeden dolár: $P(r, T) = 1$.

Ďalej existuje prevod medzi cenou dlhopisu a úrokovou mierou. Označme $P(t, T)$ cenu dlhopisu ktorý si kúpime v čase $t$ a ktorý v čase $T$ vyplatí hodnotu $1$:
$$
  P(t, T) = e^{-R(t, T) \cdot (T-t)},
$$
kde $R(t,T)$ je forwardová úroková miera z času $t$ po čas $T$. Tento vzorec hovorí, že dlhopis sa úročí forwarodovú úrokovou mierou $R(t, T)$ počas doby dlhej $T-t$.

Situácia je ale zvyčajne opačná: poznáme cenu dlhopisov $P$ a z nich chceme odvodiť forwardovú úrokovú mieru:
$$
  R(t, T) =  - \frac{\ln P(t, T)}{T-t}.
$$

# Vašíčkov model

Vašíčkov model je daný stochastickou diferenciálnou rovnicou v tvare
$$
  dr = \theta( \kappa - x)dt + \sigma\  dw
$$

Vo Vašíčkovom modeli uvažujeme konštantnú trhovú cenu rizika: $\lambda(r,t) \equiv \lambda = const.$ Na uľahčenie zápisu budeme značiť čas do splatnosti $\tau := T-t$. 

V tomto modeli existuje explicitné riešenie pre cenu dlhopisu, ktoré hľadáme v tvare:
$$
  P(r, \tau) = A(\tau) \cdot e^{-B(\tau) r},
$$
kde
$$
\begin{align*}
   \ln A(\tau) =& \left[\frac{1}{\kappa} (1-e^{-\kappa \tau}) - \tau \right]\left[\theta - \frac{\lambda \sigma}{\kappa} - \frac{\sigma^2}{2\kappa^2} \right] - \frac{\sigma^2}{4\kappa^3}(1-e^{-\kappa \tau})^2
   \\
   B(\tau) =& \frac{1-e^{-\kappa \tau}}{\kappa}
\end{align*}
$$



## Úloha

Zoberme parametre Vašíčkovho modelu článku z minulého cvičenia. Zvoľte si hodnotu okamžitej úrokovej miery a zakreslite výnosové krivky pre niekoľko rôznych trhových cien rizika.

### Zopár predbežných výpočtov

Vieme že cena dlhopisu $P(r, \tau)$ je na jednej strane $e^{-R(t, T) \tau}$ a na druhej strane $A(\tau) e^{-B(\tau) r}$.

Vyjadríme z toho úrokovú mieru $R$ pomocou funkcií $A, B$:
$$
  R(T, t) = \frac{-\ln A(\tau)}{\tau} + \frac{B r}{\tau}
$$

### Kód na doplnenie

```{r}
# parameters from last week
alpha <- 0.0046
beta <- -0.0487
sigma <- sqrt(0.0001)

kappa <- -beta
theta <- -alpha/beta

# spot interest rate
r0 <- 0.03  # try and change this

# market value of risk
lambda <- 0.1

# Time horizon will be 100 years
tau_max <- 100
tt <- seq(0, tau_max, length.out=1001)[-1] # We have to omit tau=0


# Term structure of interest rate
InterestRateTermStrucutre <- function(tau, r0, lambda){
  ln_A <- ((1 - exp(-kappa*tau))/kappa - tau)*(theta - lambda*sigma/kappa
   - sigma^2/(2*kappa^2)) - (sigma^2*(1 - exp(-kappa*tau))^2/(4*kappa^3))
  b <- (1 - exp(-kappa*tau))/kappa
  return() # TODO
}

# Plot 
r <- InterestRateTermStrucutre(tt, r0, lambda)
plot(tt, r, "l", xlab="čas do splatnosti", ylab="Úroková miera", lwd=2)
```

Ako sa mení priebeh výnosovej krivky, ak sa mení trhová cena rizika $\lambda$? Vykreslite grafy pre rozličné hodnoty $\lambda$.
```{r}
lambdas <- c(-2, -1, -0.5, -0.1, 0, 0.1, 0.5, 1, 2)
r0 <- 0.02
lambda <- -2
tau.max <- 100
tt <- seq(0, tau.max, length.out=1001)[-1]

# TODO
```


## Úloha

Zoberme parametre Vašíčkovho modelu článku z minulého cvičenia. Zvoľte si hodnotu trhovej ceny rizika. Pre niekoľko hodnôt okamžitej úrokovej miery zakreslite do jedného grafu výnosové krivky. Dokážte, že pre $\tau \to \infty$ úrokové miery so splatnosťou $\tau$ konvergujú k hodnote
$$
  R_\infty = \theta - \frac{\lambda \sigma}{\kappa} - \frac{\sigma^2}{2\kappa^2}
$$

Dôkaz nechávame na čitateľa. Stačí urobiť limitu pre $\tau \to \infty$ z funkcie $R = \frac{-\ln A(\tau)}{\tau} + \frac{B(\tau) r}{\tau}$.

### Kód na doplnenie

```{r}
alpha <- 0.0046
beta <- -0.0487
sigma <- sqrt(0.0001)

kappa <- -alpha/beta
theta <- -alpha/beta


lambda <- 0.1 # try and change this
tau_max <- 200 # may converge slowly
tt <- seq(0, tau_max, length.out=1001)[-1]

r_inf <- theta - lambda*sigma/kappa - sigma^2/(2*kappa^2)

r0s <- c(-0.05, -0.01, 0, 0.01, 0.05, 0.1) # different spot prices

# TODO
```


## Úloha
Zoberme parametre Vašíčkovho modelu článku z minulého cvičenia. Predpokladajme, že limita výnosových kriviek sa rovná trom štvrtinám limitnej hodnoty okamžitej úrokovej miery. Vypočítajte trhovú cenu rizika.

### Riešenie

Limita krátkodobých úrokových mier je $\theta$:
$$
  R_{\infty} = \frac{3}{4}\theta
  \\
  \lambda = ?
$$

```{r}
lambda <- 0
print(lambda)
# TODO
```
Pre overenie: malo by vyjsť $\lambda = 0,\!0123$.


## Úloha

Uvažujme parametre z predchádzajúcej otázky. Nájdite príklad takej hodnoty okamžitej úrokovej miery, pre ktorú nie je príslušná výnosový krivka monotónna.
```{r}
r0 <- 0.001

# This should not be monotone
r <- InterestRateTermStrucutre(tt, r0, lambda)
plot(tt, r, "l", xlab="čas do splatnosti", ylab="Úroková miera", lwd=2)
```

# Bonus (3b)

Pozrite si [stránku cvičení](http://www.iam.fmph.uniba.sk/institute/stehlikova/fd17/cv08.html). Vyriešte cvičenia z časti *Tvar výnosových kriviek*:

- Zoberme znovu parametre z minulého cvičenia. Predpokladajme, že limita úrokových mier je 11 percent a okamžitá úroková miera sa rovná 11 percentám. Pre akú maturitu je výnos maximálny. Výpočet skontrolujte nakreslením výnosovej krivky. 

- Zoberme znovu parametre z minulého cvičenia. Ak je okamžitá úroková mier rovná 10 percentám, výnosová krivka má nemonotónny priebeh a maximálny výnos má dlhopis so splatnosťou 23 rokov. Čomu sa rovná limita výnosových kriviek a čomu sa rovná trhová cena rizika? 