The amazingly comprehensive open-source quantitative finance library QuantLib supplies a set of Python bindings generated with SWIG. Unfortunately much of QuantLib’s adaptability is made available via C++ templates. With the current SWIG wrapper it’s difficult to expose the entirety of QuantLib’s functionality without compiling every permutation of template parameter.
I discovered this quirk whilst trying to apply cubic spline interpolation to a zero curve. It turns out that by default the SWIG interface only exposes a linearly interpolated zero curve class. Fortunately there are some nice macros within the SWIG interface that ease the exposure of additional interpolation schemes, albeit with a recompile of the Python module.
Zero curves with additional interpolation methods can be added to the end of QuantLib-SWIG-0.9.7/SWIG/zerocurve.i
using the export_zero_curve
macro as follows:
export_zero_curve(ZeroCurve,Linear); export_zero_curve(CubicZeroCurve,Cubic);
After recompiling the Python bindings you’ll now have a CubicZeroCurve
class that performs cubic spline interpolation between data points.
This approach can be used throughout much of the SWIG interface files to expose template customized QuantLib classes.