public void test_of() { TermDepositTemplate test = TermDepositTemplate.of(DEPOSIT_PERIOD, CONVENTION); assertEquals(test.getConvention(), CONVENTION); assertEquals(test.getDepositPeriod(), DEPOSIT_PERIOD); }
@Override public TermDepositTemplate build() { return new TermDepositTemplate( depositPeriod, convention); }
@Override public TermDepositTrade trade(double quantity, MarketData marketData, ReferenceData refData) { double fixedRate = marketData.getValue(rateId) + additionalSpread; BuySell buySell = quantity > 0 ? BuySell.BUY : BuySell.SELL; return template.createTrade(marketData.getValuationDate(), buySell, Math.abs(quantity), fixedRate, refData); }
/** * Restricted copy constructor. * @param beanToCopy the bean to copy from, not null */ private Builder(TermDepositTemplate beanToCopy) { this.depositPeriod = beanToCopy.getDepositPeriod(); this.convention = beanToCopy.getConvention(); }
public void test_builder() { TermDepositTemplate test = TermDepositTemplate.builder() .convention(CONVENTION) .depositPeriod(DEPOSIT_PERIOD) .build(); assertEquals(test.getConvention(), CONVENTION); assertEquals(test.getDepositPeriod(), DEPOSIT_PERIOD); }
public void test_serialization() { TermDepositTemplate test = TermDepositTemplate.of(DEPOSIT_PERIOD, CONVENTION); assertSerialization(test); }
@ImmutablePreBuild private static void preBuild(Builder builder) { if (builder.label == null && builder.template != null) { builder.label = Tenor.of(builder.template.getDepositPeriod()).toString(); } }
/** * Obtains a template based on the specified period and convention. * * @param depositPeriod the period between the start date and the end date * @param convention the market convention * @return the template */ public static TermDepositTemplate of(Period depositPeriod, TermDepositConvention convention) { ArgChecker.notNull(depositPeriod, "depositPeriod"); ArgChecker.notNull(convention, "convention"); return TermDepositTemplate.builder() .depositPeriod(depositPeriod) .convention(convention) .build(); }
private TermDepositTemplate( Period depositPeriod, TermDepositConvention convention) { JodaBeanUtils.notNull(depositPeriod, "depositPeriod"); JodaBeanUtils.notNull(convention, "convention"); this.depositPeriod = depositPeriod; this.convention = convention; validate(); }
@Override protected Object propertyGet(Bean bean, String propertyName, boolean quiet) { switch (propertyName.hashCode()) { case 14649855: // depositPeriod return ((TermDepositTemplate) bean).getDepositPeriod(); case 2039569265: // convention return ((TermDepositTemplate) bean).getConvention(); } return super.propertyGet(bean, propertyName, quiet); }
private static CurveNode curveTermDepositCurveNode( String conventionStr, String timeStr, String label, QuoteId quoteId, double spread, CurveNodeDate date, CurveNodeDateOrder order) { Matcher matcher = SIMPLE_YMD_TIME_REGEX.matcher(timeStr.toUpperCase(Locale.ENGLISH)); if (!matcher.matches()) { throw new IllegalArgumentException(Messages.format("Invalid time format for Term Deposit: {}", timeStr)); } Period periodToEnd = Period.parse("P" + matcher.group(1)); TermDepositConvention convention = TermDepositConvention.of(conventionStr); TermDepositTemplate template = TermDepositTemplate.of(periodToEnd, convention); return TermDepositCurveNode.builder() .template(template) .rateId(quoteId) .additionalSpread(spread) .label(label) .date(date) .dateOrder(order) .build(); }
@Override public double initialGuess(MarketData marketData, ValueType valueType) { if (ValueType.ZERO_RATE.equals(valueType) || ValueType.FORWARD_RATE.equals(valueType)) { return marketData.getValue(rateId); } if (ValueType.DISCOUNT_FACTOR.equals(valueType)) { double approximateMaturity = template.getDepositPeriod().toTotalMonths() / 12.0d; return Math.exp(-approximateMaturity * marketData.getValue(rateId)); } return 0d; }
public void test_builder_negativePeriod() { assertThrowsIllegalArg(() -> TermDepositTemplate.builder() .convention(CONVENTION) .depositPeriod(Period.ofMonths(-2)) .build()); }
public void coverage() { TermDepositTemplate test1 = TermDepositTemplate.of(DEPOSIT_PERIOD, CONVENTION); coverImmutableBean(test1); TermDepositTemplate test2 = TermDepositTemplate.of(Period.ofMonths(6), ImmutableTermDepositConvention.of( "GBP-Dep", GBP, BDA_MOD_FOLLOW, ACT_365F, DaysAdjustment.ofBusinessDays(2, GBLO))); coverBeanEquals(test1, test2); }
@Override public DatedParameterMetadata metadata(LocalDate valuationDate, ReferenceData refData) { LocalDate nodeDate = date(valuationDate, refData); if (date.isFixed()) { return LabelDateParameterMetadata.of(nodeDate, label); } Tenor tenor = Tenor.of(template.getDepositPeriod()); return TenorDateParameterMetadata.of(nodeDate, tenor, label); }
private LocalDate calculateEnd(LocalDate valuationDate, ReferenceData refData) { TermDepositTrade trade = template.createTrade(valuationDate, BuySell.BUY, 0d, 0d, refData); ResolvedTermDeposit deposit = trade.getProduct().resolve(refData); return deposit.getEndDate(); }
public void coverage() { TermDepositCurveNode test = TermDepositCurveNode.of(TEMPLATE, QUOTE_ID, SPREAD); coverImmutableBean(test); TermDepositCurveNode test2 = TermDepositCurveNode.of( TermDepositTemplate.of(Period.ofMonths(1), CONVENTION), QuoteId.of(StandardId.of("OG-Ticker", "Deposit2"))); coverBeanEquals(test, test2); }