Folosește funcția uniroot pentru a găsi YTM
Metoda încercărilor repetate este un proces foarte laborios. O alternativă este să folosești un algoritm care face treaba în locul tău. În acest caz particular, soluția problemei este echivalentă cu găsirea rădăcinii unei funcții.
În acest exercițiu, vei folosi funcția uniroot() pentru a găsi rădăcina.
Funcția uniroot() necesită definirea unui vector de fluxuri de numerar, cf, care începe cu prețul obligațiunii (ca număr negativ) ca prim element, urmat de fluxurile de numerar pe care te aștepți să le primești din obligațiune (adică plățile cupoanelor și ale principalului) ca elemente rămase.
Reamintește-ți că prețul obligațiunii este de 95,79 USD, iar obligațiunea are o valoare nominală de 100 USD, o rată a cuponului de 5% și o scadență de 5 ani.
Acest exercițiu face parte din cursul
Evaluarea și analiza obligațiunilor în R
Instrucțiuni pentru exercițiu
- Creează un vector de fluxuri de numerar,
cf, care include prețul inițial al obligațiunii (negativ) și plățile până la scadență (pozitive). - Folosește codul deja scris pentru a crea o funcție simplă de evaluare a obligațiunilor,
bval(), care calculează valoarea obligațiunii la fiecare perioadă de timp. - Folosește codul deja scris pentru a crea funcția
ytm()cu ajutoruluniroot(). - Aplică funcția
ytm()cu vectorulcfpentru a găsi randamentul până la scadență al obligațiunii.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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