@Test public void test() { assertEquals(MODEL.getPricingFunction(END).evaluate(DATA), 0, 0); assertEquals( MODEL .getPricingFunction(FORWARD) .evaluate( DATA.withVolatilitySurface( new VolatilitySurface(ConstantDoublesSurface.from(1e-9)))), 0, 0); assertEquals( MODEL.getPricingFunction(NOW).evaluate(DATA), BSM.getPricingFunction(VANILLA).evaluate(DATA), 1e-4); assertEquals(MODEL.getPricingFunction(FORWARD).evaluate(DATA), 4.4064, 1e-4); }
@Test public void test() { // TODO test wrt BSM // final double spot = 2; // final StandardOptionDataBundle data = DATA.withSpot(spot); // final ComplexChooserOptionDefinition chooser = new ComplexChooserOptionDefinition(new // Expiry(DATE), CALL_STRIKE, CALL_EXPIRY, PUT_STRIKE, PUT_EXPIRY); // assertEquals(MODEL.getPricingFunction(chooser).evaluate(data), BSM.getPricingFunction( // new EuropeanVanillaOptionDefinition(CALL_STRIKE, new // Expiry(DateUtil.getDateOffsetWithYearFraction(DATE, CALL_LIFE)), true)).evaluate(data), 0); assertEquals(MODEL.getPricingFunction(CHOOSER).evaluate(DATA), 6.0508, 1e-4); }
private double getBSPrice(final double power, final boolean isCall) { final StandardOptionDataBundle bsBundle = getModifiedDataBundle(BUNDLE, power); return BS_MODEL .getGreeks(getDefinition(power, isCall), bsBundle, REQUIRED_GREEKS) .get(Greek.FAIR_PRICE); }
private double getPrice(final double power, final boolean isCall) { return MODEL .getGreeks(getDefinition(power, isCall), BUNDLE, REQUIRED_GREEKS) .get(Greek.FAIR_PRICE); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullData() { MODEL .getPricingFunction(new AsymmetricPowerOptionDefinition(STRIKE, EXPIRY, 1, true)) .evaluate((StandardOptionDataBundle) null); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullDefinition() { MODEL.getPricingFunction(null); }
private void assertPriceEquals( final LogOptionDefinition definition, final double sigma, final double price) { final StandardOptionDataBundle bundle = getBundle(sigma); final GreekResultCollection actual = MODEL.getGreeks(definition, bundle, REQUIRED_GREEKS); assertEquals(actual.get(Greek.FAIR_PRICE), price, EPS); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullData() { MODEL.getPricingFunction(FORWARD).evaluate((StandardOptionDataBundle) null); }
@Test public void test() { OptionDefinition call = new EuropeanVanillaOptionDefinition(80, EXPIRY1, true); BatesGeneralizedJumpDiffusionModelDataBundle data = new BatesGeneralizedJumpDiffusionModelDataBundle( CURVE, B, SURFACE, SPOT, DATE, 0., -0.04, 0.); assertEquals( BSM.getPricingFunction(call).evaluate(data), MODEL.getPricingFunction(call).evaluate(data), EPS2); call = new EuropeanVanillaOptionDefinition(80, EXPIRY1, true); data = data.withLambda(1.).withDelta(0.1); assertEquals(20.67, MODEL.getPricingFunction(call).evaluate(data), EPS1); call = new EuropeanVanillaOptionDefinition(90, EXPIRY2, true); data = data.withLambda(5.); assertEquals(14.13, MODEL.getPricingFunction(call).evaluate(data), EPS1); call = new EuropeanVanillaOptionDefinition(100, EXPIRY3, true); data = data.withLambda(10.); assertEquals(13.62, MODEL.getPricingFunction(call).evaluate(data), EPS1); data = data.withDelta(0.25); data = data.withLambda(1.); call = new EuropeanVanillaOptionDefinition(90, EXPIRY1, true); assertEquals(11.57, MODEL.getPricingFunction(call).evaluate(data), EPS1); call = new EuropeanVanillaOptionDefinition(100, EXPIRY2, true); data = data.withLambda(5.); assertEquals(12.25, MODEL.getPricingFunction(call).evaluate(data), EPS1); call = new EuropeanVanillaOptionDefinition(110, EXPIRY3, true); data = data.withLambda(10.); assertEquals(20.43, MODEL.getPricingFunction(call).evaluate(data), EPS1); data = data.withDelta(0.5); data = data.withLambda(1.); call = new EuropeanVanillaOptionDefinition(100, EXPIRY1, true); assertEquals(5.18, MODEL.getPricingFunction(call).evaluate(data), EPS1); call = new EuropeanVanillaOptionDefinition(110, EXPIRY2, true); data = data.withLambda(5.); assertEquals(16.52, MODEL.getPricingFunction(call).evaluate(data), EPS1); call = new EuropeanVanillaOptionDefinition(120, EXPIRY3, true); data = data.withLambda(10.); assertEquals(37.03, MODEL.getPricingFunction(call).evaluate(data), EPS1); }
@Test(expectedExceptions = IllegalArgumentException.class) public void testNullData() { MODEL .getPricingFunction(new EuropeanVanillaOptionDefinition(100, EXPIRY1, true)) .evaluate((BatesGeneralizedJumpDiffusionModelDataBundle) null); }