Zet je code om in een functie voor obligatiewaardering
In de vorige oefeningen heb je stap voor stap berekend wat een obligatie waard is. Maar al die stappen steeds herhalen voor veel obligaties is onhandig. Gelukkig kun je een functie maken die dezelfde berekeningen herhaaldelijk uitvoert voor verschillende obligaties.
De functie die je maakt, moet flexibel genoeg zijn om de belangrijkste kenmerken van de obligatie als input te geven. In aansluiting op ons eerdere voorbeeld moet de functie de nominale waarde, couponrente, resterende looptijd en yield kunnen verwerken.
In deze oefening maak je de functie bondprc die deze vier inputs gebruikt om de waarde van een obligatie te berekenen. Onthoud dat je een functie maakt met function(input 1, input 2, ...) { [regels code] }.
Deze oefening maakt deel uit van de cursus
Obligatiewaardering en -analyse in R
Oefeninstructies
- In je werkruimte staat een gedeeltelijk opgebouwde functie,
bondprc. Maak de functie af door hetfunction()-commando te construeren en de namen van vier inputs te geven:pvoor nominale waarde (par),rvoor couponrente,ttmvoor resterende looptijd (time to maturity) enyvoor yield. - Controleer dat de functie
bondprceen prijs van $95.79 geeft voor een obligatie met een nominale waarde van $100, 5% couponrente, 5 jaar tot aflossing en 6% yield to maturity.
Interactieve oefening met praktijkervaring
Probeer deze oefening door deze voorbeeldcode aan te vullen.
# Create function
bondprc <- ___(___, ___, ___, ___) {
cf <- c(rep(p * r, ttm - 1), p * (1 + r))
cf <- data.frame(cf)
cf$t <- as.numeric(rownames(cf))
cf$pv_factor <- 1 / (1 + y)^cf$t
cf$pv <- cf$cf * cf$pv_factor
sum(cf$pv)
}
# Verify prior result
bondprc(___, ___, ___, ___)