Ejemplo n.º 1
0
        public void TestCurrentPrimeRate()
        {
            var bond = new FloatingRateBondInfo("N0000472015ABSLBS0103.CIB")
            {
                StartDate          = "20150910",
                MaturityDate       = "2017-07-26",
                Notional           = 100.0,
                Currency           = "CNY",
                Spread             = 0.029900000000000003,
                Calendar           = "chn_ib",
                PaymentFreq        = "Quarterly",
                PaymentStub        = "ShortStart",
                AccrualDC          = "ActActIsma",
                DayCount           = "ActActIsma",
                AccrualBD          = "None",
                PaymentBD          = "None",
                TradingMarket      = "ChinaInterBank",
                Settlement         = "+0D",
                ValuationParamters = new SimpleCfValuationParameters("Fr007", "Fr007", "Fr007"),

                Index            = IndexType.Depo1Y.ToString(),
                ResetDC          = DayCount.ActActIsma.ToString(),
                ResetAverageDays = 1,
                ResetTerm        = "3M",
                ResetStub        = Stub.ShortStart.ToString(),
                ResetBD          = BusinessDayConvention.None.ToString(),
                ResetToFixingGap = "-0dD",
                FloatingCalc     = "ZzFrn",
                ResetCompound    = CouponCompound.Simple.ToString(),
                ResetRateDigits  = 4
            };

            var bondVf         = new BondVf(bond);
            var bondInstrument = bondVf.GenerateInstrument();
            var valueDate      = new Date(2017, 1, 9);
            var market         = TestMarket(valueDate.ToString(), new BondMktData(bond.TradeId, "Dirty", 100.995424657531));

            var marketCondition = bondVf.GenerateMarketCondition(market);

            var result = bondInstrument.Coupon.GetPrimeCoupon(marketCondition.HistoricalIndexRates, marketCondition.FixingCurve.Value, valueDate);

            Assert.AreEqual(0.015, result.Item2);
            Assert.AreEqual("2016-12-23", result.Item1.ToString());
        }