public virtual void test_zar_jibar() { IborIndex test = IborIndex.of("ZAR-JIBAR-3M"); assertEquals(test.Currency, ZAR); assertEquals(test.Name, "ZAR-JIBAR-3M"); assertEquals(test.Tenor, TENOR_3M); assertEquals(test.FixingCalendar, ZAJO); assertEquals(test.FixingDateOffset, DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(PRECEDING, ZAJO))); assertEquals(test.EffectiveDateOffset, DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(FOLLOWING, ZAJO))); assertEquals(test.MaturityDateOffset, TenorAdjustment.of(TENOR_3M, PeriodAdditionConventions.NONE, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, ZAJO))); assertEquals(test.DayCount, ACT_365F); assertEquals(test.DefaultFixedLegDayCount, ACT_365F); assertEquals(test.ToString(), "ZAR-JIBAR-3M"); }
private static readonly HolidayCalendarId NZBD = HolidayCalendarId.of("NZBD"); // no constant for this public virtual void test_gbpLibor3m() { IborIndex test = IborIndex.of("GBP-LIBOR-3M"); assertEquals(test.Name, "GBP-LIBOR-3M"); assertEquals(test.Currency, GBP); assertEquals(test.Active, true); assertEquals(test.Tenor, TENOR_3M); assertEquals(test.FixingCalendar, GBLO); assertEquals(test.FixingDateOffset, DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(PRECEDING, GBLO))); assertEquals(test.EffectiveDateOffset, DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(FOLLOWING, GBLO))); assertEquals(test.MaturityDateOffset, TenorAdjustment.ofLastBusinessDay(TENOR_3M, BusinessDayAdjustment.of(MODIFIED_FOLLOWING, GBLO))); assertEquals(test.DayCount, ACT_365F); assertEquals(test.DefaultFixedLegDayCount, ACT_365F); assertEquals(test.FloatingRateName, FloatingRateName.of("GBP-LIBOR")); assertEquals(test.ToString(), "GBP-LIBOR-3M"); }
public virtual void test_builder() { ImmutableCdsConvention test = ImmutableCdsConvention.builder().businessDayAdjustment(BUSI_ADJ).startDateBusinessDayAdjustment(BusinessDayAdjustment.NONE).endDateBusinessDayAdjustment(BUSI_ADJ).currency(GBP).dayCount(ACT_365F).name(NAME).paymentFrequency(P6M).paymentOnDefault(PaymentOnDefault.NONE).protectionStart(ProtectionStartOfDay.NONE).rollConvention(RollConventions.NONE).settlementDateOffset(DaysAdjustment.ofCalendarDays(7)).stepinDateOffset(DaysAdjustment.NONE).stubConvention(StubConvention.LONG_INITIAL).build(); assertEquals(test.BusinessDayAdjustment, BUSI_ADJ); assertEquals(test.StartDateBusinessDayAdjustment, BusinessDayAdjustment.NONE); assertEquals(test.EndDateBusinessDayAdjustment, BUSI_ADJ); assertEquals(test.Currency, GBP); assertEquals(test.DayCount, ACT_365F); assertEquals(test.Name, NAME); assertEquals(test.PaymentFrequency, P6M); assertEquals(test.PaymentOnDefault, PaymentOnDefault.NONE); assertEquals(test.ProtectionStart, ProtectionStartOfDay.NONE); assertEquals(test.RollConvention, RollConventions.NONE); assertEquals(test.SettlementDateOffset, DaysAdjustment.ofCalendarDays(7)); assertEquals(test.StepinDateOffset, DaysAdjustment.NONE); assertEquals(test.StubConvention, StubConvention.LONG_INITIAL); }
public virtual void test_of() { ImmutableCdsConvention test = ImmutableCdsConvention.of(NAME, GBP, ACT_365F, P3M, BUSI_ADJ, SETTLE_DAY_ADJ); assertEquals(test.BusinessDayAdjustment, BUSI_ADJ); assertEquals(test.StartDateBusinessDayAdjustment, BUSI_ADJ); assertEquals(test.EndDateBusinessDayAdjustment, BusinessDayAdjustment.NONE); assertEquals(test.Currency, GBP); assertEquals(test.DayCount, ACT_365F); assertEquals(test.Name, NAME); assertEquals(test.PaymentFrequency, P3M); assertEquals(test.PaymentOnDefault, PaymentOnDefault.ACCRUED_PREMIUM); assertEquals(test.ProtectionStart, ProtectionStartOfDay.BEGINNING); assertEquals(test.RollConvention, RollConventions.DAY_20); assertEquals(test.SettlementDateOffset, SETTLE_DAY_ADJ); assertEquals(test.StepinDateOffset, DaysAdjustment.ofCalendarDays(1)); assertEquals(test.StubConvention, StubConvention.SMART_INITIAL); }
private Trade parseNdf(FpmlDocument document, XmlElement fxEl, XmlElement ndfEl, CurrencyAmount curr1Amount, CurrencyAmount curr2Amount, LocalDate valueDate, TradeInfoBuilder tradeInfoBuilder) { // rate XmlElement rateEl = fxEl.getChild("exchangeRate"); double rate = document.parseDecimal(rateEl.getChild("rate")); XmlElement pairEl = rateEl.getChild("quotedCurrencyPair"); Currency curr1 = document.parseCurrency(pairEl.getChild("currency1")); Currency curr2 = document.parseCurrency(pairEl.getChild("currency2")); string basis = pairEl.getChild("quoteBasis").Content; FxRate fxRate; if ("Currency2PerCurrency1".Equals(basis)) { fxRate = FxRate.of(curr1, curr2, rate); } else if ("Currency1PerCurrency2".Equals(basis)) { fxRate = FxRate.of(curr2, curr1, rate); } else { throw new FpmlParseException("Unknown quote basis: " + basis); } // settlement currency Currency settleCurr = document.parseCurrency(ndfEl.getChild("settlementCurrency")); CurrencyAmount settleCurrAmount = curr1Amount.Currency.Equals(settleCurr) ? curr1Amount : curr2Amount; // index XmlElement fixingEl = ndfEl.getChild("fixing"); // only support one of these in pricing model LocalDate fixingDate = document.parseDate(fixingEl.getChild("fixingDate")); DaysAdjustment offset = DaysAdjustment.ofCalendarDays(Math.toIntExact(valueDate.until(fixingDate, DAYS))); XmlElement sourceEl = fixingEl.getChild("fxSpotRateSource"); // required for our model XmlElement primarySourceEl = sourceEl.getChild("primaryRateSource"); string primarySource = primarySourceEl.getChild("rateSource").Content; string primaryPage = primarySourceEl.findChild("rateSourcePage").map(e => e.Content).orElse(""); LocalTime time = document.parseTime(sourceEl.getChild("fixingTime").getChild("hourMinuteTime")); // required for our model HolidayCalendarId calendar = document.parseBusinessCenter(sourceEl.getChild("fixingTime").getChild("businessCenter")); FxIndex index = ImmutableFxIndex.builder().name(primarySource + "/" + primaryPage + "/" + time).currencyPair(CurrencyPair.of(curr1, curr2)).fixingCalendar(calendar).maturityDateOffset(offset).build(); return(FxNdfTrade.builder().info(tradeInfoBuilder.build()).product(FxNdf.builder().settlementCurrencyNotional(settleCurrAmount).agreedFxRate(fxRate).index(index).paymentDate(valueDate).build()).build()); }
public virtual void test_createTrade_periods_adjust() { FraConvention @base = ImmutableFraConvention.builder().index(GBP_LIBOR_3M).spotDateOffset(NEXT_SAME_BUS_DAY).paymentDateOffset(DaysAdjustment.ofCalendarDays(0, BDA_FOLLOW)).build(); LocalDate tradeDate = LocalDate.of(2016, 8, 11); FraTrade test = @base.createTrade(tradeDate, Period.ofMonths(1), Period.ofMonths(4), BUY, NOTIONAL_2M, 0.25d, REF_DATA); Fra expected = Fra.builder().buySell(BUY).notional(NOTIONAL_2M).startDate(date(2016, 9, 12)).endDate(date(2016, 12, 12)).paymentDate(AdjustableDate.of(date(2016, 9, 12), BDA_FOLLOW)).fixedRate(0.25d).index(GBP_LIBOR_3M).build(); assertEquals(test.Info.TradeDate, tradeDate); assertEquals(test.Product, expected); }
public virtual void test_dates() { FxIndex test = ImmutableFxIndex.builder().name("Test").currencyPair(CurrencyPair.of(EUR, GBP)).fixingCalendar(NO_HOLIDAYS).maturityDateOffset(DaysAdjustment.ofCalendarDays(2)).build(); assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 13), REF_DATA), date(2014, 10, 15)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 15), REF_DATA), date(2014, 10, 13)); // weekend assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 16), REF_DATA), date(2014, 10, 18)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 18), REF_DATA), date(2014, 10, 16)); assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 17), REF_DATA), date(2014, 10, 19)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 19), REF_DATA), date(2014, 10, 17)); // input date is Sunday assertEquals(test.calculateMaturityFromFixing(date(2014, 10, 19), REF_DATA), date(2014, 10, 21)); assertEquals(test.calculateFixingFromMaturity(date(2014, 10, 19), REF_DATA), date(2014, 10, 17)); }
//------------------------------------------------------------------------- public virtual void coverage() { ImmutableCdsConvention test1 = ImmutableCdsConvention.of(NAME, GBP, ACT_360, P3M, BUSI_ADJ_STD, SETTLE_DAY_ADJ_STD); coverImmutableBean(test1); ImmutableCdsConvention test2 = ImmutableCdsConvention.builder().businessDayAdjustment(BUSI_ADJ).startDateBusinessDayAdjustment(BusinessDayAdjustment.NONE).endDateBusinessDayAdjustment(BUSI_ADJ).currency(USD).dayCount(ACT_365F).name("another").paymentFrequency(P6M).paymentOnDefault(PaymentOnDefault.NONE).protectionStart(ProtectionStartOfDay.NONE).rollConvention(RollConventions.NONE).settlementDateOffset(DaysAdjustment.ofCalendarDays(7)).stepinDateOffset(DaysAdjustment.NONE).stubConvention(StubConvention.LONG_INITIAL).build(); coverBeanEquals(test1, test2); }
//------------------------------------------------------------------------- public virtual void test_cibor() { assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").DefaultTenor, Tenor.TENOR_3M); assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").toFloatingRateIndex(), IborIndices.DKK_CIBOR_3M); assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").toFloatingRateIndex(Tenor.TENOR_1M), IborIndices.DKK_CIBOR_1M); assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").toIborIndex(Tenor.TENOR_6M), IborIndices.DKK_CIBOR_6M); assertEquals(FloatingRateName.of("DKK-CIBOR2-DKNA13").toIborIndex(Tenor.TENOR_6M), IborIndices.DKK_CIBOR_6M); assertEquals(FloatingRateName.of("DKK-CIBOR-DKNA13").toIborIndexFixingOffset(), DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(PRECEDING, DKCO))); assertEquals(FloatingRateName.of("DKK-CIBOR2-DKNA13").toIborIndexFixingOffset(), DaysAdjustment.ofBusinessDays(-2, DKCO)); }
//------------------------------------------------------------------------- public virtual void test_iborIndex_tenor() { assertEquals(FloatingRateName.of("GBP-LIBOR-BBA").DefaultTenor, Tenor.TENOR_3M); assertEquals(FloatingRateName.of("GBP-LIBOR-BBA").toFloatingRateIndex(), IborIndices.GBP_LIBOR_3M); assertEquals(FloatingRateName.of("GBP-LIBOR-BBA").toFloatingRateIndex(Tenor.TENOR_1M), IborIndices.GBP_LIBOR_1M); assertEquals(FloatingRateName.of("GBP-LIBOR-BBA").toIborIndex(Tenor.TENOR_6M), IborIndices.GBP_LIBOR_6M); assertEquals(FloatingRateName.of("GBP-LIBOR-BBA").toIborIndex(Tenor.TENOR_12M), IborIndices.GBP_LIBOR_12M); assertEquals(FloatingRateName.of("GBP-LIBOR-BBA").toIborIndex(Tenor.TENOR_1Y), IborIndices.GBP_LIBOR_12M); assertThrows(() => FloatingRateName.of("GBP-WMBA-SONIA-COMPOUND").toIborIndex(Tenor.TENOR_6M), typeof(System.InvalidOperationException)); assertEquals(ImmutableList.copyOf(FloatingRateName.of("GBP-LIBOR-BBA").Tenors), ImmutableList.of(Tenor.TENOR_1W, Tenor.TENOR_1M, Tenor.TENOR_2M, Tenor.TENOR_3M, Tenor.TENOR_6M, Tenor.TENOR_12M)); assertEquals(FloatingRateName.of("GBP-LIBOR-BBA").toIborIndexFixingOffset(), DaysAdjustment.ofCalendarDays(0, BusinessDayAdjustment.of(PRECEDING, GBLO))); }