Strata Benchmarks #5 - Two Dimensional Interpolation October 11, 2019 Harshad Deo 3 minutes read Twitter Facebook Reddit LinkedIn Email Two dimensional interpolation is a simple and useful approach to model the volatility surface. SimianQuant’s algebraic simplifiers can reduce many classes of two-dimensional interpolators into one dimensional problems. This article compares Strata’s implementation of BiLinear and LinearCubic interpolation against those generated using the SimianQuant library. This article follows up on the benchmarks for one dimensional interpolation and will reference the results presented there. As in that article, two classes of generated implementations are considered: A Standard Variant, in which the data points are only known at runtime. This is usable by all datasets . A Mass Customized Variant, in which the data points are known at generation time. This is only usable for the chosen dataset. As this and other articles illustrate, mass customization can significantly increase runtime performance for a small upfront cost (typically ~10 ms), but requires a license to a runtime instance of the library. The standard variant does not require a runtime library instance and can be exported from the web client. In all cases, the interpolators were calibrated to rectangular grid of eleven points on the x-axis and five points on the y-axis and linear interpolation was used along the x-axis. In the BiLinear case, linear interpolation was also used on the y-axis, while cubic spline interpolation was used in the LinearCubic case. To summarize the results: The SimianQuant implementations for BiLinear interpolation are about 30x faster The SimianQuant implementations for LinearCubic interpolation are about 450x faster. Mass customization can increase the performance by up to 3x All measurements were made on an AWS c5 instance with a clock speed of 3GHz. BiLinear Interpolation The SimianQuant algebraic simplifiers can reduce BiLinear interpolation into a one dimensional interpolation (over a synthetic axis) with a quadratic piecewise polynomial. Value The SimianQuant standard implementations are about 10x-15x faster than the corresponding Strata implementations, and take roughly the same time to evaluate as linear interpolators. In this case, mass customization can double the runtime performance. Parametric Sensitivity Parametric sensitivity shows a similar trend, with the SimianQuant implementations being 5x-8x faster. Here the performance is not identical to parametric sensitivity for linear interpolation because there are more parameters (55 vs 20) for which the sensitivity needs to be computed. The JVM results are omitted for clarity. LinearCubic Interpolation The SimianQuant algebraic simplifiers can reduce LinearCubic interpolation into a one dimensional interpolation (over a synthetic axis) with a quartic piecewise polynomial. As with the case for one dimensional interpolation, the y-axis needs to be on a logarithmic scale to properly visualize the performance difference. The extreme performance step is due to Strata’s slow implementation of cubic spline interpolation. This is also why benchmarks for LinearCubic interpolation are presented, rather than for BiCubic interpolation. Value The SimianQuant standard implementations are about 450x faster than the corresponding Strata implementations, and run within a small multiple of the time for two cubic spline interpolations. In this case, mass customization can triple the runtime performance. Parametric Sensitivity Parametric sensitivity shows a similar trend, with the SimianQuant implementations being 120-180x faster. The benefits of mass customization are clearly evident. The JVM results are omitted for clarity. About Strata Strata is an award winning open source analytics and market risk library published by Open Gamma. The company, however, is opaque about its performance and that of its subcomponents. This article is the fifth in a series that will benchmark the library against open source alternatives and code generated using the SimianQuant library. The source code for the majority of the benchmarks can be found in the companion github repository. Other articles in this series are: Elementary Functions Black Scholes SABR One Dimensional Interpolation Harshad The only thing I'm not good at is modesty, because I am great at it.