Aan de slagBegin gratis

Gebruik de functie uniroot om de YTM te vinden

Trial-and-error is een erg omslachtige methode. Een alternatief is een algoritme dat het werk voor je doet. In dit geval is de oplossing hetzelfde als het vinden van de nul van een functie.

In deze oefening gebruik je de functie unrioot() om de nul te vinden.

De functie uniroot() vraagt ons een vector met kasstromen, cf, op te zetten die begint met de prijs van de obligatie (als negatief getal) als eerste element, gevolgd door de kasstromen die je van de obligatie verwacht te ontvangen (dus coupon- en aflossingsbetalingen) als de overige elementen.

Onthoud dat de prijs van de obligatie $95.79 is en dat de obligatie een nominale waarde van $100 heeft, een couponrente van 5% en een looptijd van 5 jaar.

Deze oefening maakt deel uit van de cursus

Obligatiewaardering en -analyse in R

Bekijk cursus

Oefeninstructies

  • Maak een vector met kasstromen, cf, die de initiële obligatieprijs (negatief) en betalingen tot aan de einddatum (positief) bevat.
  • Gebruik de voorgecodeerde regels om een eenvoudige obligatiewaarderingsfunctie, bval(), te maken die de waarde van de obligatie per periode berekent.
  • Gebruik de voorgecodeerde regels om de functie ytm() te maken met uniroot().
  • Gebruik ytm() met je cf-vector om de yield to maturity van de obligatie te vinden.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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


Code bewerken en uitvoeren