ÎncepețiÎncepe gratuit

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

Vezi cursul

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 ajutorul uniroot().
  • Aplică funcția ytm() cu vectorul cf pentru 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


Editează și rulează codul