Historic Simulation
Process for specifying historic scenarios
Scenarios should be identified by the second date in a pair, and start at ID 1. This means the history date set extends one valid (non-weekend or holiday) day earlier than the scenario date set.
Example
A history set of dates 5,6,7 December 2011 will translate to two scenarios:
Scenario 1: 6th Dec (from history 5th, 6th Dec)
Scenario 2: 7th Dec (from history 6th, 7th Dec)
This example would be equally defined by:
scenarioChooser StartDateToEndDate
scenarioStartDate 6th Dec
scenarioEndDate 7th Dec
scenarioChooser StartDatePlusCount
scenarioStartDate 6th Dec
numScenarios 2
scenarioChooser EndDatePlusCount
scenarioEndDate 7th Dec
numScenarios 2
Data gaps do not affect the number of scenarios. Gaps are always filled (see process for handling gaps below).
Weekends and holidays are excluded from the scenario set. Holidays are defined through the excludedDates list and can be rolling or defined for a specific year. Rolling dates apply on the entered date and every subsequent anniversary of that date. However they do not extend backwards from the entered date.
This means days either side of a weekend or holiday are treated as being adjacent to each other. This leads to some boundary conditions:
Example 1
Suppose in our example above we define 5th Dec as a public holiday.
To satisfy the first scenario the underlying history will need to be extended to the previous Friday.
So all three methods will return the following scenarios:
Scenario 1: 6th Dec (from history 2nd, 6th Dec)
Scenario 2: 7th Dec (from history 6th, 7th Dec)
Example 2
Suppose now we reset the 5th to a normal date but we define 7th Dec as a public holiday.
The three methods will all return different results as follows:
StartDateToEndDate will return only 1 scenario:
Scenario 1: 6th Dec (from history 5th, 6th Dec)
StartDatePlusCount will return 2 scenarios:
Scenario 1: 6th Dec (from history 5th, 6th Dec)
Scenario 2: 8th Dec (from history 6th, 8th Dec)
EndDatePlusCount will return 2 scenarios:
Scenario 1: 5th Dec (from history 2nd, 5th Dec)
Scenario 2: 6th Dec (from history 5th, 6th Dec)
Logic for filling gaps
Term structures do not need to align throughout the history set. The term structure (eg the terms on a zero curve, or the 2 dimensional points on a surface) is determined by the current term structure for that curve. All historic rates are transposed to match the term structure of current rates via linear interpolation, or square interpolation in the case of surfaces, before shifts are calculated. If a historic curve is missing terms at the start or end, these terms are filled with the nearest values on the curve.
For example, if today’s curve included a 30 year term but a historic curve only extended to 20 years, the historic rate at the 20 year term would be assigned to the historic 30 year rate.
Other historic simulation inputs
CompressionFactors
This variable allows the user to define the maximum relative shift allowed for a curve (or a set of curves by using wildcards in the curve key).
For example:
lowRatio of 0.5, means the scenario cannot reduce rates to less than half of their value in a single scenario. Any such shifts will be truncated to the lowRatio.
higRatio of 2.0 means the scenario cannot increase rates to more than double their value in a single scenario. Any such shifts will be truncated to the highRatio.
Note: This variable was introduced to tame the shifts arising from illiquid regions of volatility surfaces.
Proxies
This variable allows one curve or a set of curves to be proxied by another curve in order to generate shifts in cases where history for the actual curve is patchy or missing altogether (see logic for filling gaps above). Proxies can be further refined to match by industry sector and liquidity (high or low). This is especially useful for equities where a large number of stocks with potentially missing history can be proxied to a small number of similar (driver) stocks with full histories by defining a small number of proxies.
Shift Overrides
The default shift methodology is “Relative” whereby the current rate is multiplied by the ratio of the two historic rates. A curve or set of curves can be set to use “Absolute” shifts instead (where the actual historic shift is added to the current rate). An example of where this might apply is when interest rates are near zero.
Confidence Method
This parameter determines how quantile-based statistics are determined when the quantile index q=Q×N (where Q is the quantile and N is the number of paths (distribution points) is not a whole number.
Choice | Description |
Precise | Divide by “n+1”. So, effectively if there are 9 samples they will correspond to 10%, 20%, ..., 90%. We then use linear interpolation between the two observations closest to this point |
RoundTowardsTail | First find the “precise” point using the method above and then choose the next exact observation closer to the tail. |
RoundTowardsCentre | First find the “precise” point using the method above and then choose the next exact observation closer to the centre. |
Bisection | Divide by “n” and then makes an adjustment of 0.5. So, effectively if there are 10 samples, they will correspond to 5%, 15%, …, 85%, 95%. We then use linear interpolation between the two observations closest to this point. |