//------------------------------------------------------------------------- public virtual void test_presentValueSensitivityRates() { ImpliedTrinomialTreeFxSingleBarrierOptionProductPricer pricer = new ImpliedTrinomialTreeFxSingleBarrierOptionProductPricer(21); CurrencyParameterSensitivities computed = pricer.presentValueSensitivityRates(CALL_UKI_C, RATE_PROVIDER, VOLS); RatesFiniteDifferenceSensitivityCalculator calc = new RatesFiniteDifferenceSensitivityCalculator(1.0e-5); CurrencyParameterSensitivities expected = calc.sensitivity(RATE_PROVIDER, p => pricer.presentValue(CALL_UKI_C, p, VOLS)); assertTrue(computed.equalWithTolerance(expected, 1.0e-13)); }
//------------------------------------------------------------------------- public virtual void test_withData() { ImpliedTrinomialTreeFxSingleBarrierOptionProductPricer pricer = new ImpliedTrinomialTreeFxSingleBarrierOptionProductPricer(5); RecombiningTrinomialTreeData data = pricer.Calibrator.calibrateTrinomialTree(CALL_DKO.UnderlyingOption, RATE_PROVIDER, VOLS); double price = pricer.price(CALL_UKI_C, RATE_PROVIDER, VOLS); double priceWithData = pricer.price(CALL_UKI_C, RATE_PROVIDER, VOLS, data); assertEquals(price, priceWithData); CurrencyAmount pv = pricer.presentValue(CALL_DKO, RATE_PROVIDER, VOLS); CurrencyAmount pvWithData = pricer.presentValue(CALL_DKO, RATE_PROVIDER, VOLS, data); assertEquals(pv, pvWithData); MultiCurrencyAmount ce = pricer.currencyExposure(CALL_UKI_C, RATE_PROVIDER, VOLS); MultiCurrencyAmount ceWithData = pricer.currencyExposure(CALL_UKI_C, RATE_PROVIDER, VOLS, data); assertEquals(ce, ceWithData); }
/// <summary> /// Creates an instance. /// </summary> /// <param name="productPricer"> the pricer for <seealso cref="ResolvedFxSingleBarrierOption"/> </param> /// <param name="paymentPricer"> the pricer for <seealso cref="Payment"/> </param> public ImpliedTrinomialTreeFxSingleBarrierOptionTradePricer(ImpliedTrinomialTreeFxSingleBarrierOptionProductPricer productPricer, DiscountingPaymentPricer paymentPricer) { this.productPricer = ArgChecker.notNull(productPricer, "productPricer"); this.paymentPricer = ArgChecker.notNull(paymentPricer, "paymentPricer"); }