/** * Gets the periodic frequency of accrual. * <p> * Interest will be accrued over periods at the specified periodic frequency, such as every 3 months. * <p> * This will default to the tenor of the index if not specified. * * @return the accrual frequency, not null */ public Frequency getAccrualFrequency() { return accrualFrequency != null ? accrualFrequency : Frequency.of(index.getTenor().getPeriod()); }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.depositPeriod == null && builder.convention != null) { builder.depositPeriod = builder.convention.getIndex().getTenor().getPeriod(); } }
/** * Obtains a template based on the specified index. * <p> * The period from the start date to the end date will be the tenor of the index. * The convention will be created based on the index. * * @param index the index that defines the market convention * @return the template */ public static IborFixingDepositTemplate of(IborIndex index) { return of(index.getTenor().getPeriod(), IborFixingDepositConvention.of(index)); }
@Override public LocalDate date(LocalDate tradeDate, ReferenceData refData) { LocalDate startDate = spotDateOffset.adjust(tradeDate, refData); LocalDate endDate = startDate.plus(tenor.getPeriod()); return businessDayAdjustment.adjust(endDate, refData); }
private static Period parseInflationLag(Optional<String> strOpt, Currency currency) { if (!strOpt.isPresent()) { if (Currency.GBP.equals(currency)) { return Period.ofMonths(2); } return Period.ofMonths(3); } String str = strOpt.get(); Integer months = Ints.tryParse(str); if (months != null) { return Period.ofMonths(months); } return Tenor.parse(str).getPeriod(); }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.periodToEnd == null && builder.convention != null && builder.periodToStart != null) { builder.periodToEnd = builder.periodToStart.plus(builder.convention.getIndex().getTenor().getPeriod()); } }
@Test(dataProvider = "normalized") public void test_normalized(Period period, Period normalized) { assertEquals(Tenor.of(period).normalized().getPeriod(), normalized); }
@Test(dataProvider = "ofMonths") public void test_ofMonths(int months, Period stored, String str) { assertEquals(Tenor.ofMonths(months).getPeriod(), stored); assertEquals(Tenor.ofMonths(months).toString(), str); }
@Test(dataProvider = "ofYears") public void test_ofYears(int years, Period stored, String str) { assertEquals(Tenor.ofYears(years).getPeriod(), stored); assertEquals(Tenor.ofYears(years).toString(), str); }
@Test(dataProvider = "ofPeriod") public void test_ofPeriod(Period period, Period stored, String str) { assertEquals(Tenor.of(period).getPeriod(), stored); assertEquals(Tenor.of(period).toString(), str); }
public void test_of_index() { IborFixingDepositTemplate test = IborFixingDepositTemplate.of(EUR_LIBOR_3M); assertEquals(test.getConvention(), CONVENTION); assertEquals(test.getDepositPeriod(), EUR_LIBOR_3M.getTenor().getPeriod()); }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.index != null) { if (builder.accrualFactor == 0d && builder.index.getTenor().isMonthBased()) { builder.accrualFactor(builder.index.getTenor().getPeriod().toTotalMonths() / 12d); } if (builder.currency == null) { builder.currency = builder.index.getCurrency(); } } }
public static DummyFraCurveNode of(Period periodToStart, IborIndex index, ObservableId rateId) { return new DummyFraCurveNode( periodToStart, periodToStart.plus(index.getTenor().getPeriod()), rateId, 0, "Dummy:" + periodToStart, CurveNodeDateOrder.DEFAULT); }
public static DummyFraCurveNode of(Period periodToStart, IborIndex index, ObservableId rateId, double spread) { return new DummyFraCurveNode( periodToStart, periodToStart.plus(index.getTenor().getPeriod()), rateId, spread, "Dummy:" + periodToStart, CurveNodeDateOrder.DEFAULT); }
public static DummyFraCurveNode of(Period periodToStart, IborIndex index, ObservableId rateId, CurveNodeDateOrder order) { return new DummyFraCurveNode( periodToStart, periodToStart.plus(index.getTenor().getPeriod()), rateId, 0, "Dummy:" + periodToStart, order); }
public void test_initialGuess() { FixedOvernightSwapCurveNode node = FixedOvernightSwapCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); double rate = 0.035; MarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, rate).build(); assertEquals(node.initialGuess(marketData, ValueType.ZERO_RATE), rate); assertEquals(node.initialGuess(marketData, ValueType.FORWARD_RATE), rate); assertEquals(node.initialGuess(marketData, ValueType.DISCOUNT_FACTOR), Math.exp(-rate * TENOR_10Y.getPeriod().toTotalMonths() / 12d), 1.0E-12); }
public void test_builder_noPeriod() { IborFixingDepositTemplate test = IborFixingDepositTemplate.builder() .convention(CONVENTION) .build(); assertEquals(test.getConvention(), CONVENTION); assertEquals(test.getDepositPeriod(), EUR_LIBOR_3M.getTenor().getPeriod()); }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.iborRate != null) { if (builder.accrualFactor == 0d && builder.iborRate.getIndex().getTenor().isMonthBased()) { builder.accrualFactor(builder.iborRate.getIndex().getTenor().getPeriod().toTotalMonths() / 12d); } if (builder.currency == null) { builder.currency = builder.iborRate.getIndex().getCurrency(); } } }
public void test_metadata_last_fixing() { IborFixingDepositCurveNode node = IborFixingDepositCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD).withDate(CurveNodeDate.LAST_FIXING); ImmutableMarketData marketData = ImmutableMarketData.builder(VAL_DATE).addValue(QUOTE_ID, 0.0d).build(); IborFixingDepositTrade trade = node.trade(1d, marketData, REF_DATA); ResolvedIborFixingDeposit product = trade.getProduct().resolve(REF_DATA); LocalDate fixingDate = ((IborRateComputation) product.getFloatingRate()).getFixingDate(); DatedParameterMetadata metadata = node.metadata(VAL_DATE, REF_DATA); assertEquals(((TenorDateParameterMetadata) metadata).getDate(), fixingDate); assertEquals(((TenorDateParameterMetadata) metadata).getTenor().getPeriod(), TEMPLATE.getDepositPeriod()); }