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); }
//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); }
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); }
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); }