Scenario - Defining Perturbation Rules
A perturbation rule defines the perturbation of a particular market data item. It can affect a set of market data items or individual instances (for example, Discount USD LIBOR 6M USD_LIBOR_Curve).
Multiple perturbation rules can be collected in a rule group.
The Rules panel will appear as shown below.
Sample Perturbation Rule
Step 1 - Select the "Rules" label, and click New to create a new rule. You will be prompted to select a rule type.
The user may define different rules for the same market data item. In general, one rule will be applied to a particular market data item at a time:
The following types of perturbation rules are available:
• | Composite perturbation rules allow the simultaneous application of one or more basic rules. |
• | CorrelationMatrix perturbation rules allow the perturbation of correlation matrices. |
• | CorrelationSurface perturbation rules allow the perturbation of correlation surfaces. |
• | Curve perturbation rules allow the perturbation of all the curves: rate, credit, dividend, inflation, etc. |
• | Date perturbation rules allow the simulation of a change in the valuation date. |
• | Matrix perturbation rules, similar to Composite, allow the specification of up to three basic rules, each along an axis. A "matrix" of perturbations in three dimensional space is produced. |
• | Quotes perturbation rules allow the perturbation of individual quote values and Beta values. |
• | Reset Risk Rules allow the perturbation of values related to trades involving reset dates. |
• | SeasonalityAdjustment perturbation rules allow the perturbation of seasonality curves. |
• | Volatility perturbation rules allow the perturbation of volatility surfaces along any of their axes. |
Based on the rule type, the rule definition will be different, as described below.
Step 2 - Click Save when the
rule is defined. You will be prompted to enter a name. If a group is selected
when you create a new rule, the new rule will be added to that group.
Otherwise, it will be created on its own.
Note that you can enter a comment in the Comments field.
You have the option to create a Rules Group by clicking Add under Rules Groups. You will be prompted to enter a group name. Click Save under Rule Groups to save the group.
Perturbations are performed on either "input" or "output" points. For instance, underlyings (such as curve underlying instruments that generate zero curves) are input points, while zero is an output point (such as a generated zero curve point). All perturbations may be performed either on a point by point basis or by time intervals. For input point perturbations, the rule may also be defined to apply perturbations to different types of input points (e.g. apply perturbation1 to money market instruments, perturbation2 to futures, perturbation3 to swaps, etc.). For time interval perturbations, the rule may apply perturbations to one or more time intervals, as defined by a set of tenors.
An amount and unit of perturbation may be defined for each perturbation. For zero perturbations, the amount of perturbation is added to each curve zero point within the specified interval. The specified compound frequency and daycount is used to extract the zero rate at each point from the discount factor curve.
For perturbations of underlying instruments, the amount of perturbation is added to each underlying instrument's quote (whether price, yield, etc.) prior to regeneration.
1. Composite Rules
Composite perturbation rules allow the simultaneous application of one or more basic rules.
» | Click
Add/Remove to
select scenario rules. |
Each individual rule can be applied to its own market data set. Once you have added a rule, you can right-click it and choose Sub-Filter. You will be prompted to select a market data set.
2. Correlation Matrix Rules
CorrelationMatrix perturbation rules allow the perturbation of correlation matrices. Any Correlation Matrix with more than 3 axes is not supported.
» | Enter the Shift Amount and unit |
» | You can check Tenor to enter a range of tenors, otherwise all of the tenors in the correlation matrix are shifted. |
» | If you check "Shift matrices separately", each selected matrix is shifted separately. Multiple scenarios will be generated. |
» | Perturbation type: |
Simultaneous - All the tenors (or the tenors within the selected range) are shifted all at once => result is one scenario.
[NOTE: The perturbation type is simultaneous by default.]
If you check "Shift matrices separately", you can also select the following perturbation types:
– | Sequential - All the tenors (or the tenors within the selected range) are shifted sequentially. |
For each point axis1/axis2, shift the correlation at each tenor for that point in order (consider that for each point there is a curve of correlations by tenor) => result is one scenario per selected tenor per point.
– | Cumulative over tenors - The shift is cumulative along all tenors (or tenors in the selected range) => result is one scenario per selected tenor per point, and sequential across the points. |
3. Correlation Surface Rules
CorrelationSurface perturbation rules allow the perturbation of correlation surfaces.
» | Enter an amount in the Amount field and select percentage or relative percentage from the adjacent field. |
» | Click the Tranche checkbox if needed, and enter tranche amounts in the From and To fields. |
» | Select Tenor or Date to specify tenors or maturity dates. |
» | If you check "Shift surfaces separately", each selected surface is shifted separately. Multiple scenarios will be generated. |
» | Check "Regenerate dependent items" if necessary. |
» | Perturbation type: |
Simultaneous - All the tenors (or the tenors within the selected range) are shifted all at once => result is one scenario.
[NOTE: The perturbation type is simultaneous by default.]
If you check "Shift surfaces separately", you can also select the following perturbation types:
– | Sequential - All the tenors (or the tenors within the selected range) are shifted sequentially. |
For each point axis1/axis2, shift the correlation at each tenor for that point in order (consider that for each point there is a curve of correlations by tenor) => result is one scenario per selected tenor per point.
– | Cumulative over tenors - The shift is cumulative along all tenors (or tenors in the selected range) => result is one scenario per selected tenor per point, and sequential across the points. |
4. Curve and ParametricCurve Rules
Curve perturbation rules allow the perturbation of interest rates.
» | Select the type of perturbation from the Type field and select the perturbation from the Perturb field. Then enter the fields described below, based on the selection. |
Note that the rule type will be set to ParametricCurve for the following perturbations: SEQUENTIALLY, SIMULTANEOUSLY, and CUMULATIVE, therefore identifying bucketed perturbation rules within the perturbation range:
– | SEQUENTIALLY indicates that each bucket will be perturbed in turn. |
– | SIMULTANEOUSLY indicates that all buckets will be perturbed at once. |
– | CUMULATIVE indicates that each bucket will be perturbed in turn but will also contain the previous bucket. |
The relative shifts are meant to be applied on the “equivalent rate”. As such they are supported only for outright instruments (MoneyMarket, FutureMM, Swap, Bond, FRA, CDS, etc). They are typically NOT supported for spread or basis instruments (FX FWD, Basis Swap, Spread, etc). The same limitation applies to the min and max features.
Zero Perturbation
Min and Max Limits on Zero Curve Perturbation
Users have the option to specify minimum and maximum levels on perturbed curve (in bps)
When the zero type is selected, the Min and Max columns are available for the following perturbations:
-
FROM-TO
-
SEQUENTIALLY
-
SIMULTANEOUSLY
-
CUMULATIVE
Ⓘ Note: since min/max are enforced within the specified bucket, a non-local interpolator could cause rates to fall outside this range. Hence to apply the min/max functionality reliably, local interpolators should be chosen, using the alternate interpolator route if necessary.
» | Select From and To tenors to perturb. The From tenor is added to ValDate for Start Date of perturbation. The To tenor is added to Start Date for End Date of perturbation. |
» | Enter the perturbation amount, and choose bps, %, or %(rel) from the Type field. |
You can also specify a recovery rate perturbation.
See Specifying a Recovery Rate Perturbation for details.
» | Check "Shifts market data separately" to calculate a price for each market data being individually shifted (the other market data remaining static), otherwise all market data will be shifted simultaneously and a single price will be calculated. |
» | Check "Generates dependents" to generate dependent curves. You can include probability curves and basis curves. |
» | Check "Convert to Risk Ccy" to convert to risk currency. |
» | Select the compound frequency of the rate. |
» | Select the daycount convention of the rate. |
Underlyings -- FROM-TO Perturbation
» | Define the range of underlyings to perturb by selecting the first tenor (FROM), and the last tenor (END). For tenor based instruments (MoneyMarket, Swap, CDS, etc.), the tenor buckets apply to the tenor of the instrument, regardless of the actual calendar dates of the instrument. For fixed dates instruments (FutureMM, etc.) the tenor buckets apply to the actual calendar dates of the instruments. |
» | Enter the perturbation amount, and choose bps, %, or %(rel) from the Type field. |
You can also specify a recovery rate perturbation.
See Specifying a Recovery Rate Perturbation for details.
Dividend and Adjustment -- FROM-TO Perturbation
» | Select From and To tenors to perturb. The From tenor is added to ValDate for Start Date of perturbation, To tenor is added to Start Date for End Date of perturbation. |
» | Enter the perturbation amount, and choose bps, %, or %(rel) from the Type field. |
» | For the Adjustment perturbation type you can select a convexity adjustment: |
You can also specify a recovery rate perturbation.
See Specifying a Recovery Rate Perturbation for details.
Zero -- Bucketed Perturbation
When you select SEQUENTIALLY, SIMULTANEOUSLY, or CUMULATIVE, the setup is the same as Zero -- FROM-TO Perturbation, except that you can specify multiple buckets.
» | Click Add or Insert under the bucket table to add another bucket. |
You can specify buckets in length, end tenor, or in place (it allows bumping the zero rate sequentially for each point on the curve).
» | You can also specify multiple sets of buckets. To do this, click Add next to the Set # field. Then for each set, you can modify the tenors and the shift amounts as applicable. You can select the set number from the Set # field, and the corresponding buckets will be displayed in the bucket table. |
Here is an example for multiple sets of buckets.
Underlyings -- Bucketed Perturbation
» | Click the "All Underlyings" radio button to select all underlying instruments and specify a single shift amount, or click the "Select Underlyings" radio button. In the latter case, click ... to select underlying instruments and specify individual shift amounts as shown below. |
To select underlying instruments, you can click Underling from scenario item(s) to load the underlying instruments of a given market data set. You can also select a reference index and a type of underlying to load the corresponding underlying instruments. Then select underlying instruments as applicable and click >>. In the underlying table, specify the shift amount and its type.
Click Add Recommendations to select instruments for hedge recommendation.
Dividend and Adjustment -- Bucketed Perturbation
When you select SEQUENTIALLY, SIMULTANEOUSLY, or CUMULATIVE, the setup is the same as Dividend and Adjustment -- FROM-To Perturbation, except that you can specify multiple buckets.
» | Click Add or Insert under the bucket table to add another bucket. |
Specifying a Recovery Rate Perturbation
To specify a recovery rate perturbation, check the Recovery checkbox next to the Type field as shown below.
» | Select the recovery type and enter the recovery rate. The recovery type can be specified as % for additive, or %(rel) for relative. |
Example: if you specify a perturbation of 10%, a recovery rate of 40% will move to 50%, and if you specify 10%(rel), a recovery rate of 40% will move to 44%.
To specify a recovery rate perturbation of 0%, use -100%(rel).
Example
Below are two parametric curve perturbation rules in the IRD rule group.
Scenario delegates the actual shifting of the quote to the curve underlying itself, as well as min and max bounds. Some curve underlyings leverage this and convert the shift amount before applying it:
• | A shift of +1bp on a FutureMM quote of 98 will result in a quote of 97.99 (+1bp is converted to -0.01); |
• | A shift of +1bp on a spread-quoted Basis Swap will actually apply a -1bp shift to the quote; |
• | Other examples include FX and FX Forward curve underlyings (Contango in particular). |
A risk measure can be created that incorporates the perturbation rules.
5. Date Rules
Date perturbation rules allow the simulation of a change in the valuation date.
» | Click ... next to the Add /Remove tenor(s) field to add tenors. |
» | You can also specify multiple sets of tenors. To do this, click Add below the Set number field. Then for each set, you can modify the tenors as applicable. You can select the set number from the Set number field. |
» | You can enter specific dates. Enter a date in the "Absolute date" field, and click Add. |
» | You can check "Business Days" to only generate business dates. In that case, you can select a holiday calendar. |
» | You can also set the time of the day. |
» | Select "Roll quotes" to roll the quotes forward for all tenors specified in the date rule. |
6. Matrix Rules
Matrix perturbation rules, similar to Composite, allow the specification of up to three basic rules, each along an axis. A "matrix" of perturbations in three dimensional space is produced.
» | Click Add/Remove
under
the Vertical Axis label to select rules for the vertical axis. The Select Rules screen will appear as below.![]() |
» | Click Add/Remove under the Horizontal Axis label to select rules for the horizontal axis. |
» | Click Add/Remove under the Depth Axis label to select rules for the depth axis. |
7. Quotes Rules
Quotes perturbation rules allow the perturbation of individual quote values, quotes per product type, and Beta values.
» | Click Quote selector to select the quotes that you wish to shift. |
Under Type, you can choose bps, pips, %, or %(rel).
Click Add to add individual quotes and/or product types (product types are at the end of the list).
You can also create rules to perturb the quotes based on product type and quote type. For example, you can perturb CDS indices quoted in spread and CDS indices quoted in price using different perturbation rules. Click Quote Type to select a product type and a quote type.
To shift Beta values for a given quote, right-click the Beta field and choose "Add Beta" from the popup menu. It allows selecting the corresponding asset for which you have defined Beta values.
» | Check "Shifts quotes separately" to calculate a price for each quote being individually shifted (the other quotes remaining static), otherwise all quotes will be shifted simultaneously and a single price will be calculated. |
You can select the FX conversion target: The shifted and base pricer measure will be converted to the selected currency (CC1, CC2, PL Display ccy etc) of the shifted ccy pair.
» | Check "FX Ignore Rounding" to not round the quote obtained after shifting FX quotes. The shifted quote might not be consistent with the market standard as defined in the currency pair definitions, and this is accepted as this shifted quote is a theoretical value. |
» | Check "Quote Starts With" to remove the wildcard character at the start of the SQL search statement, thereby improving performance. This is for all quotes, and not controllable at the individual quote level. |
Example
Below is a collection of quotes perturbation rules.
The quotes perturbation rules can be used to create sets of risk measures.
8. Reset Risk Rules
Reset risk perturbation rules allow the perturbation of values related to trades involving resets.
Ⓘ [NOTE: This perturbation type is limited to the following products: EquityLinkedSwap, SimpleMM, and Swap (vanilla only, no optionality)]
» | Select the starting and ending periods. The second period must be greater than or equal to the first period. |
» | Enter the shift amount in basis points, percentages, or relative percentages. |
» | Select the currency. |
» | Depending on the selected currency, you may have the option to select a reference index. |
» | Depending on the selected currency and index, you may have the option to select a tenor. |
» | Depending on the selected currency, index, and tenor, you may have the option to select a source. |
» | If you check "Shift separately", multiple scenarios will be generated. |
9. Seasonality Adjustment Rules
Seasonality Adjustment perturbation rules allow the perturbation of seasonality curves.
» | Enter the shift amount in basis points or relative percentages. |
10. Volatility Rules
Volatility perturbation rules allow the perturbation of volatility surfaces along any of their axes.
» | Enter the shift amount in %(add), %(mult), or %(rel). |
» | Select From (included) and To (excluded) expiration tenors, if applicable. |
» | Enter From (included) and To (excluded) strike prices in %, if applicable. |
» | Select From (included) and To (excluded) tenors, if applicable. |
» | Check the boxes corresponding to the type of shift you wish to perform. |
Checkbox Options |
Description |
||||||
Exclude lower bounds |
If checked, the lower bounds for expiration, tenor and strike are included. |
||||||
Shifts separately |
To shift each market data separately. |
||||||
Shifts points independently |
To shift each point independently. Cumulative Shifts You can also check "and cumulatively" to perform cumulative shifts. The perturbation order used in the cumulative volatility rule is Strikes, Expiries, and Tenors. It means that the system starts by shifting cumulatively all Strikes of the same Expiry and Tenor. Then the Strikes of the second Expiry are shifted cumulatively. When all Strikes of all Expiries of the first Tenor are shifted, the system does the same on the second Tenor. The shifts continue in a similar fashion until all of the necessary cumulative shifts have been performed. Strikes, Expiries, and Tenors are shifted from lowest to highest. For Expiries, you can choose a Forward or Backward direction for the shift. Step Back You can also check "step back" to calculate the shifted NPV for the "previous point" of the Volatility Surface. This scenario rule is then used in a risk measure formula to calculate a "step back" cumulative sensitivity as shifted NPV - previous shifted NPV. To do this, two cumulative Volatility rules must be created:
The risk measure will be defined as:
|
||||||
Custom Shift Amounts | If not shifting points independently, you can designate custom shift amounts. You can specify three strikes and their corresponding amounts. | ||||||
Shift adjustments |
To shift associated adjustments. When you check "Shift adjustments", you will be prompted to select the type of adjustment to be shifted.
|
||||||
Convert to Risk Ccy | Check box to convert to risk currency. |
11. ModelCalibration Rules
ModelCalibration perturbation rules alow the perturbation of ModelCalibration parameter values, such as the correlations used to calibrate the Libor Market Model (menu action marketdata.ModelCalibrationWindow).
The prerequisite to use a ModelCalibration Scenario Rule is the configuration of a calibrated LMM used in pricing relevant trades.
For details, please refer to LMM Model Calibration in the XVA and Monte Carlo PEE documentation.
Figure 1: The Model Calibration Window. (The Model Parameter values in the lower view correspond to the Category and Name dropdown menus in figure 2.)
Figure 2: The ModelCalibration Rule shown in Scenario Editor.
Category: options driven by Model Calibration configuration.
• | "Default" - This corresponds to Parameters that are currently agnostic and apply to the overall calibration of the model. Such examples include "Beta", "Initial A", and "Initial B". |
• | "ANY" - This will drive a selectable list of all available Parameter selections which will apply to all currencies. |
• | [Currency Code] - This swill drive a selectable list of all available Parameter selections that will apply to the selected currency. |
Name: Available list of parameters used in Model Calibration. This is driven by the selection in the “Category” field. The list under “Name” corresponds with Calibrator Parameters defined in the ModelCalibration window.
Amount: Shift amount entered by the user, up to 2 decimals.
Amount Type: (abs), (%rel), (set)
• | "abs" is the sum of Start Parameter Value and Shift Amount |
• | "%rel" is a relative increase of the Start Parameter Value by the defined Shift Amount. |
• | "set" Amount Type overrides the specified Calibrator Parameter with the defined Shift Amount. |
Where P is the Final Parameter Value, p is Start Parameter Value, S is Shift Amount, and T is Amount Type:
– | If T = "abs" then P = p + S. |
– | If T = "%rel" then P = p * (1+S/100). |
– | If T = "set" then P = S. |
Shift Settings
Shift Settings |
Description |
Shift ModelCalibration items separately | When the market data set contains more than one ModelCalibration item, this will control whether they should be shifted separately or not. Default value is unchecked. |
Shift ModelCalibration parameters separately | Only available when shifting ModelCalibration items separately. When more than one parameter to be shifted is defined, this will control whether all parameters will be shifted at simultaneously, or one by one. Default value is unchecked. |
Convert to ModelCalibration item currency |
Unchecked and locked if “shift ModelCalibration items separately” is unchecked. Available for checking if “shift ModelCalibration items separately” is checked. Default value is unchecked. If “Convert to ModelCalibration item currency” is checked, the Pricer Measure produced will be the same as the currency of the ModelCalibration item that is shifted. |