/// <summary> /// Generates a Bill trade instance where the price is computed from the traded yield. /// </summary> /// <param name="info"> the additional trade information </param> /// <param name="product"> the bill that was traded </param> /// <param name="quantity"> the quantity that was traded </param> /// <param name="yield"> the yield at which the bill was traded </param> /// <returns> the instance </returns> public static BillTrade ofYield(TradeInfo info, Bill product, double quantity, double yield) { ArgChecker.isTrue(info.SettlementDate.Present, "Bill trades from yield need a settlement date"); LocalDate settlementDate = info.SettlementDate.get(); double price = product.priceFromYield(yield, settlementDate); return(BillTrade.builder().info(info).product(product).quantity(quantity).price(price).build()); }
public virtual void test_withPrice() { BillTrade @base = sut_yield(); double price = 135d; BillTrade computed = @base.withPrice(price); BillTrade expected = BillTrade.builder().info(TRADE_INFO).product(PRODUCT).quantity(QUANTITY).price(price).build(); assertEquals(computed, expected); }
//------------------------------------------------------------------------- public virtual void test_withQuantity() { BillTrade @base = sut_price(); double quantity = 75343d; BillTrade computed = @base.withQuantity(quantity); BillTrade expected = BillTrade.builder().info(TRADE_INFO).product(PRODUCT).quantity(quantity).price(PRICE).build(); assertEquals(computed, expected); }
//------------------------------------------------------------------------- public virtual void test_createProduct() { BillSecurity @base = BillSecurity.builder().dayCount(DAY_COUNT).info(INFO).legalEntityId(LEGAL_ENTITY).notional(NOTIONAL).settlementDateOffset(SETTLE).yieldConvention(YIELD_CONVENTION).build(); Bill expectedProduct = Bill.builder().dayCount(DAY_COUNT).securityId(SECURITY_ID).dayCount(DAY_COUNT).legalEntityId(LEGAL_ENTITY).notional(NOTIONAL).settlementDateOffset(SETTLE).yieldConvention(YIELD_CONVENTION).build(); assertEquals(@base.createProduct(ReferenceData.empty()), expectedProduct); TradeInfo tradeInfo = TradeInfo.of(date(2016, 6, 30)); BillTrade expectedTrade = BillTrade.builder().info(tradeInfo).product(expectedProduct).quantity(100).price(1.235).build(); assertEquals(@base.createTrade(tradeInfo, 100, 1.235, ReferenceData.empty()), expectedTrade); }
public virtual void test_settle_or_trade() { assertThrows(() => BillTrade.builder().info(TradeInfo.empty()).product(PRODUCT).quantity(QUANTITY).price(PRICE).build(), typeof(System.ArgumentException)); }
public virtual void test_price() { assertThrows(() => BillTrade.builder().info(TRADE_INFO).product(PRODUCT).quantity(QUANTITY).build(), typeof(System.ArgumentException)); }
internal static BillTrade sut2() { return(BillTrade.builder().info(TRADE_INFO2).product(PRODUCT2).quantity(100L).price(PRICE2).build()); }
/// <summary> /// Generates a Bill trade instance from the price. /// </summary> /// <param name="info"> the additional trade information </param> /// <param name="product"> the bill that was traded </param> /// <param name="quantity"> the quantity that was traded </param> /// <param name="price"> the price at which the bill was traded </param> /// <returns> the instance </returns> public static BillTrade ofPrice(TradeInfo info, Bill product, double quantity, double price) { return(BillTrade.builder().info(info).product(product).quantity(quantity).price(price).build()); }