Pricing Environment Overview

 

Download PDF - Pricing Environment

 

Pricing data are collected in a pricing environment: quotes, curves, volatility surfaces, correlation matrices, pricing routines, pricing parameters.

A pricing environment is identified by a name throughout the system. Each time you price a trade or a set of trades, you can select a pricing environment, and check if the pricing environment contains all the data needed for pricing.

Multiple pricing environments can be defined, based on pricing needs: trading, accounting, compliance, etc. You can set a default pricing environment.

A pricing environment contains:

A pricer configuration that registers pricing data and pricing routines:
Pricing data are curves and surfaces.
Pricing routines are sets of calculation formulas – The outputs of the pricing routines are pricer measures.
A set of pricing parameters that allow modifying the behavior of the pricing routines.
A quote set that contains market quotes.
A day change rule.
A timezone.

 

Facts about Pricing Environments

Users can share them. This ensures that everybody on a desk is using the same pricers and the same market data.
Changes are propagated to everyone. When one user updates a piece of market data (for example, saves a new curve), this change is immediately available to all the other users of the same pricing environment.
They can be updated automatically at regular intervals (for example, every five minutes), or upon demand. People can work with the assurance that they are always using up-to-date market information.
They are persistent in the database. Therefore, you can reconstruct how a deal was originally priced.
They are under access control. All traders may be authorized to change the pricing environment that the trading desk uses and all salespeople may be allowed to use that pricing environment but not to change it. Similarly no trader may be authorized to view or change the official end-of-day pricing environment.
They are used consistently throughout the system. The accounting module that posts daily NPV and accrual changes to the general ledger will generate the same number as the risk management reports and these will also agree with the trader’s numbers.
Users can switch between them easily. If a new pricer is being evaluated, users can compare it with a pricing environment that uses the old pricer.

 

1. Defining a Pricing Environment

Prior to defining a pricing environment, you need to define market data: curves, volatility surfaces, correlation matrices, etc. as needed. Market data are created from the Market Data menu. Help is available from each market data window.

From the Calypso Navigator, navigate to Market Data > Pricing Environment > Pricing Environment to define a pricing environment.

» Click New to define a new pricing environment.
» Select the components of the pricing environment: Pricer Config, Quote Set, Pricing Params Set, Base Currency, Day Change Rule, and Time Zone. They are described below.
» Click Save. You will be prompted to enter a pricing environment name.

 

Real-Time Updates

The market data (quotes, curves, and surfaces) coming from live-feed providers can be distributed throughout the system in real-time using a Market Data Server.

See Market Data Server Documentation for information on configuring and running the market data server.

 

2. Pricer Configuration

Calypso uses the term ‘pricer’ to denote an algorithm that can price or value a trade or position. For securities, the pricer multiplies the amount of the holding by the price of one unit. For derivatives, pricers can be quite complicated and involve multiple pieces of market data (interest rate curves, repo curves, volatility surfaces, etc.).

Pricing is not an exact science. Many algorithms have been developed for valuing derivatives or convertibles or high-yield corporate debt. Different firms take different views on which algorithm is “best” for which product. Often, different parts of the same firm will use different algorithms. For example, the middle office may not use the trader’s favorite algorithm. Some firms regard the quality of their analytics as a competitive advantage. Others rely on outside software firms that specialize in producing analytics.

Calypso’s approach is three-pronged:

Provide a good “standard” algorithm for each product we support.
Provide APIs to enable clients to plug in their own internally-developed or third-party analytics.
Enable users to switch between pricers easily.

A pricer configuration provides most of the important market data used to value financial instruments, and it establishes the user's set of preferred pricing methodologies. In some cases, each user will have his own pricer configuration, since the individual priorities of a given user mean that he may not wish to price a given instrument with the same market data or even the same valuation methodology as other users. For example, a trader may want to calculate a very precise net present value for his swap, while a risk auditor may want to value the swap very quickly because he has many more swaps to price.

To accommodate user preferences for different market data and pricing methodologies, each user sets up a PricerConfig object that:

Pairs financial instrument types with the pricer classes that price them.
Establishes the set of curves and surfaces and other market data items that each pricer uses to price the instruments.

The pricer configuration defines what pricer to use for a given type of product. Each subtype can be given a different pricer. Thus, there could be one pricer for treasury bonds, a second one for corporate bonds, and a third for mortgages, etc.

The pricer configuration also defines what market data the pricers should use. To ensure consistency, all pricers in a pricer configuration get the same market data from the same source. For example, all pricers that need a EURIBOR volatility surface will use the one called EOD_EURIBOR and all pricers that need a USD CP forecast curve would use EOD_USD_CP, etc.

You can bring up the Pricer Configuration window from the Pricing Environment window, or navigate to Market Data > Pricing Environment > Pricer Configuration from the Calypso Navigator.

 Ⓘ   [NOTE: If you want to modify an existing pricer configuration, make sure that you load it first]

You can assign the following data in the pricer configuration:

In the Pricers panel, you can associate pricer classes with product types.
In the model parameters panel, you can specify pricing parameters per pricer.
In the trade level override panel, you can define keys that will be used in trades to override default pricers and market data items.
In the other panels, you can associate market data with the pricing environment.

 

2.1 Lazy Refresh

Lazy Refresh is a mode on the Pricer Configuration which improves the system performance by not loading the market data, only their ids. The actual market data are loaded when requested by the Pricer. This is achieved by giving the list of market data ids which are not yet loaded to the Pricer Configuration, and refreshing the Pricer Configuration.

The Lazy Refresh mode only applies to market data specified in the Product Specific, Custom, Credit, and Repo panels of the Pricer Configuration. If a custom Pricer uses market data from these panels it MUST be made Lazy Refresh compatible, otherwise the market data will not be loaded in Lazy Refresh mode.

Refer to the Calypso Developer’s Guide for information on making a custom pricer Lazy Refresh compatible.

 

2.2 Parent Pricer Configuration

You can select a parent pricer configuration(s) to use pricer configuration information from that configuration when the child configuration does not have the information. Click ... to select a parent.

 

2.3 Selecting Pricers

Pricers are described in the following Calypso Analytics guides:

Bond Analytics Guide
Commodities Analytics Guide
Credit Derivatives Analytics Guide
Equity Derivatives Analytics Guide
FX and Money Market Analytics Guide
Inflation Analytics Guide
Interest Rate Derivatives Analytics Guide
Calib Integration Guide

 

Select the Pricers panel to associate a Pricer class with a product type.

» Enter selection criteria and select a Pricer class. You can click ... to add a custom pricer.

Refer to the Calypso Developer’s Guide for information on implementing custom pricers.

» Then click Add.
» Click Save to save the pricer configuration.

 

 Ⓘ   [NOTE: There is the possibility to price trades from stored prices (marks) using pricer "PricerFromDB" - Stored prices can be imported in the database using report "reporting.ReportWindow$PricerFromDB" - Help is available from that report for complete setup details]

 

2.4 Selecting Market Data

To select a curve, a volatility surface, or a correlation matrix:

» Select the appropriate panel: Discount Curves, Forecast Curves, etc.

[NOTE: Market data requirements are described in the trade windows from the Help menu: what type of market data, and how to select them in the pricer configuration – They vary for each type of trade]

» Enter selection criteria and select a curve, volatility surface, or correlation matrix.
» Then click Add.
» Click Save to save the pricer configuration.

 

2.5 Sample Discount Curve Association

Note that discount curves can be configured by currency pair when the intention is to use the curve for Cross Currency Swaps and SwapNonDeliverable trades. The Currency1 column drives the logic for the pair while the currency in the Currency2 column represents the secondary currency. The curve will be used to discount the leg of the Swap that contains the currency in the Currency1 column. When Currency2 is not specified, the curve behaves as a standard discount curve.

 

2.6 Sample RATE Volatility Surface Association

 

2.7 Sample FX Curve and FX Surface Association

 

For details on Usage type LSV, refer to FX Option Local Stochastic Volatility.

 

2.8 Sample Commodity Curve Association

 

2.9 Sample Product Specific Usage Association

 

2.10 Specifying Model Parameters

To specify a pricing parameter at the pricer level, select the Model Parameters panel.

» Select a pricing parameter and set its value.
» Then click Add.
» Click Save to save the pricer configuration.

 

2.11 Trade Level Override

The Trade Level Override functionality enables you to override pricers and market data items used in a trade. Every trade has a default pricer and market data defined in the system. Using this functionality you can price the trade with different (other than defined) pricers and market data items. This feature enables you to define the Pricer Override Keys (Product-Pricer relationship) and the Market Data Item Override Keys (Pricer-Usage-Market data relationship) that can be associated with a trade to price it. You can define the keys at pricer configuration level and at trade level.

At pricer configuration level you can define keys for all trades, and the keys are associated at the trade level.

You can also define keys at the trade level that will only be available for the specific trade. See Help > Trade Functions in a trade worksheet for mode details.

Products for which this functionality is enabled are defined in the domain “TradeLevelOverride.Products” - By default:

The override keys can be defined in the Trade Level Override tab of the Pricer Configuration Window. This tab has two panels to configure Pricer Override and Market Data Item Override keys respectively.

 

 Ⓘ   [NOTE: Trade level override at parent pricer configuration level will override any existing configuration on the child pricer configuration for the corresponding set of keys]

 

Pricer Override

To define a Pricer Override key:

» Click Add to open “Create a new Pricer Override Key” window for adding a new key. This key represents the relationship between a product and a pricer.
» Enter the required details, Key name (represents a unique relation between product and pricer), Product and Pricer, as shown below.

Click Create to create the key. The pricer key becomes available in the Pricer Override keys.

You can use the key "Key1_Swap" to price a Swap trade using PricerSwapHagan, which is not the default pricer for swap.

» You can select a row and click Update to modify the key. If you modify the product type, a new row will be added.
» You can select a row can click Show to view all the trades that use the key.
» Click Save to save the pricer configuration.

 

Market Data Override

To define a Market Data Item Override Key:

» Click Add to open “Create a new Market Data Item Override Key” window for adding a new key. This key represents the relationship between a product, pricer, usage and market data.
» Enter the required details, Key name (represents a unique relationship between product and market data item), Product, Pricer, Usage (usage of market data, for example, PAY_DIS for pay side discount curve). Select a market data item as needed.

Click Create to create the key. The market data key becomes available in the Market Data Item Override keys.

You can use the key "Key1_Swap_MD" to price a Swap trade using the specified market data item, rather than the default market data item.

» You can select a row and click Update to modify the key. If you modify the product type, a new row will be added.
» You can select a row can click Show to view all the trades that use the key.
» Click Save to save the pricer configuration.

 

3. Pricing Parameters Set

The Pricing Parameters Set provides global parameter settings for the pricers.

You can bring up the Pricing Parameters Set window from the Pricing Environment window, or navigate to Market Data > Pricing Environment > Pricing Parameter Set from the Calypso Navigator.

 Ⓘ   [NOTE: If you want to modify an existing pricing parameters set , make sure that you load it first]

» Select a pricing parameter and set its value, and select a product type as needed or ANY.

Then click Add, and click Save to save the pricing parameters set.

» You can click  for a description of all pricing parameters.
» If a pricing parameter is not available for selection click ... to add it. Note that pricing parameter names are case sensitive.

Note that a global pricing parameter can be set in the Pricing Parameter Set and applies to all pricers in the pricing environment, while a non-global pricing parameter is set in a trade window and only applies when pricing the current trade.

 

4. Quote Set

A quote set is a place holder to enter market quotes for a set of market-traded instruments, currencies, exchange rates, interest rate indices, curve underlying instruments, and volatility surface underlying instruments. These quotes can be used to value trades, price instruments in your portfolio, and generate other market data representations such as curves.

You can bring up the Quote Set window from the Pricing Environment window, or navigate to Market Data > Pricing Environment > Quote Set from the Calypso Navigator.

You can select a parent quote set to use the quotes of the parent when they are not available in the child quote set.

 

4.1 Market Quotes

A quote set is a collection of market quotes.

Market quotes can be imported from live-feed providers, as well as manually captured. They can be viewed in the Quote window accessed from the Calypso Navigator under Market Data > Market Quotes > Quotes.

See Market Quotes Overview for details.

 

4.2 Intraday Quotes

Intraday quote sets can be used by the Market Conformity and Compliance functions.

If you check the Intraday checkbox, it allows the quote set to save/retrieve intraday quotes to/from the table "quote_value_intraday".

When pricing using an intraday quote set, if the requested quote is for the same date as the valuation date, the quote with a time before or equal to the valuation date time is retrieved from the intraday quotes.

If the requested quote is for a different date than the valuation date, the quote is retrieved from the parent quote set of the intraday quote set. The parent quote set cannot be intraday.

Refer to Calypso Market Conformity and Compliance documentation for details.

 

4.3 Fallback Strategy

For equity derivatives, a fallback strategy allows defining a sequence of quotes that can be used when the default quote is not available, also a marking process allows recording the “official” price or value of a security at the end of a business day.

Refer to Calypso Equity Derivatives documentation for details.

 

5. Base Currency

This is the reference currency of the pricing environment.

 

6. Day Change Rule

By default, the Day Change Rule is TimeZone which indicates that the pricer uses the pricing environment's timezone to compute the valuation date. This is the recommended setting for non FX users.

