Fonction de calcul de la VaR

cs_amery Messages postés 8 Date d'inscription mercredi 16 août 2006 Statut Membre Dernière intervention 28 juin 2007 - 27 juin 2007 à 14:15
amineers Messages postés 1 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 27 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


Si vous trouverez l'erreur, je suis preneur!

Amery

6 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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

MPi
1
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
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!




<!--mstheme-->
Exemple<!--mstheme-->



LOI.NORMALE.STANDARD(1,333333) égale 0,908789


 
0
cs_amery Messages postés 8 Date d'inscription mercredi 16 août 2006 Statut Membre Dernière intervention 28 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...

Amery
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
28 juin 2007 à 23:28
Tu peux aussi rechercher le fichier suivant dans le répertoire d'Office et l'imprimer
\Program Files\Microsoft Office\Office\1036\VBALIST.XLS

bien pratique...

MPi
0
amineers Messages postés 1 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 27 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
0
Rejoignez-nous