QuantLib
QuantLib copied to clipboard
CallableBonds with american optionality
hey, is americain optionality for callable bond is implemented yet? if no is there any way I can get around that and implement it using Quantlib? (I use Python) Thank you
Thanks for posting! It might take a while before we look at your issue, so don't worry if there seems to be no feedback. We'll get to it.
According to the comment in the code, American optionality is not yet implemented.
If a daily callability schedule is equivalent to American optionality for your use case, then you can try passing all the days to the putCallSchedule argument of CallableFixedRateBond. This assumes your callable bond is fixed rate.
Hi @FahdElXD and @sweemer,
using a daily schedule is normally a good way to simulate American optionality but be aware:
- if you have a daily schedule than the callability price needs to take into account the accrual for the current coupon period as well e.g. using
Bond::Price::Type::Cleanwhen providing the (standard) redemption of 100.00. - do not expect good performance here, the
TreeCallableFixedRateBondEnginewill have many tree nodes to calculate. - technically within the
TreeCallableFixedRateBondEngine(the only engine we currently have for callable bonds) we snap the call date to the coupon date if they are within one week. Not sure how this impacts the calculation if we have daily call dates. https://github.com/lballabio/QuantLib/blob/69cbda18c836ef4aec0e1a73943602b616fbd7d5/ql/experimental/callablebonds/discretizedcallablefixedratebond.cpp#L64-L66
Thanks @sweemer , @ralfkonrad , I have one more question is there a way in quantlib to know if the bond was called and when it is called?
Hi @FahdElXD
I don't think the information is available if a bond will be called.
It is all about probabilities of calling or not. Currently you cannot access this probability, it is "hidden" in this sum:
https://github.com/lballabio/QuantLib/blob/769d08764b45aa41ca2032e2843030433aba7c6e/ql/experimental/callablebonds/discretizedcallablefixedratebond.cpp#L167-L183
You have to get the probability of the i-j-node in the TrinomialTree to calculate your probability.
And also take into account that the probability for a second call date also depends on the probability that the first call was not executed.
Hi @ralfkonrad , Thanks for the responses, I have an isssue with callable bonds OAS when using G2 short rate model. When i call the CallableBond_OAS it returns this error : Spread is not supported for trees other than OneFactorModel Does that mean that I can't evaluate callable bonds Oas with two factor models or I am doing something wrong? and regarding the 1 Factor Model : for now i m using HW and I calibrate using swaption volatilities ? Can I calibrate using other instruments? Thank you
Hi @FahdElXD
Does that mean that I can't evaluate callable bonds Oas with two factor models or I am doing something wrong?
Yes, it only works for 1 factor models. That's due to these lines: https://github.com/lballabio/QuantLib/blob/100082b8e75a2ec5eb30f29c51137f2aa270a37b/ql/experimental/callablebonds/treecallablebondengine.cpp#L69-L74
as only the OneFactorModel::ShortRateTree support
https://github.com/lballabio/QuantLib/blob/100082b8e75a2ec5eb30f29c51137f2aa270a37b/ql/models/shortrate/onefactormodel.hpp#L105
and regarding the 1 Factor Model : for now i m using HW and I calibrate using swaption volatilities ? Can I calibrate using other instruments?
We are also using swaptions to calibrate. I don't think other instruments make more sense here?
Hi @ralfkonrad , now I use swaptions volatilities data to Calibrate the short rate model. I was wondering what if we don't have these data? can I model swaps and swaptions using QuantLib and get the volatilities from there to calibrate the model? and evaluate other instruments? is this a correct approach ? will it works or not (because we need market data that way the short rate model give results close to the market prices? Thank you
we need market data that way the short rate model give results close to the market prices
That's exactly the argument here. Unfortunately you will need some kind of market data to calibrate the short rate model parameters so that the model will reprice swaptions comparable to the bond call dates at the same time.
This issue was automatically marked as stale because it has been open 60 days with no activity. Remove stale label or comment, or this will be closed in two weeks.
This issue was automatically closed because it has been stalled for two weeks with no further activity.