Code de Boostrapping methode pour construire Taux zéro coupon

Fermé
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 - 14 mars 2017 à 09:04
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 - 15 mars 2017 à 08:16
bonjour à tous,

je suis un élève débutant en vba et en finance , j'ai besoin de construire le taux à zéro coupon par la méthode de boostrapping et malgré ma recherche dans les forums et les sites et j'ai déjà essayé à programmer un programme mais je n'arrive pas à implimenter ce code . je m'adresse à vous pour m'aider à avoir ce code sous vba en vous remerciant d'avance .
A voir également:

3 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié par cs_Le Pivert le 14/03/2017 à 17:03
Bonjour,

Voir cette vidéo

https://www.youtube.com/watch?v=BaL14-C8SeI

et télécharger l'exemple. Le lien est en bas dans les commentaires


@+ Le Pivert
1
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
14 mars 2017 à 20:38
Bonsoir cs_Le Pivert,

vraiment je vous remercie encore et toujours pour votre intérêt , cependant je pense que le vidéo que vous me proposez ne touche le problème en coeur.Ainsi , je vous explique le problème berièvement et je vous donne ma proposition en souhaitant que vous m'aider et je vous remercie pour votre patience pour lire les explications suivantes:
En effet la méthode consiste à calculer les taux zéro coupon connaissant les maturités (échéances des instruments financiers) et leurs coupon (intérêt annuels) et cela se fait segment par segment de maturité ,Il s’agit en fait d’une technique itérative :

1-pour les segment de maturité inférieur à une année (c'est simple):
car dans ce cas On extrait les taux zéro-coupon grâce aux taux actuariels des obligations à coupon disponibles sur le marché ( qui sont déjà connu). Ceci est justifié par le fait qu’une obligation dont la maturité est
inférieure à 1 an ne va distribuer qu’un seul coupon à l’écheance. De ce fait, elle peut être considérée comme une obligation à zero coupon.

2-Pour le segment de la courbe allant d’un an à 2 ans (qui me pose de problème) :
On commence par l’obligation qui arrive le plus tôt à échéance parmi les obligations dont les maturités sont comprises entre 1 an et 2 ans.
Soient C le coupon de cette obligation,
N sa valeur nominale
P son prix sur le marché.
Il est clair que l’obligation en question verse deux flux. Le premier facteur d’actualisation est connu grâce à la première étape et le second vérifie l’équation non linéaire suivante :

P = C/(1 + R(0, t1)) +(C + N)/(1 + R(0, t2))2 avec t1 ≤ 1 et 1 < t2 ≤ 2

Ensuite, le même procédé est appliqué à l’obligation de maturité la plus proche parmi les obligations restantes jusqu’à ce que toutes les obligations soient traitées.
De même pour le segment de la courbe allant de 2 ans à 3 ans. Ainsi, segment par segment,on détermine tous les taux zéro-coupon pour les differentes maturités des obligations cotées sur le marché.

suite à ma recherche je trouve une méthode simple et efficace à établir c'est en faite une résolution de système matricielle : ci-joint la capture écran pour la finalité de problème et le lien de site :


http://documentslide.com/documents/finance-empirique-ms-bif-fcsuite1.html

Sub strap()
Dim DerniereLigne As Integer, i As Integer, ii As Integer
Dim Prix As Double, j As Double
Dim v() As Integer, v1() As Double
ThisWorkbook.Sheets("feuil1").Activate
DerniereLigne = Range("P" & Rows.Count).End(xlUp).Row
ReDim v(1 To DerniereLigne)
ReDim v1(1 To DerniereLigne)
For i = 4 To DerniereLigne
 Range("N" & i).FormulaR1C1 = "=PRICE(TODAY(),RC[-2],RC[-3],0.0722,1000,1)" 'pour calculer tous les prix des obligations c'est facile
 If (Round(Range("P" & i))) > 1 Then 'si la maturité est supérieur à une année
 v(i) = Round(Range("P" & i)) ' on sélectionne leurs maturités  et les mettre en maturités entiers
 v1(i) = Range("Q" & i)             'on séléctionne leurs prix calculés pour les utiliser par la suite
 End If
Next i
Dim M() As Variant, m1 As Variant, v2() As Double
ReDim M(1 To DerniereLigne, 1 To DerniereLigne)
ReDim v2(1 To DerniereLigne)
Dim p1 As Integer
Dim maturity As Double
For ii = 1 To DerniereLigne
maturity = v(ii)        'on séléctionne chaque fois la maturité
j = 1
While ((maturity - j) > 0)
M(j, j) = (1000 * (1 + v1(ii)))  'construire la matrice dans l'exemple de la capture écran
M(ii, maturity - j) = v1(ii)      'construire la matrice dans l'exemple de la capture écran
j = j + 1
Wend
Next ii
m1 = Application.MInverse(M)  'pour résoudre le système matricielle
ReDim m1(1 To DerniereLigne, 1 To DerniereLigne)
For p1 = 1 To DerniereLigne
For j = 1 To DerniereLigne
v2(p1) = m1(p1, j) * v1(j)  ' le tableau  v2 contient les éléments de taux zéro coupon comme il est définit par le capture écran
Next j
Next p1
Range("S" & 6) = m1(5, 5)  ' je décide d'afficher la composante de la matrice mais rien n'est affiché
end sub


je vous remercie pour votre patience et temps , je sais que ca prend du temps!!! merciiiiii
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
15 mars 2017 à 08:02
Désolé, cela dépasse mes compétences. Je pensais que le fichier à télécharger pouvait résoudre le problème!

Bon courage
0
amiro2017 Messages postés 194 Date d'inscription mardi 28 février 2017 Statut Membre Dernière intervention 31 août 2017 1
15 mars 2017 à 08:16
c'est pas grave , je vous remercie beaucoup
bonne journée
0