Bonjour à tous,
Je cherche à traduire un programme depuis vba vers java!
J'espère que je suis sur le bon forum...
Le programme en vba est le suivant:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Function MonteCarloStandardOption ( CallPutFlag As String, S As Double, X As Double, T As Double, r As Double, b As Double, v As Double, nSteps As Integer, nSimulations As Integer) As Double Dim dt As Double, St As Double Dim Sum As Double, Drift As Double, vSqrdt As Double Dim i As Integer, j As Integer, z As Integer dt = T / nSteps Drift = (b - v^2 / 2) * dt vSqrdt = v * Sqr(dt) If CallPutFlag=c Then z = 1 ElseIf CallPutFlag=p Then z = -1 EndIf For i = 1 to nSimulations St = S For j = 1 to nSteps St = St * Exp(Drift + vSqrdt * Application.NormalInv(Rnd(),0,1)) Next Sum = Sum + Max (z * (St X), 0) Next MonteCarloStandardOption = Exp (-r * T) * (Sum / nSimulations) End Function
J'ai déjà codé ceci en java:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 public double calcul(){ int z = 0; double st; double dt = t/ nSteps; double drift = (b - (v*v) / 2) * dt; double vSqrdt = v * java.lang.Math.sqrt(dt); Random rand = new Random(); double sum = 0; if ("c".equals(callPutFlag)){ z=1; } else if ("p".equals(callPutFlag)){ z=-1; } for (int i=1; i<=nSimulations; i++){ st = s; for (int j=1; j<nSteps; j++){ st = st * java.lang.Math.exp(drift + vSqrdt * rand.nextGaussian()); } sum = sum + java.lang.Math.max(z*(st-x), 0); } double result = java.lang.Math.exp((-r*t)*(sum/nSimulations)); return result; }
Eclipse compile mais le prix affiché par mon prg java n'est pas le bon...
Est-ce que quelqu'un pourrait me dire ce qu'il en pense? J'ai déjà vérifier et j'ai traduit tel que je le comprend ...
Merci d'avance!
Partager