Bonjour à tous,
Débutant en VBA et étudiant en finance, je souhaite automatiser, sous excel ,en VBA, la méthode du "bootstrap".
Exemple de ladite méthode (c'est très certainement trop exhaustif mais je pense qu'il est nécessaire de s'attarder dessus pour mieux comprendre, je m' excuse d'avance pour la lourdeur du message...) :
Obligation 1 : Principal : 100, maturité : 0.5, coupon : 0, prix : 97.5, taux ZC : ?
obligation 2 : principal : 100 , maturité : 1.0, coupon : 0, prix 90.0, taux ZC : ?
obligation 3 : principal : 100, maturité 1.5, coupon : 8, prix : 96.0, taux ZC : ?
Le but est donc de trouver les Taux ZC.
Si le coupon a une valeur nulle, le Taux ZC vaut alors :
ZC = LN(principal/prix) / maturité. le premier donne 10.127%, le second 10.536 %.
Si le coupon n'est pas nul (le troisième) :
ZC = - [ LN ( 96.0 / (8*exp(-0.10127*0.5)+8*exp(-0.10536*1) ) / (100+8) ] / 1.5
Nous avons donc eu besoin des Taux ZC 1 et 2 pour trouver le 3.
Ma question est donc :
Quelle boucle utiliser pour calculer ces taux, quand le coupon n'est pas nul ? j'ai pensé au code suivant (pour le le cas où le coupon est nul, c'est-à-dire les deux premiers) :
sur excel, on prendra une 1ère colonne pour le principal, une seconde pour la maturité, une 3ème pour le coupon, 4ème pour le prix, 5ème pour les ZC cherché :
Mais comment faire pour coder le calcul du 3eme ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Sub ZC() Range("D4").Select Set Plage_ZC = Range(Selection, Selection.End(x1down)).Offset(0, 1) For Each cell In Plage_ZC If cell.Offset(0, -2).Value = 0 Then Plage_ZC.Value.FormulaR1C1 = "=LN(Cell.offset(0,-4)/cell.offset(0,-1)*cell.offset(0,-3))"
(Si quelqu'un a réussi à me suivre...)
Merci d'avance !
Partager