The SWIG wrappers provide a very good coverage of the library but have
a number of pain points:
- few Pythonic optimisation in the syntax: the code a user must write
on the Python side looks like the C++ version
- no docstring or function signature available on the Python side
- complex debugging and complex customization of the wrappers
- monolithic build process
- complete loss of the C++ code organisation with a flat namespace in Python
For those reasons and to have the ability to expose some of the
QuantLib internals that could be very useful on the Python side, we
chosed another road. PyQL is build on top of Cython and creates a thin
Pythonic layer on top of QuantLib. It allows a tight control on the
wrapping and provides higher level Python integration.
- Integration with standard datatypes (like datetime objects) and numpy arrays
- Simplifed API on the Python side (e.g. usage of Handles completely
hidden from the user)
- Support full docstring and expose detailed function signatures to Python
- Code organised in subpackages to provide a decent namespace, very
close to the C++ code organisation
- Easy extendibility thanks to Cython and shorter build time when
adding new functionnalities
- Sphinx documentation
It supports QuantLib >= 1.1 and currently builds very nicely on MacOSX
and Linux. The Windows builds will be there soon. Regarding the build
process, make sure you read the build instruction!
(Cython 0.15 needs a simple patch available in the repo)
The library comes with a decent test suite and many examples: from the
very basic option valuation to more complex heston model calibration
within an IPython notebook.
For more details, take a look at the code, contact the authors, or
discuss on the list!
We are looking forward questions, comments, contributions.
 The name is still subject to modification as PyQL is already used
by other projects unrelated to QuantLib. Suggestions are welcome!