OpenPricing and OpenRisk
A fundamental requirement of any fixed income attribution system is the ability to price the securities held within the user's portfolios under a range of different scenarios, and to calculate returns on risk.
This page describes OpenPricing and OpenRisk, a recently developed set of additions to Flametree's FIA fixed income attribution engine.
- OpenPricing allows new security types to be defined via external pricing functions. These can be based on proprietary code, called from a third-party library, or written from scratch.
- OpenRisk allows the user to define new sources of risk in attribution reports, via external risk functions.
OpenRisk and OpenRisk allow FIA's capabilities to be extended and customized to keep up with developments and innovations in the marketplace, thereby future-proofing your investment in our attribution technology.
Full documentation on OpenPricing and OpenRisk is available here.
In previous releases, FIA's security pricing routines were embedded within the main application. Changes or additions to the list of available security types required an upgrade and a reinstallation, and could only be carried out by Flametree.
In version 2.0 and later, all pricing functions have been moved to external libraries, called via a simple common API. This OpenPricing API has been designed so that any information accessible to FIA (inlcuding user-defined fields) can be passed to any pricing function.
This carries several advantages:
- New security types can be defined and provided without an upgrade
- New pricing functions for new instruments can be written and integrated within days, ensuring analytics support can keep up with new developments in the market.
- Changes can be made without reference to the vendor – the process is under the client’s control.
For first-principles attribution, FIA makes extensive use of security-level pricing routines. These are now called from external libraries via the OpenPricing API, rather than being embedded into our core application.
This carries several major advantages for our clients:
- Security pricing can be updated and extended without a new release of the core program.
- New security types may be quickly defined and used in attribution reporting.
- Proprietary or third-party pricing libraries can quickly be integrated into FIA for use in attribution reporting.
Naturally, perturbational (risk-number driven) attribution remains supported, as is a combination of both approaches.
When FIA runs, it compares the names of the pricing functions supplied in the security master table against the available functions in the pricing libraries. If a function is referenced but not found in the libraries, or if a function has been supplied more than once, FIA flags an error and stops.
Security definitions, and the way that they are priced, are still specified in the security master table. However, security types are no longer set up by referring to a label. Instead, the name and location of a pricing function must be supplied, together with additional information if required.
Pricing functions are written in C or C++. Pricing functions written in other languages such as C# or Fortran can be integrated into this framework. Please contact Flametree Technical Support if you need assistance or examples.
FIA calculates all returns due to yield curve levels, including carry, parallel and non-parallel curve shifts, and sector spread changes. However, we recognise that many portfolios show returns from other market risks, including optionality and inflation.
To measure these effects, FIA now uses external risk functions to calculate return from additional sources of risk. We provide a comprehensive set of risk libraries that provide a wide range of additional attribution returns available to all our users, including optionality, inflation and paydown.
These libraries are called via the OpenRisk interface and may be defined and extended by our users. For instance, your preferred approach to embedded option pricing can be integrated into FIA’s attribution reporting by defining suitable risk functions.
The ability to use user-defined risks is perhaps the most far-reaching improvement to FIA, as it future-proofs the system and ensures that FIA will continue to mirror your risk management process, both now and in the future.
Default functions in the OpenPricing library
FIA's default library is designed to meet the requirements of the vast majority of our users. In most cases it will never be necessary to delve into the implementation details of OpenPricing.
|FT_CASH||Price of cash per $1 face value||None||FT_CASH|
|FT_EQUITY||Price of equity per $1 face value||None||FT_EQUITY|
|FT_BILL||Price of bank bill, discount security, zero coupon bond||Settlement date, maturity date, yield curve||FT_BILL|
|FT_BOND_ZERO_CURVE||Price of coupon-bearing bond, using discount factors from the supplied zero curve||Maturity date, coupon, coupon frequency, yield curve||FT_BOND_ZERO_CURVE|
|FT_FRN_ZERO_CURVE||Price of floating-rate note, using the supplied index||Maturity date, coupon, coupon frequency, index||FT_FRN_ZERO_CURVE(LIBOR)|
|FT_SINKER_ZERO_CURVE||Price of amortizing bond||Maturity date, coupon, coupon frequency, curve||FT_SINKER_ZERO_CURVE|
|FT_MBS_PSA||Price of MBS security, using the PSA prepayment model||Maturity date, coupon, coupon frequency, curve, PSA value||FT_MBS_PSA|
Default functions in the OpenRisk library
|Interest||Return due to interest over current interval||Curve||Interest(GBP_CURVE[0.0])|
|Inflation||Return due to inflation over current interval||Inflation index (CPI or RPI)||Inflation(GBP_CPI)|
|Delta||Return from option due to changes in price of underlying asset||Delta, price of option, price of underlying||Delta(QANTAS_OPTION[DELTA],QANTAS_OPTION[PRICE],QANTAS[PRICE])|
|Gamma||Return from option due to second-order changes in price of underlying asset||Gamma, price of option, price of underlying||Gamma(QANTAS_OPTION[DELTA],QANTAS_OPTION[PRICE],QANTAS[PRICE])|
|Theta||Return from option due to elapsed time||Theta, price of option, price of underlying||Theta(QANTAS_OPTION[DELTA],QANTAS_OPTION[PRICE],QANTAS[PRICE])|
|Vega||Return due to changes in volatility of underlying asset||Vega, price of option, volatility of underlying||Vega(QANTAS_OPTION[VEGA],QANTAS_OPTION[PRICE],QANTAS[VOL])|