This chapter describes the details of Historical Simulation.
The Cash Flow Engine (CFE) supports up to 2,100 rate paths.
When User runs Historical Simulation, and if User has entered ‘Number of Rate Path’ in Processing Parameters block, as value 10, CFE would need 10 days of Historical Rates, from as of date, defined for Interest Rate Code selected as Valuation Curve (for Reporting Currency) in Stochastic Rate Index rule.
For Monte Carlo Simulation, CFE would generate several rate path(s), using user input in ‘Number of Rate Path’.
1. CFE would calculate and store monthly rates for 360 months for all scenarios, for all Term Points, for Valuation Curve.
For Historical Simulation, CFE uses Historical Spot rates to calculate monthly forward rates for 360 months. CFE uses Implied Forward logic to calculate forward monthly rates. For more information on Implied Forward logic, see Forecast Rate Calculations.
For Monte Carlo Simulation, CFE use provided Term Structure Model and its parameters to calculate monthly forward rates for 360 months.
Note: For more information on Monte Carlo simulation, see Monte Carlo Analytics.
2. CFE outputs Value at Risk (VaR) and Earnings at Risk (EaR) for all the rate paths the user requires.
NOTE |
Stochastic Monte Carlo / Historical simulation is a single factor modeling of interest rates of Reporting Currency. Although the engine does convert Balances into Reporting Currency, there is no correlation of Risk factors of particular Currency’s Interest rates with Reporting Currency. Stochastic processing is not intended for Multi-currency processes. For best results, run Historical/ Monte Carlo calculation for a Single currency where Functional Currency = Reporting Currency. |
3. The probabilities are arrived by taking the inverse of the Number of rate paths. That is, if the number of rate paths is 2000, then the probability values will start from 0.0005 which is 1/2000 and reach to 1.0 in steps of 0.0005. If Number of rate path is 10, then probability values will start from 1/10 = 0.1
4. CFE writes VaR results to the FSI_O_STOCH_VAR and FSI_O_STOCH_TOT_VAR tables. Output at product leaf-level goes into the FSI_O_STOCH_VAR table. Aggregated results at reporting currency levels go into the FSI_O_STOCH_TOT_VAR table.
5. At-Risk, Period is the VaR Period used by CFE to calculate VaR.
6. CFE writes EaR results to the EAR_LEAF_DTL_xxxxxx, EAR_LEAF_AVG_xxxxxx, EAR_TOTAL_DTL_xxxxxx and EAR_TOTAL_AVG_xxxxxx tables.
7. CFE writes the Market Value results to the FSI_O_STOCH_MKT_VAL table. This is the average of the Present Values across the rate paths for all instruments aggregated by product.
8. CFE uses the Interest Rate curve selected as the Valuation curve in the Stochastic Rate Index Rule as a Discounting curve.
9. If the user selects “One Month Rate” CFE output valuation curve discount rates to FSI_INTEREST_RATES_AUDIT. Index IRC rates are not output to this table, but Users can calculate it as needed using the relationship defined.
10. CFE populates FSI_O_PROCESS_CASH_FLOWS also for auditing purposes, depending upon the user selection.
Market Value and Value at Risk (VaR) Calculation
Discount Factor is calculated as = E ^ (-RT),
where, T = Tenor in Years and is calculated as = (Payment Date of a record of an event– As of date) / 365, and R= Discount Rate for that event in a percentage format.
Discount Curve: Engine would use Valuation Curve for Discounting. The engine uses a curve in Zero Rate, Annual Compounding, and Act/Act Accrual basis format. Rates would undergo rate conversion if the Valuation curve were not in the mentioned format. For further information on Rate Conversion, see Rate Conversion.section.
Term Point: Tenor in days of an event used to determine Term Point to calculate Discount Rate for that event. The tenor is calculated = (Payment Date of a record of an event – As of date).
If Tenor equals 14 Days, Discount Rate of 14 D Tenor would be used.
NOTE |
If relevant Term Point were not available in Valuation Curve, CFE would interpolate to get the corresponding rate. Say if Term Point is 14 D, and there is no 14 D Term Point available in Valuation Curve, CFE would interpolate to get 14 D Term Point rate. |
While Interpolating CFE would convert Month Tenor into days by multiplying with 30.416667. Year Tenor is converted into days by multiplying 365.
Say CFE needs 14 D Term Point, and the Valuation curve has 1 D and 1M Term Point, CFE would use 1D and 30.416667 Days to interpolate 14 D term point.
Interpolation: CFE would use Linear/Cubic/Quartic Spline for interpolation. This is a selection at the process level.
Date of IRC: Engine refers to the instrument record’s event date to derive Discount Rates.
For example, say as of date is 3/31/2019, and 1st one month bucket starts from 4/1/2019 till 4/30/2019. If the event date falls on 4/14/2019, CFE would use/interpolate the 14 D Term Points rate from bucket 1 to calculate the discount rate. Tenor in days = 4/14/2019- 3/31/2019 = 14 D
Say there are ‘n’ instrument records under a product leaf, and there is’ product leaf under a specific reporting currency. There are ‘i’ rate path passed. Each instrument record ‘n’ has a ‘k’ payment date.
The present value of nth instrument record for kth payment date, for ith rate path, is calculated as = Cash Flows * Discount Factor, for nth instrument record for kth payment date, for ith rate path.
CFE would sum Present Value of all payment event of nth instrument record, for ith rate path to derive Present Value of nth instrument record for ith rate path.
CFE would calculate the Present Value of the nth instrument record for all rate paths.
CFE would aggregate Present value for all instrument records falling under mth Product leaf for ith rate path. Similarly, CFE would aggregate Present value for all instrument records falling under mth product leaf for other rate paths.
Market Value for mth product leaf is calculated as the Average of aggregated Present Value across all the rate paths. This market value gets output into table FSI_O_STOCH_MKT_VAL.
The input of the VaR Period is required. For example, Users can have a VaR Period of 7 Days.
1. The engine would use VaR Period as Tenor and would fetch Discount Rate for this Tenor. Say VaR Period is 7 D, the engine would calculate Discount Rate for 7 D Period. Similar logic is used to calculate discount factors.
2. For ‘ith’ rate path engine would derive the Discount Factor specific to that rate path.
3. Dynamic Accrued Present Value for ith rate path for mth product leaf would be calculated as = Present Value of mth product leaf for ith rate path /Discount Factor for ith rate path.
For the ith rate path, VaR for mth product leaf is calculated as = Market Value of mth product leaf - Dynamic Accrued Present Value for ith rate path for mth product leaf. VaR at product leaf-level gets populated into the FSI_O_STOCH_VAR table.
VaR output, for ith rate path, for all product leafs, under a reporting currency is aggregated and populated at reporting currency level into FSI_O_STOCH_TOT_VAR table.
Once VaR is calculated for product leaf and reporting currency level for all rate paths, CFE would sort the values from ascending order. CFE would assign the lowest probability to the lowest VaR value.
For further information on Value at Risk, see the Value-at-Risk section in Monte Carlo Analytics.