Since we can use Hull-White tree to calculate the price of a option embedded bond, which can be achieved by the QuantLib pricing engine TreeCallableFixedRateBondEngine, can this engine be also used to calculate the plain bond price, therefore we can calculate the option price by deducting callable bond npv from plain bond npv?


1 Answer 1


Not directly. However, you can instantiate another callable bond with an empty callability schedule and use TreeCallableFixedRateBondEngine. This will give you the value of the plain bond.

  • $\begingroup$ Thank you very much, Luigi! But why can't the DiscountingBondEngine pricing engine be used to calculate the plain bond value according to the definition of plain bond (which is a plain bond is a bond without any option embedded)? $\endgroup$
    – Slowman
    Commented Jun 12 at 9:31
  • 1
    $\begingroup$ You can also use DiscountingBondEngine. Using TreeCallableFixedRateBondEngine for both callable and plain bond might cancel out numerical errors, since they're likely to be systematic. But they're probably negligible anyway. $\endgroup$ Commented Jun 13 at 10:15
  • $\begingroup$ Hi, @Luigi ~, I've tried set an empty callability schedule by just give an empty datelist to 'ql.CallabilitySchedule()' to append, but the 'CallableFixedRateBond' function returns aan error of in method 'new_CallableFixedRateBond', argument 9 of type 'std::vector< ext::shared_ptr< Callability >,std::allocator< ext::shared_ptr< Callability > > > const &'. so, how can I build an empty callability schedule for a 'CallableFixedRateBond' ? $\endgroup$
    – Slowman
    Commented Jun 16 at 1:42
  • $\begingroup$ Either use ql.CallabilitySchedule() and don't append anything, or just pass an empty list [] to the constructor of ql.CallableFixedRateBond where the callability schedule is expected. $\endgroup$ Commented Jun 16 at 11:35
  • $\begingroup$ Neither works and still get the errorTypeError: in method 'new_CallableFixedRateBond', argument 9 of type 'std::vector< ext::shared_ptr< Callability >,std::allocator< ext::shared_ptr< Callability > > > const &'...maybe it should work in C++? $\endgroup$
    – Slowman
    Commented Jun 17 at 6:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.