示例#1
0
        public void TestConvertibleBond_BSPricer()
        {
            var convertibleBond = GeliCB(American: false);
            var optionEngine    = new AnalyticalVanillaEuropeanOptionEngine();
            var engine          = new SimpleConvertibleBondEngine <AnalyticalVanillaEuropeanOptionEngine>(optionEngine as AnalyticalVanillaEuropeanOptionEngine);
            var market          = TestMarket_Jin("2017-10-25", spot: 6.14);
            var result          = engine.Calculate(convertibleBond, market, PricingRequest.All);
            var optionPrem      = market.MktQuote.Value[convertibleBond.Bond.Id].Item2 - result.Pv;

            Assert.AreEqual(convertibleBond.ConversionRatio * 1.634147761, optionPrem, 1e-7);
        }
示例#2
0
        //TODO: enable true MC pricer after CB MC model improvement
        public void TestConvertibleBond_American_MCPricer()
        {
            var convertibleBond = GeliCB(American: true);
            var optionEngine    = new GenericMonteCarloEngine(2, 50000);
            var engine          = new SimpleConvertibleBondEngine <GenericMonteCarloEngine>(optionEngine as GenericMonteCarloEngine);
            var market          = TestMarket_Jin("2017-10-20", spot: 6.07);
            var result          = engine.Calculate(convertibleBond, market, PricingRequest.All);
            var optionPrem      = market.MktQuote.Value[convertibleBond.Bond.Id].Item2 - result.Pv;

            Assert.AreEqual(convertibleBond.ConversionRatio * 1.603780133, optionPrem, 1e-7);
        }
示例#3
0
        public void TestConvertibleBond_14BaoGangE_BSPricer_NoFailure()
        {
            var convertibleBond = BaoGangCB();
            var optionEngine    = new AnalyticalVanillaEuropeanOptionEngine();
            var engine          = new SimpleConvertibleBondEngine <AnalyticalVanillaEuropeanOptionEngine>(optionEngine as AnalyticalVanillaEuropeanOptionEngine);
            var market          = TestMarket_Jin("2017-10-24", spot: 58.6800, CBprice: 141.97);
            var result          = engine.Calculate(convertibleBond, market, PricingRequest.All);
            var optionPrem      = market.MktQuote.Value[convertibleBond.Bond.Id].Item2 - result.Pv;

            Assert.AreEqual(convertibleBond.ConversionRatio * 16.74444583, optionPrem, 1e-7);
        }
示例#4
0
        public void TestConvertibleBond_TreePricer()
        {
            var convertibleBond = GeliCB();
            var engine          = new SimpleConvertibleBondEngine <BinomialTreeAmericanEngine>(
                new BinomialTreeAmericanEngine(BinomialTreeType.CoxRossRubinstein, 2000)
                );
            var market     = TestMarket_Jin("2017-10-20", spot: 6.07);
            var result     = engine.Calculate(convertibleBond, market, PricingRequest.All);
            var optionPrem = market.MktQuote.Value[convertibleBond.Bond.Id].Item2 - result.Pv;

            Assert.AreEqual(convertibleBond.ConversionRatio * 1.598263004, optionPrem, 1e-7);
        }