cs_amery
Messages postés8Date d'inscriptionmercredi 16 août 2006StatutMembreDernière intervention28 juin 2007
-
27 juin 2007 à 14:15
amineers
Messages postés1Date d'inscriptionjeudi 20 septembre 2007StatutMembreDernière intervention27 mars 2010
-
27 mars 2010 à 16:20
Bonjour,
j'ai créé la fonction suivante pour calculer la Value at Risk d'un portefeuille, mais ça ne marche pas. Ca me retourne #VALEUR! dans la cellule Excel lorsque j'appelle ma fonction:
Function VatR(RdtPtf As Variant, Prob As Double, FrequenceDonnees As Double, HorizonTemps As Double) As Double
' Calcul la VaR d'un portefeuille pour un horizon de temps et un intervalle de confiance donnés
Dim m1 As Double
Dim m2 As Double
Dim z As Double
'm1 = Mean2(RdtPtf) : calcul la moyenne arithmétique
'm2 = SD(RdtPtf) : calcul l'écart-type
z = LOI.NORMALE.STANDARD.INVERSE(Prob)
VatR = m1 * (HorizonTemps / FrequenceDonnees) + z * m2 * (HorizonTemps / FrequenceDonnees) ^ (0.5)
End Function
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 27 juin 2007 à 23:07
z = LOI.NORMALE.STANDARD.INVERSE(Prob)
Tu ne peux pas utiliser ce genre d'appel en VBA. C'est une fonction de la feuille de calcul pas de VBA. Tu pourrais, par contre, essayer comme ceci, avec crochets et formule anglaise
z = [NORMSINV(Prob)]
ou encore
z = Application.WorksheetFunction.NormSInv(Prob)
Pour l'autre calcul, il faut que m1 et m2 aient une valeur et tu les as mis en commentaire... sinon tu multiplieras par 0
jmfmarques
Messages postés7668Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 27 juin 2007 à 15:35
C'est peutr-être que ta variçable Prob n'est pas un numérique cohérent, ce qui te renverrait en effet un #VALEUR ...
LOI.NORMALE.STANDARD
<!--mstheme-->Renvoie la probabilité d'une variable aléatoire continue suivant une loi normale standard (ou centrée réduite). Cette distribution a une moyenne égale à 0 (zéro) et un écart type égal à 1. La présente fonction remplace l'usage de la table donnant la valeur des aires comprises sous une courbe normale centrée réduite.
<!--mstheme-->
Syntaxe<!--mstheme-->
LOI.NORMALE.STANDARD(z)
z représente la valeur dont vous recherchez la distribution.
<!--mstheme-->
Remarques
Si l'argument z n'est pas numérique, la fonction LOI.NORMALE.STANDARD renvoie la valeur d'erreur #VALEUR!
cs_amery
Messages postés8Date d'inscriptionmercredi 16 août 2006StatutMembreDernière intervention28 juin 2007 28 juin 2007 à 16:35
Merci pour votre aide. J'ai remplacé ma ligne par
z = WorksheetFunction.NormSInv(Prob)
et ca marche parfaitement.
Par contre, où est-ce que je peux trouver la liste des fonctions VBA du genre WorkSheetFunction.NormSInv. J'ai cherché dans l'aide de VBA, mais impossible de trouver une liste exhaustive des fonctions disponibles...
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 28 juin 2007 à 23:25
Une façon de procéder, c'est d'écrire ta fonction dans une cellule en français et dans une petite procédure, tu mets
msgbox Range("A1").Formula ' changer A1 pour la bonne cellule, bien sûr...
Ça affichera la version anglaise de ta formule et tu pourras voir si elle fait partie de la liste de choix de WorksheetFunction
MPi
Vous n’avez pas trouvé la réponse que vous recherchez ?
amineers
Messages postés1Date d'inscriptionjeudi 20 septembre 2007StatutMembreDernière intervention27 mars 2010 27 mars 2010 à 16:20
Bonjour,
j'ai utilisé la fonction vatr au dessous pour calculer la Value at Risk d'un portefeuille, mais ça ne marche pas. Ca me retourne "erreur de compilation sub ou function non définie" apparemment
les fonctions mean 2 et sd n'existe pas sur vba
Si vous trouverez la solution, je suis preneur!
sinon si vous pouvez m'envoyer n'importe quel méthode pour calculer la VaR d'un portefeuille sa serai bien
Bien amicalement,
Amine