Začněte nyníZačněte zdarma

Použití funkce uniroot k nalezení YTM

Metoda pokus–omyl je velmi zdlouhavý přístup. Lepší alternativou je použít algoritmus, který práci udělá za tebe. V tomto konkrétním případě jde o nalezení kořene funkce.

V tomto cvičení použiješ funkci uniroot() k nalezení tohoto kořene.

Funkce uniroot() vyžaduje, abys sestavil/a vektor peněžních toků cf, jehož první prvek tvoří cena dluhopisu (jako záporné číslo) a zbývající prvky představují peněžní toky, které od dluhopisu očekáváš (tj. kuponové platby a splátka jistiny).

Připomeň si, že cena dluhopisu je 95,79 \(, nominální hodnota je 100 \), kuponová sazba 5 % a dluhopis má 5 let do splatnosti.

Toto cvičení je součástí kurzu

Oceňování a analýza dluhopisů v R

Zobrazit kurz

Pokyny k cvičení

  • Vytvoř vektor peněžních toků cf, který obsahuje počáteční cenu dluhopisu (zápornou) a platby až do splatnosti (kladné).
  • Pomocí předpřipraveného kódu vytvoř jednoduchou funkci pro ocenění dluhopisu bval(), která vypočítá hodnotu dluhopisu v každém časovém období.
  • Pomocí předpřipraveného kódu vytvoř funkci ytm() s využitím uniroot().
  • Zavolej ytm() se svým vektorem cf a zjisti výnos dluhopisu do splatnosti.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

# Create cash flow vector
cf <- c(___, ___, ___, ___, ___, ___)

# Create bond valuation function
bval <- function(i, cf,
     t=seq(along = cf))
     sum(cf / (1 + i)^t)

# Create ytm() function using uniroot
ytm <- function(cf) {
    uniroot(bval, c(0, 1), cf = cf)$root
}

# Use ytm() function to find yield


Upravit a spustit kód