Help: Projet VBA - VB/VBA/VBS - Programmation
Marsh Posté le 24-05-2010 à 18:20:47
Bin la on a bouclé la question 3.  
Par contre pour la question 4 rien n'y fait ! Toujours bloqués ! 
Marsh Posté le 24-05-2010 à 20:29:18
again, ça irait mieux si tu postais ce que vous avez fait pour cette question... 
 
poste le raisonnement au moins... 
tu trouveras ici peu d'experts en maths financières, par contre y'a plein de gens qui maitrisent le VBA : c donc à toi de trouver l'algo, ou d'expliquer les éléments que tu as... 
 
le truc c'est que la charte du forum interdit qu'on fasse l'exo à ta place, par contre on peut t'aider si t'as des soucis lié aiu VBA...
Marsh Posté le 25-05-2010 à 16:58:56
Voila notre code alors ! En théorie cela devrait marcher mais non  je ne comprends pas ce qui coince !!
 je ne comprends pas ce qui coince !! 
 
Question 4  
 
Function fnBackTest() As Variant 
Rem  
Rem Dim wsP As Worksheet 
Rem Dim wsR As Worksheet 
Rem Dim wsV As Worksheet 
Rem  
Rem Dim statfnlv As Variant 
Rem  
Rem Dim observ As Integer 
Rem Dim nbre As Integer 
Rem  
Rem Dim i As Integer 
Rem Dim j As Integer 
Rem Dim k As Integer 
Rem Dim nbt As Integer 
Rem  
Rem Dim periode As Integer 
Rem  
Rem '******************************************************************************** 
Rem ' Préalable                                                                     * 
Rem '******************************************************************************** 
Rem  
Rem 'Activation du classeur "Gestion de Portefeuille - Projet" 
Rem ThisWorkbook.Activate 
Rem  
Rem 'Affectation de la feuille de calcul "Portefeuille" à wsP 
Rem Set wsP = Worksheets("portefeuille" ) 
Rem  
Rem 'Affectation de la feuille de calcul "Rendements" à wsR 
Rem Set wsR = Worksheets("rendements" ) 
Rem  
Rem 'Affectation de la feuille de calcul "vol_backward" à wsV 
Rem Set wsV = Worksheets("vol_backward" ) 
Rem  
Rem 'Calcul des valeurs observ et nbre 
Rem observ = wsV.Cells(Rows.Count, 1).End(xlUp).Row - 1 
Rem nbre = wsV.Cells(1, Columns.Count).End(xlToLeft).Column - 1 
Rem  
Rem ReDim statfnlnv(observ, nbre) 
Rem  
Rem '******************************************************************************** 
Rem ' mise en oeuvre                                                                 * 
Rem '******************************************************************************** 
Rem  
Rem 'mise en oeuvre sur les différentes périodes 
Rem For periode = 2 To observ 
Rem   statfnlnv = fnlnv(periode) 
Rem Next periode 
Rem  
Rem wsP.Cells(2, 2) = statfnlnv 
Rem  
Rem 'calcul de la performante effective (le rendement ???) de cette stratégie 
Rem For j = 2 To nbre 
Rem   For i = 2 To observ 
Rem   If wsP.Cells(i, j) <> 0 Then 
Rem     k = k + wsR.Cells(i, j) 
Rem     nbt = nbt + 1 
Rem   End If 
Rem   Next i 
Rem Next j 
Rem  
Rem wsP.Range("A1" ).End(xlDown).Value = "performance effective" 
Rem wsP.Range("A2" ).End(xlDown).Value = k / nbt 
Rem  
Rem End Function 
Rem  
Rem  
End Sub 
 
 
question 5: 
 
 
Function fnlnv(periode As Integer) As Variant 
Rem 'stratégie consistant à investir uniquement en monétaire lorsque la volatilité backward est supréieur à un seuil (75%); sinon investit dans les titres avec les alphas backward les plus élevé 
Rem  
Rem Dim wsV As Worksheet 
Rem Dim wsAb As Worksheet 
Rem  
Rem Dim sel1 As Variant 
Rem Dim sel2 As Variant 
Rem Dim selnumb As Variant 
Rem Dim mat As Variant 
Rem  
Rem Dim observ As Integer 
Rem Dim nbre As Integer 
Rem Dim i As Integer 
Rem Dim j As Integer 
Rem Dim k As Integer 
Rem  
Rem Dim pos1 As Integer 
Rem Dim pos2 As Integer 
Rem Dim posf As Integer 
Rem  
Rem Dim valref As Integer 
Rem Dim nbt As Integer 
Rem  
Rem '******************************************************************************** 
Rem ' Préalable                                                                     * 
Rem '******************************************************************************** 
Rem  
Rem 'Activation du classeur "Gestion de Portefeuille - Projet" 
Rem ThisWorkbook.Activate 
Rem  
Rem 'Affectation de la feuille de calcul "vol_backward" à wsV 
Rem Set wsV = Worksheets("vol_backward" ) 
Rem  
Rem 'Affectation de la feuille de calcul "alpha_backward" à wsAb 
Rem Set wsAb = Worksheets("alpha_backward" ) 
Rem  
Rem 'Calcul des valeurs observ et nbre 
Rem observ = wsV.Cells(Rows.Count, 1).End(xlUp).Row - 1 
Rem nbre = wsV.Cells(1, Columns.Count).End(xlToLeft).Column - 1 
Rem  
Rem 'redimensionnement de la matrice sel, la matrice des titres sélectionnés 
Rem ReDim sel1(observ, nbre) 
Rem ReDim sel2(observ, nbre) 
Rem ReDim selnumb(observ, nbre) 
Rem ReDim mat(observ, nbre) 
Rem  
Rem '******************************************************************************** 
Rem ' Stratégie du portefeuille* 
Rem '******************************************************************************** 
Rem  
Rem 'on trie la volatilité backward de l'indice de marché S&P 500 
Rem For i = 2 To observ - 1 
Rem    sel1(i, 1) = wsV.Cells(i, 2).Value 
Rem    Next i 
Rem  
Rem sel1.Sort 
Rem  
Rem 'on sélectionne la valeur du 3e quartile 
Rem pos1 = observ * (75 / 100) 
Rem valref = Round(sel1(1, pos1)).Value 
Rem  
Rem 'on trie les alphas backward les plus élevé de la période 
Rem For j = 4 To nbre 
Rem   sel2(periode, j) = wsAb(periode, j).Value 
Rem   Next j 
Rem    
Rem sel2.Sort 
Rem  
Rem 'on sélectionne les 10% des titres dont l'apha backward est le plus élevé (les 3 titres dans notre cas) 
Rem pos2 = nbre * (90 / 100) 
Rem nbt = nbre - pos2 
Rem  
Rem For k = 1 To pos2 
Rem    sel2.cell(1, k).ClearContents 
Rem Next k 
Rem  
Rem 'on créer une matrice selnumb qui contient les positions des titres sélectionnés 
Rem For i = 1 To nbt 
Rem  For j = 4 To nbre 
Rem   If wsAb(periode, i) = sel2.Cells(i, j) Then 
Rem   selnumb(periode, i) = j 
Rem   End If 
Rem  Next j 
Rem Next i 
Rem  
Rem 'on va investir uniquement en monétaire lorsque la volatilité backward est supréieur à un seuil (75%); sinon investit dans les titres avec les alphas backward les plus élevé 
Rem ' supposons notre portefeuille est égale à 1 
Rem  
Rem If wsV.Cells(periode, 1).Value >= valref.Value Then 
Rem    mat(periode, 3) = 1 
Rem    mat(periode, 2) = 0 
Rem    For i = 4 To nbre 
Rem      mat(periode, i) = 0 
Rem      Next i 
Rem Else 
Rem    For i = 2 To nbre 
Rem      mat(periode, i) = 0 
Rem      Next i 
Rem    For j = 1 To nbt 
Rem      posf = selnumb(periode, j) 
Rem      If mat(periode, posf) = posf Then 
Rem      mat(periode, posf) = (1 / nbt) 
Rem      End If 
Rem    Next j 
Rem End If 
Rem  
Rem 'Report des dates dans la 1ère colonne de la matrice sel 
Rem mat(periode, 1) = ThisWorkbook.wsV.Cells(periode, 1) 
Rem  
Rem fnlnv = mat 
Rem  
Rem End Function 
Rem  
Rem  
End Sub 
 
 
 
Voilà, j'ai codé ça pour les deux questions mais ça coince je n'arrive pas à comprendre pourquoi...Bref c'est la crise !  
 
Merci 
Marsh Posté le 23-05-2010 à 22:39:09
Salut tout le monde,
 
   
je dois rendre un projet de gestion de portefeuille dans 2 à 3 semaines et j'avoue que ma binôme et moi n'arrivons vraiment pas à nous en sortir !
http://www.master272.com/projet2009-10.pdf
Voilà le projet...
Si quelqu'un se sentait capable de m'aider, je lui en serais vraiment reconnaissant !
C'est mon année qui se joue
Merci d'avance !
Bonne soirée !