Utiliser la fonction uniroot pour trouver le YTM
La méthode par essais et erreurs est très fastidieuse. Une autre option consiste à utiliser un algorithme qui fait le travail pour vous. Dans ce cas précis, la solution du problème revient à trouver la racine d'une fonction.
Dans cet exercice, vous utiliserez la fonction unrioot() pour trouver la racine.
La fonction uniroot() exige que l'on crée un vecteur de flux monétaires, cf, dont le premier élément est le prix de l'obligation (en nombre négatif) et dont les éléments suivants sont les flux que vous prévoyez recevoir de l'obligation (c.-à-d. les coupons et le remboursement du capital).
Rappelons que le prix de l'obligation est de 95,79 \( et qu'elle a une valeur nominale de 100 \), un taux de coupon de 5 % et une échéance de 5 ans.
Cette activité fait partie du cours
Évaluation et analyse des obligations avec R
Instructions de l’exercice
- Créez un vecteur de flux monétaires,
cf, qui comprend le prix initial de l'obligation (négatif) et les versements jusqu'à l'échéance (positifs). - Utilisez le code déjà fourni pour créer une fonction simple d'évaluation d'obligation,
bval(), qui calcule la valeur de l'obligation à chaque période. - Utilisez le code déjà fourni pour créer la fonction
ytm()avecuniroot(). - Utilisez
ytm()avec votre vecteurcfpour trouver le rendement à l'échéance de l'obligation.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# 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