Kalotay Analytics A Division of Andrew Kalotay Associates, Inc. |
BondOAS™ Library Overview |
BondOAS™ is a rigorously developed, continuously enhanced, thoroughly tested valuation engine for the universe of fixed coupon bonds. These can be step coupon, callable, putable, amortizing, and pre-refunded securities as well as simple mortgages. Option types covered include American, Bermudan, European, and Canary (like Bermudan but can stop being callable before maturity). The structures can be sinking fund bonds with acceleration options (double-up, etc.) and delivery options (the ability of the issuer to buy below par and deliver in lieu of sinking at par).
The library contains a suite of internally consistent analytical routines, the primary ones being arbitrage-free valuation, conventional price/yield calculations, and scenario analysis. Its speed and accuracy makes it ideal for interactive applications or high volume processing.
BondOAS™ is widely used in trading, risk management, and pricing systems (including intra-day pricing of bond ETFs). Clients include major investment banks, exchanges, pricing services, risk management vendors, global financial information services, traders and portfolio managers, back office process vendors, and rating agencies.
BondOAS™ is released as both static and dynamic libraries for multiple architectures. In addition, Java and C# wrappers are available for each of these platforms.
BondOAS™ uses a proprietary tetranomial lattice model employing the Black-Karasinski interest rate process. The user can specify either a) the volatility of the short-term rate and a mean reversion factor (which together determine the long-rate volatility) or b) the volatilities of the short and long rates (which together determine the mean reversion factor).
Bonds and embedded options are valued recursively on the calibrated interest rate lattice. Given an option-adjusted spread (OAS), BondOAS™ will shift the discount rate at each node on the lattice accordingly, apply it to the cash flow, check for option exercise if relevant, and report a price. Option values are extracted by taking the difference between the value of the underlying bullet bond and the value of the bond with embedded option(s).
Given a price, BondOAS™ uses an iterative process to calculate the OAS. A trial OAS is added to the discount rate at every node on the lattice. If the resulting price using recursive valuation on the lattice is too low, the next try is a lower OAS; if the resulting price is too high, a higher OAS is attempted. The process is highly optimized for rapid convergence.
All fixed rate bonds (single coupon and step-coupon bonds), including:
The following tables describe the performance of the principal BondOAS™ Library operations. The timings were conducted on our baseline machine which has a 3.6gHz CPU and is running Linux.
The benchmark program, distributed in the lib sub-directory of the release, reports the benchmark of the machine it runs on relative to our baseline machine. The performance on any machine will be the value reported below multiplied by the average of the values reported by the benchmark program.
Lattice calibrations per second from real world curves by source:
ust 2005-2011 312 swaps 2005-2011 312 |
Lattice calibrations per second by curve type and volatilty:
0% 10% 30% flat 429 333 300 gentle rise 400 333 300 sharp rise 400 316 300 negative/low 429 333 333 |
Price computations per second by bond type and years to maturity:
1yr 2yr 5yr 10yr bullet 157895 136364 107143 85714 callable 68182 53571 38462 25862 call and sink 42857 30612 14851 6849 |
OAS computations per second by bond type and years to maturity:
1yr 2yr 5yr 10yr bullet 55556 43478 27027 19231 callable 8929 6579 4630 4167 call and sink 4854 3425 2463 1266 |
BondOAS™ is a thread-safe library written in C/C++. We provide both a C and C++ API. The API is documented in BondOAS API. The library is released as both static and dynamic libraries for multiple architectures including 32 and 64 bit Linux, Windows, and SunOS Solaris for x86 as well as Solaris for Sparc.
In addition to the libraries the release includes Java and C# APIs and wrapper libraries. The release also includes example code as well as compilation instructions for each architecture.