A Look at QuantLib Usage and Development
Presenter: Luigi Ballabio: Senior Quantitative Developer, StatPro Italia srl
Session 1. Financial Instruments and Pricing Engines - Running Time: 1hr 45mins
Session 2. The Care and Feeding of Term Structures - Running Time: 1hr 23mins
Session 3. Cash Flows and Coupons (Part One) - Running Time: 1hr 26mins
Session 4. Cash Flows and Coupons (Part Two) - Running Time: 1hr 9mins
QuantLib was the first open-source library for quantitative finance, and remains the most popular with downloads measured by the thousands for each release.
Started as a simple library, it has quickly evolved into a framework: its core classes have built-in functionality that enables them to work together, and into which a user can inject new specific behavior.
This makes QuantLib more useful, but also more daunting to approach as a new user must learn how the pieces are supposed to fit together: just grabbing and starting to use a few classes might go against the grain of the library, so to speak, and create problems later on.
In this workshop, I will first give a bird-eye look at the architecture by describing the design and rationale of its core classes (for instance, those modeling the generic concepts of financial instruments and term structures). I will show both examples of their idiomatic usage and relevant parts of their implementation, so as to be useful to both those who just want to use the library as it is and to those who want to extend it with their own instruments and models. I will also try to warn about the shortcomings of the current implementation and a few pitfalls to avoid.
In the second part of the workshop, I will describe more specific classes that can be added on top of the core classes to create more financial instruments. Again, I'll give information for users and developers alike.
One day is a short time, of course, given the sheer size of the library. However, I do hope to show you the lay of the land so that you can find your own way around it. During the presentations, I'll also point out particular C++ idioms, patterns and techniques used throughout the library, so that you'll be able to recognize them when looking at code that I won't cover directly.