Implementation - 2023.2 English

Vitis Libraries

Release Date
2023.2 English

The pricing process of Finite-Difference Hull-White Bermudan Swaption engine is shown in the figure below:

pricing process of FdHullWhiteEngine

As we can see from the figure, the engine has two main modules: engineInitialization and rollbackImplementation. The former one is responsible for engine initialization, including read specific time points of the swaption from DDR, set initial values, create the mesher using Ornstein-Uhlenbeck process, and build up the second-order differential operator.

After Initialization, the pricing engine evolves back step by step from the last exercise date (maturity) to settlement date (typically \(t=0\)) using FDM, with the \(StepDistance=\frac{maturity - 0}{tGrid}\). Notice that when hitting an exercise time, the engine automatically evolves back from \(now\) to the current exercise time. Meanwhile, the asset price which is stored in \(array\_\) of the engine should be the maximum between its continuation (result evolved by douglasSchemeStep) and the intrinsic value (result calculated with current interest rates at the current exercise time by applyTo), then continue evolving back from current exercise time to the \(next\) time point.

evolveback process of FdHullWhiteEngine

Since engineInitialization process will be executed for only once, while applyTo process will run \(\_ETSize\) times in a single pricing process, additionally, both of them have a latency which is much shorter than douglasSchemeStep process, so they’re optimized for minimum resource utilizations with a reasonable overall latency. But as with douglasSchemeStep process, we try our best to decrease its latency to reduce the whole latency in the pricing process.