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:
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.