/** * Calculates the deposit fair rate given the start and end time and the accrual factor. * * @param trade the trade * @param provider the rates provider * @return the par rate */ public double parRate(ResolvedIborFixingDepositTrade trade, RatesProvider provider) { return productPricer.parRate(trade.getProduct(), provider); }
public void test_parSpreadSensitivity_fixing() { PointSensitivities computedNoFix = PRICER.parSpreadSensitivity(RDEPOSIT, IMM_PROV_NOFIX); PointSensitivities computedFix = PRICER.parSpreadSensitivity(RDEPOSIT, IMM_PROV_FIX); assertTrue(computedNoFix.equalWithTolerance(computedFix, TOLERANCE_PV_DELTA)); PointSensitivities computedParRateFix = PRICER.parRateSensitivity(RDEPOSIT, IMM_PROV_FIX); assertTrue(computedParRateFix.equalWithTolerance(computedFix, TOLERANCE_PV_DELTA)); }
/** * Calculates the spread to be added to the deposit rate to have a zero present value. * * @param trade the trade * @param provider the rates provider * @return the par spread */ public double parSpread(ResolvedIborFixingDepositTrade trade, RatesProvider provider) { return productPricer.parSpread(trade.getProduct(), provider); }
public void test_parSpreadSensitivity_noFixing() { PointSensitivities computedNoFix = PRICER.parSpreadSensitivity(RDEPOSIT, IMM_PROV_NOFIX); CurrencyParameterSensitivities sensiComputedNoFix = IMM_PROV_NOFIX.parameterSensitivity(computedNoFix); CurrencyParameterSensitivities sensiExpected = CAL_FD.sensitivity(IMM_PROV_NOFIX, (p) -> CurrencyAmount.of(EUR, PRICER.parSpread(RDEPOSIT, (p)))); assertTrue(sensiComputedNoFix.equalWithTolerance(sensiExpected, TOLERANCE_RATE_DELTA)); // Par rate and par spread sensitivities are equal PointSensitivities computedParRateNoFix = PRICER.parRateSensitivity(RDEPOSIT, IMM_PROV_NOFIX); CurrencyParameterSensitivities sensiComputedParRateNoFix = IMM_PROV_NOFIX.parameterSensitivity(computedParRateNoFix); assertTrue(sensiComputedNoFix.equalWithTolerance(sensiComputedParRateNoFix, TOLERANCE_RATE_DELTA)); PointSensitivities computedFix = PRICER.parSpreadSensitivity(RDEPOSIT, IMM_PROV_FIX); CurrencyParameterSensitivities sensiComputedFix = IMM_PROV_NOFIX.parameterSensitivity(computedFix); assertTrue(sensiComputedFix.equalWithTolerance(sensiExpected, TOLERANCE_RATE_DELTA)); }
/** * Calculates the present value of the Ibor fixing deposit trade. * <p> * The present value of the trade is the value on the valuation date. * * @param trade the trade * @param provider the rates provider * @return the present value of the product */ public CurrencyAmount presentValue(ResolvedIborFixingDepositTrade trade, RatesProvider provider) { return productPricer.presentValue(trade.getProduct(), provider); }
public void test_presentValueSensitivity_noFixing() { PointSensitivities computed = PRICER.presentValueSensitivity(RDEPOSIT, IMM_PROV_NOFIX); CurrencyParameterSensitivities sensiComputed = IMM_PROV_NOFIX.parameterSensitivity(computed); CurrencyParameterSensitivities sensiExpected = CAL_FD.sensitivity(IMM_PROV_NOFIX, (p) -> PRICER.presentValue(RDEPOSIT, (p))); assertTrue(sensiComputed.equalWithTolerance(sensiExpected, NOTIONAL * EPS_FD)); }
public void test_parRate() { double parRate = PRICER.parRate(RDEPOSIT, IMM_PROV_NOFIX); IborFixingDeposit deposit0 = DEPOSIT.toBuilder().fixedRate(parRate).build(); CurrencyAmount pv0 = PRICER.presentValue(deposit0.resolve(REF_DATA), IMM_PROV_NOFIX); assertEquals(pv0.getAmount(), 0, TOLERANCE_RATE); double parRate2 = PRICER.parRate(RDEPOSIT, IMM_PROV_NOFIX); assertEquals(parRate, parRate2, TOLERANCE_RATE); }
public void test_parSpread_noFixing() { double parSpread = PRICER.parSpread(RDEPOSIT, IMM_PROV_NOFIX); IborFixingDeposit deposit0 = DEPOSIT.toBuilder().fixedRate(RATE + parSpread).build(); CurrencyAmount pv0 = PRICER.presentValue(deposit0.resolve(REF_DATA), IMM_PROV_NOFIX); assertEquals(pv0.getAmount(), 0, TOLERANCE_RATE); double parSpread2 = PRICER.parSpread(RDEPOSIT, IMM_PROV_NOFIX); assertEquals(parSpread, parSpread2, TOLERANCE_RATE); }
/** * Calculates the deposit fair rate sensitivity to the curves. * * @param trade the trade * @param provider the rates provider * @return the par rate curve sensitivity */ public PointSensitivities parRateSensitivity(ResolvedIborFixingDepositTrade trade, RatesProvider provider) { return productPricer.parRateSensitivity(trade.getProduct(), provider); }
/** * Calculates the par spread curve sensitivity. * * @param trade the trade * @param provider the rates provider * @return the par spread curve sensitivity */ public PointSensitivities parSpreadSensitivity(ResolvedIborFixingDepositTrade trade, RatesProvider provider) { return productPricer.parSpreadSensitivity(trade.getProduct(), provider); }
/** * Calculates the present value sensitivity of the Ibor fixing deposit trade. * <p> * The present value sensitivity of the trade is the sensitivity of the present value to * the underlying curves. * * @param trade the trade * @param provider the rates provider * @return the point sensitivity of the present value */ public PointSensitivities presentValueSensitivity(ResolvedIborFixingDepositTrade trade, RatesProvider provider) { return productPricer.presentValueSensitivity(trade.getProduct(), provider); }
/** * Calculates the present value sensitivity of the Ibor fixing product. * <p> * The present value sensitivity of the product is the sensitivity of the present value to * the underlying curves. * * @param deposit the product * @param provider the rates provider * @return the point sensitivity of the present value */ public PointSensitivities presentValueSensitivity(ResolvedIborFixingDeposit deposit, RatesProvider provider) { double forwardRate = forwardRate(deposit, provider); DiscountFactors discountFactors = provider.discountFactors(deposit.getCurrency()); double discountFactor = discountFactors.discountFactor(deposit.getEndDate()); // sensitivity PointSensitivityBuilder sensiFwd = forwardRateSensitivity(deposit, provider) .multipliedBy(-discountFactor * deposit.getNotional() * deposit.getYearFraction()); PointSensitivityBuilder sensiDsc = discountFactors.zeroRatePointSensitivity(deposit.getEndDate()) .multipliedBy(deposit.getNotional() * deposit.getYearFraction() * (deposit.getFixedRate() - forwardRate)); return sensiFwd.combinedWith(sensiDsc).build(); }
/** * Calculates the deposit fair rate given the start and end time and the accrual factor. * * @param deposit the product * @param provider the rates provider * @return the par rate */ public double parRate(ResolvedIborFixingDeposit deposit, RatesProvider provider) { return forwardRate(deposit, provider); }
/** * Calculates the par spread curve sensitivity. * * @param deposit the product * @param provider the rates provider * @return the par spread curve sensitivity */ public PointSensitivities parSpreadSensitivity(ResolvedIborFixingDeposit deposit, RatesProvider provider) { return forwardRateSensitivity(deposit, provider).build(); }
public void test_presentValue_fixing() { CurrencyAmount computedNoFix = PRICER.presentValue(RDEPOSIT, IMM_PROV_NOFIX); CurrencyAmount computedFix = PRICER.presentValue(RDEPOSIT, IMM_PROV_FIX); // Fixing should not be taken into account assertEquals(computedFix.getCurrency(), EUR); assertEquals(computedFix.getAmount(), computedNoFix.getAmount(), TOLERANCE_PV); }
public void test_parRateSensitivity() { PointSensitivities ptsTrade = PRICER_TRADE.parRateSensitivity(RDEPOSIT_TRADE, IMM_PROV); PointSensitivities ptsProduct = PRICER_PRODUCT.parRateSensitivity(RDEPOSIT_PRODUCT, IMM_PROV); assertTrue(ptsTrade.equalWithTolerance(ptsProduct, TOLERANCE_PV_DELTA)); }
public void test_parSpreadSensitivity() { PointSensitivities ptsTrade = PRICER_TRADE.parSpreadSensitivity(RDEPOSIT_TRADE, IMM_PROV); PointSensitivities ptsProduct = PRICER_PRODUCT.parSpreadSensitivity(RDEPOSIT_PRODUCT, IMM_PROV); assertTrue(ptsTrade.equalWithTolerance(ptsProduct, TOLERANCE_PV_DELTA)); }
public void test_presentValueSensitivity_fixing() { PointSensitivities computedNoFix = PRICER.presentValueSensitivity(RDEPOSIT, IMM_PROV_NOFIX); CurrencyParameterSensitivities sensiComputedNoFix = IMM_PROV_NOFIX.parameterSensitivity(computedNoFix); PointSensitivities computedFix = PRICER.presentValueSensitivity(RDEPOSIT, IMM_PROV_FIX); CurrencyParameterSensitivities sensiComputedFix = IMM_PROV_NOFIX.parameterSensitivity(computedFix); assertTrue(sensiComputedNoFix.equalWithTolerance(sensiComputedFix, TOLERANCE_PV_DELTA)); }
/** * Calculates the spread to be added to the deposit rate to have a zero present value. * * @param deposit the product * @param provider the rates provider * @return the par spread */ public double parSpread(ResolvedIborFixingDeposit deposit, RatesProvider provider) { return forwardRate(deposit, provider) - deposit.getFixedRate(); }
/** * Calculates the deposit fair rate sensitivity to the curves. * * @param deposit the product * @param provider the rates provider * @return the par rate curve sensitivity */ public PointSensitivities parRateSensitivity(ResolvedIborFixingDeposit deposit, RatesProvider provider) { return forwardRateSensitivity(deposit, provider).build(); }