Zacznij terazZacznij za darmo

Użyj funkcji uniroot, aby znaleźć YTM

Metoda prób i błędów jest bardzo żmudna. Lepszym rozwiązaniem jest zastosowanie algorytmu, który wykona tę pracę za ciebie. W tym przypadku szukane rozwiązanie sprowadza się do znalezienia miejsca zerowego funkcji.

W tym ćwiczeniu użyjesz funkcji uniroot(), aby wyznaczyć to miejsce zerowe.

Funkcja uniroot() wymaga przygotowania wektora przepływów pieniężnych cf, w którym pierwszy element to cena obligacji (jako liczba ujemna), a pozostałe elementy to oczekiwane płatności z tytułu obligacji (czyli kupony i spłata wartości nominalnej).

Przypominamy, że cena obligacji wynosi 95,79 USD, wartość nominalna to 100 USD, oprocentowanie kuponu wynosi 5%, a do wykupu pozostało 5 lat.

To ćwiczenie jest częścią kursu

Wycena i analiza obligacji w R

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz wektor przepływów pieniężnych cf, który zawiera początkową cenę obligacji (jako wartość ujemną) oraz płatności do terminu wykupu (jako wartości dodatnie).
  • Skorzystaj z gotowego kodu, aby utworzyć prostą funkcję wyceny obligacji bval(), obliczającą wartość obligacji w każdym okresie.
  • Skorzystaj z gotowego kodu, aby zdefiniować funkcję ytm() przy użyciu uniroot().
  • Użyj funkcji ytm() z wektorem cf, aby wyznaczyć rentowność obligacji do wykupu.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# 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


Edytuj i uruchom kod