/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(IborFutureCurveNode beanToCopy) { this.template = beanToCopy.getTemplate(); this.rateId = beanToCopy.getRateId(); this.additionalSpread = beanToCopy.getAdditionalSpread(); this.label = beanToCopy.getLabel(); this.date = beanToCopy.getDate(); this.dateOrder = beanToCopy.getDateOrder(); }
/** * Obtains a curve node for an Ibor Future using the specified template and rate key. * * @param template the template used for building the instrument for the node * @param rateId the identifier of the market rate for the security * @return a node whose instrument is built from the template using a market rate */ public static IborFutureCurveNode of(IborFutureTemplate template, QuoteId rateId) { return of(template, rateId, 0d); }
@Override public IborFutureCurveNode build() { return new IborFutureCurveNode( template, rateId, additionalSpread, label, date, dateOrder); }
@Override public LocalDate date(LocalDate valuationDate, ReferenceData refData) { LocalDate referenceDate = template.calculateReferenceDateFromTradeDate(valuationDate, refData); return date.calculate( () -> calculateEnd(referenceDate, refData), () -> calculateLastFixingDate(valuationDate, refData)); }
public void test_of_withSpread() { IborFutureCurveNode test = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); assertEquals(test.getRateId(), QUOTE_ID); assertEquals(test.getAdditionalSpread(), SPREAD); assertEquals(test.getTemplate(), TEMPLATE); }
public void test_builder() { IborFutureCurveNode test = IborFutureCurveNode.builder() .label(LABEL) .template(TEMPLATE) .rateId(QUOTE_ID) .additionalSpread(SPREAD) .build(); assertEquals(test.getRateId(), QUOTE_ID); assertEquals(test.getAdditionalSpread(), SPREAD); assertEquals(test.getTemplate(), TEMPLATE); assertEquals(test.getDate(), CurveNodeDate.END); }
public void test_metadata_fixed() { LocalDate nodeDate = VAL_DATE.plusMonths(1); IborFutureCurveNode node = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.of(nodeDate)); DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA); assertEquals(metadata.getDate(), nodeDate); assertEquals(metadata.getLabel(), node.getLabel()); }
public void test_metadata_last_fixing() { IborFutureCurveNode node = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL).withDate(CurveNodeDate.LAST_FIXING); ImmutableMarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, 0.0d).build(); IborFutureTrade trade = node.trade(1d, marketData, REF_DATA); LocalDate fixingDate = trade.getProduct().getFixingDate(); DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA); assertEquals(metadata.getDate(), fixingDate); LocalDate referenceDate = TEMPLATE.calculateReferenceDateFromTradeDate(VAL_DATE, REF_DATA); assertEquals(((YearMonthDateParameterMetadata) metadata).getYearMonth(), YearMonth.from(referenceDate)); }
public void test_requirements() { IborFutureCurveNode test = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); Set<ObservableId> set = test.requirements(); Iterator<ObservableId> itr = set.iterator(); assertEquals(itr.next(), QUOTE_ID); assertFalse(itr.hasNext()); }
public void test_initialGuess() { IborFutureCurveNode node = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); double price = 0.99; MarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, price).build(); assertEquals(node.initialGuess(marketData, ValueType.ZERO_RATE), 1.0 - price, TOLERANCE_RATE); assertEquals(node.initialGuess(marketData, ValueType.FORWARD_RATE), 1.0 - price, TOLERANCE_RATE); double approximateMaturity = TEMPLATE.approximateMaturity(VAL_DATE); double df = Math.exp(-approximateMaturity * (1.0 - price)); assertEquals(node.initialGuess(marketData, ValueType.DISCOUNT_FACTOR), df, TOLERANCE_RATE); assertEquals(node.initialGuess(marketData, ValueType.UNKNOWN), 0.0d, TOLERANCE_RATE); }
public void test_metadata_end() { IborFutureCurveNode node = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL); LocalDate date = LocalDate.of(2015, 10, 20); LocalDate referenceDate = TEMPLATE.calculateReferenceDateFromTradeDate(date, REF_DATA); LocalDate maturityDate = TEMPLATE.getIndex().calculateMaturityFromEffective(referenceDate, REF_DATA); ParameterMetadata metadata = node.metadata(date, REF_DATA); assertEquals(metadata.getLabel(), LABEL); assertTrue(metadata instanceof YearMonthDateParameterMetadata); assertEquals(((YearMonthDateParameterMetadata) metadata).getDate(), maturityDate); assertEquals(((YearMonthDateParameterMetadata) metadata).getYearMonth(), YearMonth.from(referenceDate)); }
@Override public ResolvedIborFutureTrade resolvedTrade(double quantity, MarketData marketData, ReferenceData refData) { return trade(quantity, marketData, refData).resolve(refData); }
IborFutureConvention convention = IborFutureConvention.of(conventionStr); IborFutureTemplate template = IborFutureTemplate.of(periodToStart, sequenceNumber, convention); return IborFutureCurveNode.builder() .template(template) .rateId(quoteId) IborFutureConvention convention = IborFutureConvention.of(conventionStr); IborFutureTemplate template = IborFutureTemplate.of(yearMonth, convention); return IborFutureCurveNode.builder() .template(template) .rateId(quoteId)
public void test_of_withSpreadAndLabel() { IborFutureCurveNode test = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD, LABEL); assertEquals(test.getRateId(), QUOTE_ID); assertEquals(test.getAdditionalSpread(), SPREAD); assertEquals(test.getTemplate(), TEMPLATE); }
public void test_trade() { IborFutureCurveNode node = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); double price = 0.99; MarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, price).build(); IborFutureTrade trade = node.trade(1d, marketData, REF_DATA); IborFutureTrade expected = TEMPLATE.createTrade( VAL_DATE, SecurityId.of(STANDARD_ID), 1L, 1.0, price + SPREAD, REF_DATA); assertEquals(trade, expected); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case -1321546630: // template return ((IborFutureCurveNode) bean).getTemplate(); case -938107365: // rateId return ((IborFutureCurveNode) bean).getRateId(); case 291232890: // additionalSpread return ((IborFutureCurveNode) bean).getAdditionalSpread(); case 102727412: // label return ((IborFutureCurveNode) bean).getLabel(); case 3076014: // date return ((IborFutureCurveNode) bean).getDate(); case -263699392: // dateOrder return ((IborFutureCurveNode) bean).getDateOrder(); } return super.propertyGet(bean, propertyName, quiet); }
public void test_of_no_spread() { IborFutureCurveNode test = IborFutureCurveNode.of(TEMPLATE, QUOTE_ID); assertEquals(test.getRateId(), QUOTE_ID); assertEquals(test.getAdditionalSpread(), 0.0d); assertEquals(test.getTemplate(), TEMPLATE); }
/** * Obtains a curve node for an Ibor Future using the specified template, rate key and spread. * * @param template the template defining the node instrument * @param rateId the identifier of the market rate for the security * @param additionalSpread the additional spread amount added to the rate * @return a node whose instrument is built from the template using a market rate */ public static IborFutureCurveNode of( IborFutureTemplate template, QuoteId rateId, double additionalSpread) { return of(template, rateId, additionalSpread, ""); }
/** * Returns a copy of this node with the specified date. * * @param date the date to use * @return the node based on this node with the specified date */ public IborFutureCurveNode withDate(CurveNodeDate date) { return new IborFutureCurveNode(template, rateId, additionalSpread, label, date, dateOrder); }