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
23 août 2018
20
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
7668
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
23 août 2018
20
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
23 août 2018
20
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