calcul d'une fonction dans un tableau

calcul d'une fonction dans un tableau - VB/VBA/VBS - Programmation

Marsh Posté le 10-05-2011 à 14:48:28    

Bonjour
je dois calculer une fonction dont les données sont plusieurs,
mes données sont par exemple comme suit:
 
durée\ delta= 10        15       20
7              10,97    11,20   10,89
15             11,3     10,54   10,65
21            10,67    11,45    11,10
30            10,97    11,34    10,93
les valeurs à l'intérieur sont les volatilités
 
je dois avoir un tableau similaire mais au lieu des volatilité il me faut les valeurs d'un strike dont j'ai l'expression en fonction de la durée le dela et la volatilité, donc pour chaque durée, delta et volatilité il me faut un strike.  
 
voiçi le code que j'ai essayé mais ça donne rien (je suis débutante en VBA)
 
Sub test()
 
Function str(CP As String, Spot As Double) As Double
     
    Dim taux_domestique As Double
    Dim taux_etranger As Double
    Dim i As Integer
    Dim j As Integer
    Dim duree(12) As Double
    Dim delta(7) As Double
    Dim volatilite(12, 7) As Double
    Dim tmp1 As Double
    Dim tmp3 As Double
    Dim tmp2 As Double
     
        i = 1
        Dim ObjCell1 As Range
         
        For Each ObjCell In Range("A3:A14" ).Cells
            duree(i) = ObjCell.Value
            i = i + 1
        Next
         
        i = 1
        Dim ObjCell2 As Range
         
        For Each ObjCell2 In Range("B2:H2" ).Cells
            delta(i) = ObjCell2.Value
            i = i + 1
        Next
         
         
        Dim ObjCell3 As Range
        i = 1
        j = 1
        For Each ObjCell3 In Range("B3:H14" ).Cells
            If j <= 7 And i <= 12 Then
              volatilite(i, j) = ObjCell3.Value
            End If
             
            If j > 7 And i <= 12 Then
                j = 1
                i = i + 1
            End If
             
        Next
 
     
    For i = 1 To 12
       
        If CP = "call" Then
         taux_domestique = InterpoleTx(Range("A17:A26" ), Range("B17:B26" ), duree(i)) And taux_etranger = InterpoleTx(Range("A29:A42" ), Range("C29:C42" ), duree(i))
       ElseIf CP = "put" Then
         taux_domestique = InterpoleTx(Range("A17:A26" ), Range("C17:C26" ), duree(i)) And taux_etranger = InterpoleTx(Range("A29:A42" ), Range("B29:B42" ), duree(i))
        End If
         
        For j = 1 To 7
            tmp1 = taux_domestique - taux_etranger + (0.5 * volatilite(i, j) * volatilite(i, j))
            tmp2 = Log(1 / (delta(j) * Sqr(2 * 3.14)))
            tmp3 = volatilite(i, j) * Sqr(2 * (duree(i) / 365) * tmp2)
             
             
            Cells(i, j + 9).Value = str = Spot * Exp((tmp1 * (duree(i) / 365)) - tmp3)
        Next j
         
    Next i
   
End Function
 
End Sub

Reply

Marsh Posté le 10-05-2011 à 14:48:28   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed