OpenPricing and OpenRisk

From Flametree Technologies
Revision as of 20:07, 8 March 2021 by Fiasys (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


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.

Pricing libraries

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.

Name Description Inputs Usage
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

Name Description Inputs Usage
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])