# Best practice in QuantLib Python to include borrow rate

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.

Thank you

Maybe the notes http://www.math.ualberta.ca/~cfrei/PIMS/M_Rutkowski_PIMS_slides.pdf can help you. In slide 18 you see how funding (in a more complicated version, but you can just take $$f^\beta$$ to be your borrow rate) enters the BS formula, for example.
Something like SpreadedLinearZeroInterpolatedTermStructure, as you suggested, will work but will use both the original curve and the interpolated spread each time you need rates, which won't be as fast as possible.