This application prices a portfolio of LIBOR swaptions on a LIBOR Market Model using a Monte-Carlo simulation. It simultaneously calculates first order sensitivities to the initial forward rates (the delta Greeks) using path-wise Adjoint Algorithmic Differentiation (AD).
In each Monte-Carlo path, the LIBOR forward rates are generated randomly at all required maturities following the LIBOR Market Model, starting from the initial LIBOR rates. The swaption portfolio payoff is then computed and discounted to the pricing date. Averaging the per-path prices gives the final net present value of the portfolio.
The full algorithm is illustrated in the processing graph below:
More details can be found in Prof. Mike Giles’ notes .
This benchmark uses a portfolio of 15 swaptions with maturities between 4 and 40 years and 80 forward rates (and hence 80 delta Greeks). The performance is measured with varying numbers of Monte-Carlo paths (from 256K to 2,048K).
 M. Giles, “Monte Carlo evaluation of sensitivities in computational finance,” HERCMA Conference, Athens, Sep. 2007.
This benchmark application prices a portfolio of American call options using a Binomial lattice (Cox, Ross and Rubenstein method).
For a given size N of the binomial tree, the option payoff at the N leaf nodes is computed first (the value at maturity for different stock prices, using the Black-Scholes model). Then, the pricer works towards the root node backwards in time, multiplying the 2 child nodes by the pre-computed pseudo-probabilities that the price goes up or down, including discounting at the risk-free rate, and adding the results. After repeating this process for all time steps, the root node holds the present value.
The algorithm is illustrated in the graph below:
This binomial pricing method is applied for every option in the portfolio.
For this benchmark, we use 1,024 steps (the depth of the tree). We vary the number of options in the portfolio to study the performance.
|System||Operating System||Implementation||Memory (RAM)||Compiler||ECC||Precision Mode||Other|
|IBM Power8||Ubuntu 14.10 (64bit)||C++||256GB||IBM Compiler 13.1||on||double||8x SMT|
|Processor||Cores||Logical Cores||Frequency||GFLOPs (double)||Max. Memory||Max. Memory B/W|
|Dual IBM Power8 ISeries 8286-42A CPU||2 x 12||2 x 96 (SMT8)||3.52 GHz||2 x 338||1 TB||2 x 384 GB/s|
While benchmarking a given application provides a comparative measure of hardware performance, the ease of developing and tuning the software is equally important. This white paper gives an overview of available processors and their suitability for various algorithms classes. In addition, it assesses the required development effort and expertise when tuning a given application for these processors.