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
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ímuniroot(). - Zavolej
ytm()se svým vektoremcfa 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