CommencezCommencez gratuitement

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

Voir le cours

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() avec uniroot().
  • Utilisez ytm() avec votre vecteur cf pour 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


Modifier et exécuter le code