Code de Boostrapping methode pour construire Taux zéro coupon

amiro2017 Messages postés 207 Statut Membre -  
amiro2017 Messages postés 207 Statut Membre -
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 .

3 réponses

  1. amiro2017 Messages postés 207 Statut Membre 1
     
    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
  2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. amiro2017 Messages postés 207 Statut Membre 1
       
      c'est pas grave , je vous remercie beaucoup
      bonne journée
      0