When pricing a vanilla option, there are at a minimum 3 yield curves to consider:
- risk free yield curve = YC
- dividend yield curve = DC (or discrete dividends for American options but not the topic here)
- borrow curve = BC
When building a process (for example BlackScholesMertonProcess) we can only pass 2 curves, a yield curve and dividend curve. Consequently we need to tweak one of the curves.
We probably don't want to mess with YC so any discounting that is not happening on the underlying (for example for the value of the option) remains accurate.
This leaves us with combining DC and BC and pass the result of this combination as the dividend curve in the process.
What is the best practice for achieving this ? Is it to use something like SpreadedLinearZeroInterpolatedTermStructure and spread DC by BC ? Or should we instead build our own utility to add curves ?
There are certainly some speed issues associated with this therefore I'm looking for the solution that provides the fastest pricing time.