Skip to content

Commit 990bc43

Browse files
committed
Improved output. Impelenting against an interface.
1 parent fa5d97b commit 990bc43

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

src/test/java/net/finmath/montecarlo/assetderivativevaluation/MonteCarloBlackScholesModelTest.java

+12-7
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.finmath.montecarlo.BrownianMotion;
1515
import net.finmath.montecarlo.BrownianMotionFromMersenneRandomNumbers;
1616
import net.finmath.montecarlo.assetderivativevaluation.models.BlackScholesModel;
17+
import net.finmath.montecarlo.assetderivativevaluation.products.AssetMonteCarloProduct;
1718
import net.finmath.montecarlo.assetderivativevaluation.products.EuropeanOption;
1819
import net.finmath.montecarlo.model.ProcessModel;
1920
import net.finmath.montecarlo.process.EulerSchemeFromProcessModel;
@@ -65,20 +66,23 @@ public void testDirectValuation() throws CalculationException {
6566

6667
final RandomVariable asset = process.getProcessValue(timeDiscretization.getTimeIndex(optionMaturity), assetIndex);
6768
final RandomVariable numeraireAtPayment = model.getNumeraire(process, optionMaturity);
68-
final RandomVariable numeraireAtEval = model.getNumeraire(process, 0.0);
69+
final RandomVariable numeraireAtEval = model.getNumeraire(process, initialTime);
6970

7071
final RandomVariable payoff = asset.sub(optionStrike).floor(0.0);
7172
final double value = payoff.div(numeraireAtPayment).mult(numeraireAtEval).getAverage();
7273

7374
final double valueAnalytic = AnalyticFormulas.blackScholesOptionValue(initialValue, riskFreeRate, volatility, optionMaturity, optionStrike);
74-
System.out.println("value using Monte-Carlo.......: " + value);
75-
System.out.println("value using analytic formula..: " + valueAnalytic);
75+
76+
System.out.println("Implementation using model " + model.getClass().getSimpleName() + " directly.");
77+
System.out.println("\tvalue using Monte-Carlo.......: " + value);
78+
System.out.println("\tvalue using analytic formula..: " + valueAnalytic);
7679

7780
Assert.assertEquals(valueAnalytic, value, 0.005);
7881
}
7982

8083
@Test
8184
public void testProductImplementation() throws CalculationException {
85+
8286
/*
8387
* Model
8488
*/
@@ -107,19 +111,20 @@ public void testProductImplementation() throws CalculationException {
107111
*/
108112

109113
// Create product
110-
final EuropeanOption europeanOption = new EuropeanOption(optionMaturity, optionStrike);
114+
final AssetMonteCarloProduct europeanOption = new EuropeanOption(optionMaturity, optionStrike);
111115

112116
// Value product using model
113-
final double value = europeanOption.getValue(monteCarloBlackScholesModel);
117+
final double value = europeanOption.getValue(initialTime, monteCarloBlackScholesModel).expectation().doubleValue();
114118

115119
/*
116120
* Analytic value using Black-Scholes formula
117121
*/
118122

119123
final double valueAnalytic = AnalyticFormulas.blackScholesOptionValue(initialValue, riskFreeRate, volatility, optionMaturity, optionStrike);
120124

121-
System.out.println("value using Monte-Carlo.......: " + value);
122-
System.out.println("value using analytic formula..: " + valueAnalytic);
125+
System.out.println("\nImplementation using model " + model.getClass().getSimpleName() + " with product " + europeanOption.getClass().getSimpleName());
126+
System.out.println("\tvalue using Monte-Carlo.......: " + value);
127+
System.out.println("\tvalue using analytic formula..: " + valueAnalytic);
123128

124129
Assert.assertEquals(valueAnalytic, value, 0.005);
125130
}

0 commit comments

Comments
 (0)