Constructing Pricing Objects#
Curves#
Rateslib has two fundamental curve classes:
|
A |
|
A |
There are also additional, more complex objects, which serve as containers which composite multiple objects.
|
A dynamic composition of a sequence of other |
|
A |
|
A dynamic composition of a sequence of other |
Imply a |
And there are other containers which facilitate different types of curve operations.
|
Create a new |
|
Create a new |
|
Create a new |
It is also possible for a user to construct custom curve classes and interact them with all of the established tools, in particular for pricing instruments and obtaining risk sensitivities. For an example of this see the cookbook article on Building Custom Curves (Nelosn-Siegel).
Curves are required for pricing all Instruments in rateslib.
Smiles & Surfaces#
For FX volatility pricing rateslib has two fundamental models:
Create an FX Volatility Smile at a given expiry indexed by delta percent. |
|
|
Create an FX Volatility Smile at a given expiry indexed by strike using SABR parameters. |
These cross-sectional elements are combined into a generalist surface which interpolates volatility in the objects:
Create an FX Volatility Surface parametrised by cross-sectional Smiles at different expiries. |
|
|
Create an FX Volatility Surface parametrised by cross-sectional Smiles at different expiries. |
Solver#
In rateslib defining pricing objects and then solving them with calibrating instruments are two separate processes. This provides maximal flexibility whilst providing a process that is fully generalised and consistent throughout.
Note
Rateslib uses a global optimizer and weighted least squares object function to calibrate pricing objects.
Rateslib does not bootstrap. Bootstrapping is an analytical process that determines pricing object parameters sequentially and exactly by solving a series of equations for a well defined set of parameters and instruments.
Any bootstrapped object can be solved, also, by a global optimization process. Many global optimization solutions cannot be determined by a bootstrap process.
The following pages give further details to these summaries and code examples.