1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| Public Sub NewtonRaphson()
'Déclaration des variables utilisées par notre programme
Dim ValeurNominale As Double
Dim ValeurDeRemboursement As Double
Dim TauxIntérêtCoupons As Double
Dim DuréeDeVieObligation As Double
Dim PrixObligation As Double
Dim TauxIntérêtEstimé As Double
Dim RendementObligation As Double
Dim Itération As Integer
'Permet la saisie de données nécessaire afin d'exécuter le programme correctement
ValeurNominale = InputBox("Veuillez entrer la valeur nominale de votre obligation. Par exemple: 100")
ValeurDeRemboursement = InputBox("Veuillez entrer la valeur de remboursement de votre obligation. Par exemple: 100")
TauxIntérêtCoupons = InputBox("Veuillez entrer le taux d'intérêt de vos coupons. Par exemple: 0.08")
DuréeDeVieObligation = InputBox("Veuillez entrer la durée de vie de votre obligation. Par exemple: 6")
PrixObligation = InputBox("Veuillez entrer le prix de votre obligation. Par exemple: 90")
'k
'Permet de calculer le "rendement" de l'obligation
RendementObligation = (PrixObligation - ValeurDeRemboursement) / ValeurDeRemboursement
'i0
'Notre première valeure du taux d'intérêt estimée
'Notez que le numérateur correspond à la portion moyenne d'intérêt dans chaque coupon
'Notez que le dénominateur correspond au montant moyen investi à chaque période
TauxIntérêtEstimé = (TauxIntérêtCoupons - (RendementObligation / DuréeDeVieObligation)) / (1 + (((DuréeDeVieObligation + 1) * RendementObligation) / (2 * DuréeDeVieObligation)))
'Itération de Newton
For Itération = 0 To 250
'Ecrit le numéro de l'itération dans la feuille de calcul
Range("A1").Offset(Itération, 0) = Itération
'Ecrit le TauxIntérêtEstimé dans la feuille de calcul
Range("B1").Offset(Itération, 0) = TauxIntérêtEstimé * (1 + (((TauxIntérêtCoupons * ((1 - ((1 + TauxIntérêtEstimé) ^ (-DuréeDeVieObligation))) / (TauxIntérêtEstimé))) + ((1 + TauxIntérêtEstimé) ^ (-DuréeDeVieObligation)) - (PrixObligation / ValeurDeRemboursement)) / (((TauxIntérêtCoupons * ((1 - ((1 + TauxIntérêtEstimé) ^ (-DuréeDeVieObligation))) / (TauxIntérêtEstimé))) + (DuréeDeVieObligation * (TauxIntérêtEstimé - TauxIntérêtCoupons) * ((1 + TauxIntérêtEstimé) ^ (-(DuréeDeVieObligation + 1))))))))
Next Itération
End Sub |