示例#1
0
        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");
        }
示例#2
0
        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);
        }
示例#5
0
        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);
        }
示例#7
0
        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);
        }
示例#9
0
 //-------------------------------------------------------------------------
 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));
 }
示例#10
0
 //-------------------------------------------------------------------------
 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)));
 }