//------------------------------------------------------------------------- public virtual void test_of_single() { BondFutureOptionMarketDataLookup test = BondFutureOptionMarketDataLookup.of(SEC_OG1, VOL_ID1); assertEquals(test.queryType(), typeof(BondFutureOptionMarketDataLookup)); assertEquals(test.VolatilitySecurityIds, ImmutableSet.of(SEC_OG1)); assertEquals(test.getVolatilityIds(SEC_OG1), ImmutableSet.of(VOL_ID1)); assertThrowsIllegalArg(() => test.getVolatilityIds(SEC_OG2)); assertEquals(test.requirements(SEC_OG1), FunctionRequirements.builder().valueRequirements(VOL_ID1).build()); assertEquals(test.requirements(ImmutableSet.of(SEC_OG1)), FunctionRequirements.builder().valueRequirements(VOL_ID1).build()); assertThrowsIllegalArg(() => test.requirements(ImmutableSet.of(SEC_OG3))); }
public virtual void test_of_map() { ImmutableMap <SecurityId, BondFutureVolatilitiesId> ids = ImmutableMap.of(SEC_OG1, VOL_ID1, SEC_OG2, VOL_ID1); BondFutureOptionMarketDataLookup test = BondFutureOptionMarketDataLookup.of(ids); assertEquals(test.queryType(), typeof(BondFutureOptionMarketDataLookup)); assertEquals(test.VolatilitySecurityIds, ImmutableSet.of(SEC_OG1, SEC_OG2)); assertEquals(test.getVolatilityIds(SEC_OG1), ImmutableSet.of(VOL_ID1)); assertThrowsIllegalArg(() => test.getVolatilityIds(SEC_OG3)); assertEquals(test.requirements(SEC_OG1), FunctionRequirements.builder().valueRequirements(VOL_ID1).build()); assertEquals(test.requirements(ImmutableSet.of(SEC_OG1)), FunctionRequirements.builder().valueRequirements(VOL_ID1).build()); assertThrowsIllegalArg(() => test.requirements(ImmutableSet.of(SEC_OG3))); assertEquals(test.volatilities(SEC_OG1, MOCK_MARKET_DATA), MOCK_VOLS); assertThrowsIllegalArg(() => test.volatilities(SEC_OG3, MOCK_MARKET_DATA)); }
//------------------------------------------------------------------------- public virtual FunctionRequirements requirements(T target, ISet <Measure> measures, CalculationParameters parameters, ReferenceData refData) { // extract data from product BondFutureOption option = target.Product; BondFuture future = option.UnderlyingFuture; // use lookup to build requirements QuoteId optionQuoteId = QuoteId.of(option.SecurityId.StandardId, FieldName.SETTLEMENT_PRICE); FunctionRequirements freqs = FunctionRequirements.builder().valueRequirements(optionQuoteId).outputCurrencies(future.Currency, option.Currency).build(); LegalEntityDiscountingMarketDataLookup ledLookup = parameters.getParameter(typeof(LegalEntityDiscountingMarketDataLookup)); foreach (FixedCouponBond bond in future.DeliveryBasket) { freqs = freqs.combinedWith(ledLookup.requirements(bond.SecurityId, bond.LegalEntityId, bond.Currency)); } BondFutureOptionMarketDataLookup optionLookup = parameters.getParameter(typeof(BondFutureOptionMarketDataLookup)); FunctionRequirements optionReqs = optionLookup.requirements(future.SecurityId); return(freqs.combinedWith(optionReqs)); }