CommencerCommencer gratuitement

Utiliser la fonction uniroot pour trouver le YTM

La méthode par essais et erreurs est très fastidieuse. Une alternative 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 allez utiliser la fonction unrioot() pour trouver cette racine.

La fonction uniroot() nécessite de définir un vecteur de flux de trésorerie, 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 attendus de l’obligation (c’est‑à‑dire les paiements de coupon et le remboursement du principal).

Rappelons que le prix de l’obligation est de 95,79 \( et que l’obligation a une valeur nominale de 100 \), un taux de coupon de 5 % et une échéance à 5 ans.

Cet exercice fait partie du cours

Évaluation et analyse des obligations avec R

Afficher le cours

Instructions

  • Créez un vecteur de flux de trésorerie, cf, qui inclut le prix initial de l’obligation (négatif) et les paiements jusqu’à l’échéance (positifs).
  • Utilisez le code pré‑écrit pour créer une fonction simple de valorisation d’obligation, bval(), qui calcule la valeur de l’obligation à chaque période.
  • Utilisez le code pré‑écrit 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 cet exemple de code.

# 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