You can change it to FX to compute the valuation date based on the 5pm New York rule (close of business). This is the recommended setting for FX users.

 Ⓘ   [NOTE for FX users: If the domain SundayEarlyNYFXDayChangeRule is set to true, any FX Spot trade booked after 8 am Sunday New York time will have a settlement day of Wednesday. When the do main is not set or set to false, the Spot trades will have a settlement day of Tuesday. This is only applicable when Day Change Rule is set to FX]

 

You can also use UserTimeZone to use the User Defaults timezone to compute the valuation date. In order to use UserTimeZone, you need to add “UserTimeZone” to the domain “DayChangeRule”.

 

7. Timezone

The pricing environment’s timezone is used to determine the date and time for loading and refreshing market data in the Pricing Environment, and whether curves and surfaces need to be rolled. The system compares the market data’s date to the valuation date in the pricing environment’s timezone (or 5pm New York time if Day Change Rule is set to FX).

You can double-click the Time Zone label to set the timezone to the user default timezone. The user default timezone is set using Configuration > User Access Control > User Defaults from the Calypso Navigator.

Note that the timezone in the curve and volatility windows is for information purposes only, it can be set to NONE to avoid any confusion. The timezone that is relevant is the timezone of the pricing environment.

A pricing environment contains a pricer configuration that maps market data to products and currencies (curves and volatility surfaces), and a quote set that is a place holder to store quotes.

The system works differently for quotes and curves / volatility surfaces:

Quotes are saved in a Quote Set by date and time (the time however is for information purposes only)
Curves and Volatility Surfaces use the quotes from the quote set based on the timezone of the pricing environment, and are rolled according to the timezone as well.

For example, if you are in Tokyo local time 9am on September 13th, and you are using a pricing environment with timezone US/Eastern (New York time), the curves and volatility surfaces would have a timestamp of 5pm New York time on September 12th. The curve is not rolled because from the pricing environment point of view it is the same day.

Now if you are using a pricing environment with timezone Asia/Tokyo (Tokyo time), there are two cases :

If the curves and volatility surfaces have been saved before midnight Tokyo time, they are rolled because they have not been saved on the same day.

Example - If a curve is saved in New York time at 10am on September 12th, and Tokyo is pricing in Tokyo time at 9am on September 13th, Tokyo will be using a rolled version of the curve. This is because the curve was saved on September 12th in Tokyo time, and we are pricing in Tokyo time.

If they are saved after midnight Tokyo time, they are not rolled because from the pricing environment point of view, it is the same day.

Example - If a curve is saved in New York time at 5pm on September 12th, and Tokyo is pricing in Tokyo time at 9am on September 6th, Tokyo is using the exact same curve that is not rolled. This is because the curve was saved on September 6th in Tokyo time, and we are pricing in Tokyo time.

In all cases however, the curves and volatility surfaces use the quotes as of September 12th.

In order to use September 13th quotes, Tokyo needs to use the Tokyo time pricing environment and save quotes on September 6th. If Tokyo saves September 6th quotes in the New York time pricing environment, they will not be picked up because they are a day later.

 

7.1 Curve Usage Example

We are in Tokyo at 6am Tokyo time on September 13th. We have a New York pricing environment (timezone US/Eastern) and a Tokyo pricing environment (timezone Asia/Tokyo). Both pricing environments share the same pricer configuration and quote set, only the timezone differ.

The curve is saved in New York time on September 12th.

New York Time Pricing Environment

First, we use the New York time pricing environment named Default.

Regardless of the time the curve was saved in Tokyo time, the curve is not rolled, because the system compares the curve’s date to the valuation date in New York time (5pm New York time on September 12th).

» Curve saved before midnight Tokyo time (10am New York time on September 12th)

» Curve saved after midnight Tokyo time (1pm New York time on September 12th)

 

Tokyo Time Pricing Environment

Now, the curve’s date is compared to the valuation date in Tokyo time (6am Tokyo time on September 13th).

» Curve saved before midnight Tokyo time (10am New York time on September 12th)

The curve is rolled - (R) indicator, because its timestamp in Tokyo time is 11pm September 12th, a day before.

» Curve saved after midnight Tokyo time (2pm New York time on September 12th)

This curve is not rolled because its timestamp in Tokyo time is 3am on September 13th, same day.

 

7.2 Summary

The system allows pricing multiple locations with the same market data on the same date, or with localized market data.

To price multiple locations with the same market data on the same date, you can use the same pricing environment. All the market data are compared to a single timezone.

To price multiple locations with localized market data, you can use multiple pricing environments, one for each location. They can all share or inherit the same pricer configuration and quote set, only the timezone is local. In this case, the market data are compared to the local timezone, and you can save quotes locally.