Fonction de calcul de la VaR

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

Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
24
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


 
Messages postés
8
Date d'inscription
mercredi 16 août 2006
Statut
Membre
Dernière intervention
28 juin 2007

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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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
Messages postés
1
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
27 mars 2010

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