Probleme de fonction d'optimisation

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Léo Schenk
Messages : 8
Enregistré le : 09 Avr 2018, 07:38

Probleme de fonction d'optimisation

Messagepar Léo Schenk » 09 Avr 2018, 09:01

Bonjour à tous,

Je suis nouveau sur le forum et j'aurais besoin d'aide. Je vous explique le problème: je dois calculer le taux de rendement actuariel (TRA) d'une obligation sachant tous ses paramètres: date de valorisation, maturité, taux de coupon, nominal. Je connais la valeur de marché de l'obligation donc je peux en déduire son taux de rendement actuariel. J'arrive à le faire en faisant une boucle sur le TRA puis faire graphiquement mais je dois traiter des centaines de millier d'obligation, donc le mieux serait de faire appelle à une fonction d'optimisation qui permet de déterminer le TRA.

Je vous met le code simplifié de valorisation d'une obligation.

Code : Tout sélectionner

# Fonction donnant le prix d'une obligation

Bond=function(Date_Valorisation,Maturite,Nominal,Coupon,TRA){
  actu=1:(Maturite-Date_Valorisation)
  Flux=c(rep(Nominal*Coupon/(1+TRA)^actu,Maturite-Date_Valorisation))
  Remboursement=Nominal/(1+TRA)^actu[length(actu)]
  Prix=sum(Flux,Remboursement)
  return(Prix)
}

Optimisation=function(Date_Valorisation,Maturite,Nominal,Coupon,TRA,VM){
  actu=1:(Maturite-Date_Valorisation)
  Flux=c(rep(Nominal*Coupon/(1+TRA)^actu,Maturite-Date_Valorisation))
  Remboursement=Nominal/(1+TRA)^actu[length(actu)]
  Ecart=sum(Flux,Remboursement)-VM
  return(Ecart)
}

# Je cherche le TRA sachant tous les autres parametres du probleme tel que le prix de
# marche egalise la formule du prix de l'obligation

Date_Valorisation=0 # on se place a aujourd'hui
Maturite=5  # maturite de l'obligation
Nominal=100 # prix d'achat de l'obligation
# Le remboursement est considere au pair, donc 100% du prix d'achat
Coupon=0.04 # taux de coupon
P=Bond(Date_Valorisation = 0,Maturite = 5,Nominal = 100,Coupon = 0.04,TRA = 0.0565) # si TRA = 5.65%
# Prix formule ferme = 161.0273 en imaginant que l'on connait le TRA

# TRA inconnu
VM=161.0273  # fourni par le marche par exemple

# L'algorithme d'optimisation devrait me donner un TRA  de 5.65%
# On donne une recherche de TRA entre 0 et 50 %

TRA=0.025 # Point de depart (initialisation)
solution1=optim(TRA,f = Optimisation,Date_Valorisation=0,Maturite=5,Nominal=100,Coupon=0.04,VM=161.0273 ) # probleme
solution2=optim(TRA, f=Optimisation, Date_Valorisation=0,Maturite=5,Nominal=100,Coupon=0.04,VM=161.0273 , lower = 0, upper = 0.5, method = "Brent")
# probleme, il va directement sur une borne sup, on devrait retomber sur TRA= 5.65%

solution3=optim(TRA, f=Optimisation, Date_Valorisation=0,Maturite=5,Nominal=100,Coupon=0.04,VM=161.0273 , lower = 0, upper = 0.5, method = "L-BFGS-B")
# même probleme

# Je pose peut etre mal le probleme


Merci de vos retours

Léo Schenk
Messages : 8
Enregistré le : 09 Avr 2018, 07:38

Re: Probleme de fonction d'optimisation

Messagepar Léo Schenk » 09 Avr 2018, 09:19

Re bonjour,

J'ai résolu le problème, il fallait juste ajouter la valeur absolu (c'était tout bête).
Désolé du dérangement.

Bonne journée

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Probleme de fonction d'optimisation

Messagepar Logez Maxime » 09 Avr 2018, 09:53

Bonjour,

Si tu regardes l'aide la fonction optim tu verrais quelle cherche le(s) paramètre(s) qui minimise la fonction. Ta fonction est posiitive pour TRA = 0 et négative pour TRA = 0.5 donc il est logique que çe soit cette valeur qui soit renvoyée par optim. Si tu cherches à annuler une fonction regarde du côté de uniroot :

Code : Tout sélectionner

uniroot(Optimisation, c(0,0.5), Date_Valorisation=0,Maturite=5,Nominal=100,Coupon=0.04,VM=161.0273)
$root
[1] 0.05650913

$f.root
[1] -0.005367374

$iter
[1] 5

$init.it
[1] NA

$estim.prec
[1] 6.103516e-05
Et tu tombes bien sur TRA = 0.05650913.

Cordialement,
Maxime

Léo Schenk
Messages : 8
Enregistré le : 09 Avr 2018, 07:38

Re: Probleme de fonction d'optimisation

Messagepar Léo Schenk » 11 Mai 2018, 12:29

Merci de votre aide


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité