Simulation/paramètres/problème

Bonjour à tous,

Je suis débutant en vba et je dois progresser rapidement.

Mon problème est le suivant: j'ai créé une fonction dépendant de 3 paramètres f(lambda, mu, sigma) comme suit:

Function Charge_Sinistre(ByVal lambda As Double, ByVal mu As Double, ByVal sigma As Double) As Long

Dim k As Integer

Dim c As Double

N = VA_Poisson(lambda)

If N > 0 Then

For k = 1 To N

c = c + LGNORM(mu, sigma)

Next k

Charge_Sinistre = c

Else

Charge_Sinistre = 0

End If

Les fonctions VA_Poisson et LGNORM fonctionnent parfaitement bien et représentent des valeurs aléatoire de loi de poisson et log-normale. Toutefois, ce programme ne fonctionne pas.

Remarque: Si je supprime les paramètre sigma et mu et ma fonction f et que je remplace dans le programme mu pas une valeur et sigma par une valeur ( ex: c = c + LGNORM(0,1) ) le programme fonctionne alors correctement.

Que dois-je faire ?

Merci par avance.

Cordialement,

Idriss

Bonjour,

A te lire on peut supposer que ton problème vient des tes déclarations de variables pour mu et sigma en double.

Cdlt.

Exactement!

Merci à vous!

Idriss

Bonjour à tous,

Je cherche à programmer un fonction renvoyant une valeur aléatoire qui représente un taux d'intérêt.

Ce taux suit le modèle Cox Ingersoll Ross du type: dr = p(q-r)dt + v.sqrt(r)dB ou B est un mouvement brownien.

Voici ce que j'ai programmé. Cette fonction ainsi programmée renvoie uniquement 0.

Function CIR(ByVal T As Long, ByVal r0 As Double, ByVal p As Long, ByVal q As Long, ByVal v As Long) As Long

Dim w As Long

Dim i As Integer

r = r0

For i = 1 To 12 * T

r = r + p * (q - r) + v * (1 / (12 * T)) ^ 0.5 * r ^ 0.5 * Application.WorksheetFunction.NormInv(Rnd(), 0, 1)

Next i

CIR = r

End Function

Il y a surement un erreur dans la phase de déclaration mais je ne la vois pas.

Merci par avance.

Cordialement,

Idriss

Bonjour,

Mes remarques, sans grande conviction :

1 - tu déclares T en Long et i en Integer : que donne i * T?

2 - tu n'oublies pas 'dim r as Double'

3 - tu déclares w qui n'est pas utilisé

4 - CIR ne peut pas être Long

Dans le désorde

le dim w est une erreur lorque j'ai recopié. Le problème est toujours présent lorsqu'il s'agit de dim r as long.

Je déclare T en long mais je n'utilise que des valeurs entières de T, de plus, je l'ai déclaré en integer au début et la fonction renvoyait exactement la même chose : 0.

Re,

Je ne vais réécrire 2 fois la même chose : CIR ne peut pas être Long car r n'est pas Long [1/12(*T)]

Essaie :

Function CIR(T As Long, r0 As Double, p As Long, q As Long, v As Long) as Double
Dim i As Long, r as Double
r = r0
For i = 1 To 12 * T
r = r + p * (q - r) + v * (1 / (12 * T)) ^ 0.5 * r ^ 0.5 * Application.WorksheetFunction.NormInv(Rnd(), 0, 1)
Next i
CIR = r
End Function

Tu peux aussi joindre un fichier avec 1 ou 2 exemples de calcul manuel, que l'on tâchera de reproduire avec une fonction personnalisée.

Avec ce programme, je n'arriver toujours pas à faire marcher la fonction.

Meme si cela ne la fait pas marcher pour autant, n'est ce pas mieux de mettre dim i as integer vu qu'il s'agit d'une boucle?

Ce qui est encore plus étrange, c'est que ma fonction suivante fonctionne et qu'elle ressemble bcp à CIR.

Function P_A(ByVal S0 As Double, ByVal Tfinal As Integer, ByVal mu_a As Long, ByVal sigma_a As Long) As Long

Dim i As Integer

Dim s As Long

s = S0

For i = 1 To 12 * Tfinal

s = s + s * (mu_a * (1 / (12 * Tfinal)) + sigma_a * (1 / (12 * Tfinal)) ^ 0.5 * Application.WorksheetFunction.NormInv(Rnd(), 0, 1))

Next i

P_A = s

End Function

Etrange non ?

Rechercher des sujets similaires à "simulation parametres probleme"