We are developing solutions for the OTC Clearing market place that will lead to reductions in cost, complexity and operational inefficiencies for market participants.
Today’s post is about curve building and follows on from the posts regarding building test data.
MyCCP implements a mechanism for bootstrapping multiple curves simulatenously. Instruments underlying the curves can reference other curves in the same bootstrap set. This is required for instance when you wish to assign an OIS curve for discounting purposes.
When bootstrapping curves an option allows you to simulatenously generate PAR sensitivities that allow trade level sensitivities to be converted from Zero Sensitivities to PAR sensitivities. PAR sensitivities, if you are not familiar with the term, refer to the sensitivity of a curve with respect to the original market quote or PAR rate.
First off, here is a view of the PAR quotes as described in my previous post regarding generation of test data. These curves are setup to use the Linear interpolator for computing Initial Margin. The advantage of Linear interpolation is that it is very fast.
The screenshot below shows the curves in group A. In MyCCP, upto 6 groups of curves can be defined, and each group can be assigned to a particular computation need. In this example, group A is used for Intial Margin calculation.
Observe that each instrument has a curve assignment for calculation of forward rate and for discounting. Deposit rates use the same curve assignment whereas in this case the Swap rate instruments use the EONIA curve for discounting.
The next interesting item is the instrument type. The instrument type is simply an identifier that is mapped to a pricing function. In MyCCP, the bootstrap process uses a scripting language called Ravi (which is derived from Lua, a language similar to Python). This scripting language is very small and efficient and hardly consumes any resources. The main advantage is that new instrument types can be added fairly easily as long as some underlying pricing features are implemented.
Let me first show you an example pricing function written in the scripting language.
I won’t go into the detail of how this all works, but here is a summary of what happens:
Next, I want to show you the setup used for the data obtained for 11 December 2012 from this paper on Muti-curve bootstrapping that I mentioned in my earlier post.
In this demonstration, the setup I have is as follows:
One thing to note is that neither of these groups is suitable for Initial Margin computation. The reason is that for VaR scenario generation, all curves must have a standard set of pillars / or term points. But the curves in these two groups have variable term points that are derived from underlying instruments.
Below are two screen shots. First up is the Monotone Convex definition:
Then the Cubic Spline on Log of Discount Factors:
I want to end this post by showing you what the bootstrapped curves look like for the three curve groups above.
First, we have the Linear Zero curves. Note that these are based on test data I generated hence the curves do not have the same underlying PAR instruments as the curves in the other groups. The timeline of the curve is shown as a numeric date value - this will be changed to a proper date display in a future version.
Next, the Monotone Convex interpolated Zero curves in group B:
Finally, the Zero Curves that use Cubic Spline interpolation over Log of Discount Factors:
The curves in group B and C use the same underlying instrument PAR quotes.
I hope that this post has given you some idea of how curve building is handled in MyCCP. Next I’d like to discuss the generation of VaR Scenarios from the five years worth of historical curves constructed using the test data I discussed in my previous posts.