/** * Calculates the present value sensitivity by discounting the final cash flow (nominal + interest) * and the initial payment (initial amount). * * @param trade the trade * @param provider the rates provider * @return the point sensitivity of the present value */ public PointSensitivities presentValueSensitivity(ResolvedTermDepositTrade trade, RatesProvider provider) { return productPricer.presentValueSensitivity(trade.getProduct(), provider); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(ResolvedTermDepositTrade beanToCopy) { this.info = beanToCopy.getInfo(); this.product = beanToCopy.getProduct(); }
/** * Calculates the present value by discounting the final cash flow (nominal + interest) * and the initial payment (initial amount). * <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(ResolvedTermDepositTrade trade, RatesProvider provider) { return productPricer.presentValue(trade.getProduct(), provider); }
/** * Calculates the deposit fair rate given the start and end time and the accrual factor. * <p> * When the deposit has already started the number may not be meaningful as the remaining period * is not in line with the accrual factor. * * @param trade the trade * @param provider the rates provider * @return the par rate */ public double parRate(ResolvedTermDepositTrade trade, RatesProvider provider) { return productPricer.parRate(trade.getProduct(), provider); }
/** * Calculates the par rate curve sensitivity. * <p> * The calculation is based on both of initial and final payments. * Thus the number resulting may not be meaningful when deposit has already started and only the final * payment remains (no initial payment). * * @param trade the trade * @param provider the rates provider * @return the par rate curve sensitivity */ public PointSensitivities parRateSensitivity(ResolvedTermDepositTrade trade, RatesProvider provider) { return productPricer.parRateSensitivity(trade.getProduct(), provider); }
/** * Calculates the par spread curve sensitivity. * <p> * The calculation is based on both of initial and final payments. * Thus the number resulting may not be meaningful when deposit has already started and only the final * payment remains (no initial payment). * * @param trade the trade * @param provider the rates provider * @return the par spread curve sensitivity */ public PointSensitivities parSpreadSensitivity(ResolvedTermDepositTrade trade, RatesProvider provider) { return productPricer.parSpreadSensitivity(trade.getProduct(), provider); }
/** * Calculates the spread to be added to the deposit rate to have a zero present value. * <p> * The calculation is based on both the initial and final payments. * Thus the resulting number may not be meaningful when deposit has already started and only the final * payment remains (no initial payment). * * @param trade the trade * @param provider the rates provider * @return the par spread */ public double parSpread(ResolvedTermDepositTrade trade, RatesProvider provider) { return productPricer.parSpread(trade.getProduct(), provider); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 3237038: // info return ((ResolvedTermDepositTrade) bean).getInfo(); case -309474065: // product return ((ResolvedTermDepositTrade) bean).getProduct(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_of() { ResolvedTermDepositTrade test = ResolvedTermDepositTrade.of(TRADE_INFO, DEPOSIT); assertEquals(test.getProduct(), DEPOSIT); assertEquals(test.getInfo(), TRADE_INFO); }
public void test_resolve() { TermDepositTrade test = TermDepositTrade.of(TRADE_INFO, DEPOSIT); assertEquals(test.resolve(REF_DATA).getInfo(), TRADE_INFO); assertEquals(test.resolve(REF_DATA).getProduct(), DEPOSIT.resolve(REF_DATA)); }
public void test_builder() { ResolvedTermDepositTrade test = ResolvedTermDepositTrade.builder() .product(DEPOSIT) .info(TRADE_INFO) .build(); assertEquals(test.getProduct(), DEPOSIT); assertEquals(test.getInfo(), TRADE_INFO); }
((ResolvedTermDepositTrade) dscTrades.get(i)).getProduct(), result); assertEquals(pvIrs.getAmount(), 0.0, TOLERANCE_PV);
public void test_currentCash_onEndDate() { RatesProvider prov = ImmutableRatesProvider.builder(RDEPOSIT_TRADE.getProduct().getEndDate()) .discountCurve(EUR, CURVE) .build(); assertEquals(PRICER_TRADE.currentCash(RDEPOSIT_TRADE, prov), CurrencyAmount.of(EUR, NOTIONAL + INTEREST)); }
public void test_currentCash_onStartDate() { RatesProvider prov = ImmutableRatesProvider.builder(RDEPOSIT_TRADE.getProduct().getStartDate()) .discountCurve(EUR, CURVE) .build(); assertEquals(PRICER_TRADE.currentCash(RDEPOSIT_TRADE, prov), CurrencyAmount.of(EUR, -NOTIONAL)); }
((ResolvedTermDepositTrade) usdTrades.get(i)).getProduct(), result); assertEquals(pvDep.getAmount(), 0.0, TOLERANCE_PV);
((ResolvedTermDepositTrade) dscTrades.get(i)).getProduct(), result); assertEquals(pvIrs.getAmount(), 0.0, TOLERANCE_PV);
((ResolvedTermDepositTrade) dscTrades.get(i)).getProduct(), result); assertEquals(pvIrs.getAmount(), 0.0, TOLERANCE_PV);
((ResolvedTermDepositTrade) dscTrades.get(i)).getProduct(), result); assertEquals(pvIrs.getAmount(), 0.0, TOLERANCE_PV);
((ResolvedTermDepositTrade) dscTrades.get(i)).getProduct(), result); assertEquals(pvIrs.getAmount(), 0.0, TOLERANCE_PV);
/** * Calculates the current cash. * * @param trade the trade * @param provider the rates provider * @return the current cash */ public CurrencyAmount currentCash(ResolvedTermDepositTrade trade, RatesProvider provider) { ResolvedTermDeposit product = trade.getProduct(); if (product.getStartDate().isEqual(provider.getValuationDate())) { return CurrencyAmount.of(product.getCurrency(), -product.getNotional()); } if (product.getEndDate().isEqual(provider.getValuationDate())) { return CurrencyAmount.of(product.getCurrency(), product.getNotional() + product.getInterest()); } return CurrencyAmount.zero(product.getCurrency()); }