09.10.2020
This vignette introduces the use of the sstCalculation
package to perform the solvency calculation under the Swiss Solvency Test (SST) framework.
The SST-Template is an Excel template containing the company name together with all inputs required for the solvency calculation of one insurance company. The FINMA defines the structure of the template and the insurance companies fill it accordingly.
The current version of the SST-Template is available under the following path:
www.finma.ch > Supervision > Insurers > Cross-Sectoral Tools > Swiss Solvency Test (SST)
The sstCalculation
package can perform the solvency calculation in different cases: with and without the standard model for participation (participation model) and with and without the new stochastic credit risk model.
Broadly speaking, the participation model covers the case where one single insurance company (mother) holds a material participation in one or more insurance companies (daughters). When the standard model for participation is used, the insurance company needs to fill multiple SST-Templates: one for the mother company and one for each daughter company. In the SST-Template of each daughter, it can be chosen
When the participation model is not used, the insurance company needs to fill one SST-Template. By abuse of language, we will consider this standard case as a company with one mother and no daughter company.
This case entails filling in the new sheet ‘Credit Risk Merton’ in the SST-Template. If there are instruments that do not enter the scope of the new credit risk model and follow the old standard model, these must be entered the sheet ‘Credit Risk Basel’ as always done.
If the new credit risk model is not used, then the previous deterministic model based on Basel III is used. In this case, it is necessary to completely populate the standard sheet ‘Credit Risk Basel’ with all instruments subject to credit risk.
We illustrate the solvency calculation in the case where the participation model is used with one mother and one daughter company. If the participation model is not used, the following explanations are identical, with the exception that only one SST-Template is provided.
The function sstCalculation
performs the solvency calculation based on the specified SST-Templates:
<- sstCalculation(path = c("~/SST-Template_daughter.xlsx", "~/SST-Template_mother.xlsx"),
result nsim = 1000, seed = 123
)
The mother and daughter templates are automatically identified based on their content. Therefore no specific order is required for the paths. If no seed is specified, the default chosen value is 1.
As we see below, the solvency calculation is a two-stage process. First, the SST-Templates are loaded and validated. Then the simulations are performed and aggregated.
#> Loading
#> |======================================================================================| 100%
#> Performing simulations
#> |======================================================================================| 100%
Additional details about this function are available in the documentation, see ?sstCalculation
.
The variable result
is a list that contains the simulation results produced by sstCalculation
:
#> --------------------------------------------------
#> Simulations results
#> --------------------------------------------------
#> - Element `Base case`
#> - Element `Open_FDS`
As the name suggests, Base case
represents the default result produced by the tool (see section ‘Variants’ in ‘Advanced functions’ for more information). One can access to these elements with the command result$`Base case`
, which is again a list:
#> --------------------------------------------------
#> SST simulation results
#> --------------------------------------------------
#> - Object `Standalones_Simulations`
#> - Object `Risk_factors_simulations`
#> - Object `Target_capital_decomposition`
#> - Object `Internal_parameters`
In the following we will describe the content of each object. We recall that, as usual, we can access any element from a list by using this command
$`Base case`$Standalones_Simulations result
The Standalones_Simulations
is a matrix containing the simulations of one-year change of the RBC stemming from specific risk categories plus some indicators at the end.
This matrix is stored as data.table
and has the following columns:
life.all
, life.Mortality
, …: Total life risk, life risk from mortality, …nonlife.all
, nonlife.PY
, nonlife.CY
: Total nonlife risk, PY risk, CY risk.health.all
, health.Individual health
, …: Total health risk, healh risk from individual health, …health.all_beforeScenario
: Total health risk before the aggregation of health scenarios.market.all
, market.equity
, …: Total market risk, market risk from equity, …market.participation
: Market risk from immaterial participations.credit.all
, credit.Basel.all
, …: Total credit risk, total credit risk from (deterministic) Basel III model, …scenario.all
: Total risk from scenarios (except health scenarios).constant.all
, constant.expectedFinancialResult
, …: Constants coming from the deterministic part of the model (except credit risk) which include expected results and additional effects on target capital.insurance.all
: Total insurance risk.insurance_market_credit.all
: Total insurance, market and credit risk.insurance_market_credit_scenario.all
: Total insurance, market, credit and scenarios risk.insurance_market_credit_scenario_LLPO.all
: Total insurance, market, credit and scenarios risk after LLPO application.deltaRBC_beforeLLPO
: RBC variation before LLPO application.deltaRBC
: Total RBC variation.simulation_id
: Unique identifier of the simulations per company. Template
: Indicator telling the name of the company from the SST Template.MainResults
: TRUE
for the simulations used to compute the results in the FDS, FALSE
otherwise.The nonlife.PY
, nonlife.CY
are simulated by the R-Tool from the captive module if the nonlife insurance risk is set to captive
. Otherwise, each of these two columns contains a constant value, which is provided by the company in the SST-Template and which corresponds to the expected shortfall.
The Risk_factors_simulations
is a matrix containing the simulations per risk factor, whose names are defined in the SST-Template.
This matrix is stored as data.table
and has the following columns:
life.Mortality
, life.Longevity
, …: life risk factors.health.Individual health
and health.Collective compensation
: health risk factors.market.CHF 2Y
, market.CHF 10Y
, …: market risk factors.scenario.scenarioId
: this is a technical quantity that is produced by the tool and is needed for internal purposes. This column is present even if no scenario aggregation takes place.simulation_id
: unique identifier of the simulations per company (as for Standalones_Simulations
).Note that nonlife risk factors are not simulated because the nonlife risk model is not based on risk factors. Another consideration holds true for the stochastic part of credit risk: since a different idiosyncratic risk factor is considered for each counterparty, it was decided not to include them.
Risk factors simulations for mother and daughter are the same. The simulation_id
of Standalones_Simulations
corresponds to the number of the risk factors simulation.
Key figures that appear in the FDS and are also displayed when using the dashboard. An example is the following:
Key Figures Value in Mio. CHF
1: Insurance risk 324.1518805
2: Market risk 1090.5209307
3: Credit risk 954.0128005
4: Diversification effect -278.7490686
5: Insurance, Market & Credit risk 2089.9365431
6: Scenario 0.0000000
7: Insurance, Market, Credit with Scenarios 2089.9365431
8: Expected insurance result 0.7046668
9: Expected financial result 206.8943485
10: Additional effect on TC 0.0000000
11: Impact of LLPO (only participation model) 0.0000000
12: SCR 1882.3375278
13: MVM 288.0672296
14: Target capital 2170.4047574
This is actually a function: if we run result$Open_FDS()
, then the generated FDS (of all variants - for more information see ‘Advanced functions’) will appear. Once the Excel file is opened, it can be saved for future purposes.
The sstCalculation
function is a two-stage process. For an increased transparency, the advanced user can access to each step separately.
First, the SST-Template is loaded and validated:
<- excelToModelSST(path = c("~/SST-Template_daughter.xlsx", "~/SST-Template_mother.xlsx")) model
Then simulations can be performed from the model:
<- simulate(model, nsim = 1000) result
For more information, it is possible to type ?excelToModelSST
and ?simulate
, respectively.
It is possible to perform batch computations to obtain as-if results and output using different variants of the input. This possibility is enabled by copying and pasting one of the existing sheets of the SST-Template, changing the parameters inside the copied sheet and renaming the sheet with the convention ’old_name__##’, where the previous name of the sheet is followed by double underscore and 2 characters (letters or numbers). The default case is called Base case
. If variants are used, multiple versions of the FDS are produced.