# ValueOrientedRiskManagementInsurance

The package provides example calculations for the book

Kriele M. and Wolf, J.

Wertorientiertes Risikomanagement von Versicherungsunternehmen, 2nd edition, Springer-Verlag, Berlin Heidelberg, 2016

**Disclaimers:**

- The code in this package has been written several years ago (mostly Julia version 0.3.x and Julia version 0.4.x). In the meanwhile, both Julia and the package
`DataFrames`

have improved significantly. While the code still works, it does not reflect today's best practice. - The standard model for the Swiss Solvency Test (SST) has changed and been improved since the publication of this book. Both the description of the model and the code presented here are outdated. The Swiss Financial Market Supervisory Authority
*FINMA*provides an open source R Tool (GNU License, Version 3) of the current model.

Any futher development for future English versions (*Value-Oriented Risk Management of Insurance Companies*) or German versions of this book will take place in the separate GitHub repository *RMInsurance.jl*.

(The examples for the first editions were less complex and written in R)

## The correct checkout for each book edition and each supported Julia version

Julia version | Version | Branch | Errata |
---|---|---|---|

0.4.x | de_2ed | Korrekturen.md | |

0.5.x | de_2ed | Korrekturen.md | |

0.6.x | de_2ed_j0.6 | Korrekturen.md | |

1.0.x | 1.0.0 | master | Korrekturen.md |

1.6.x | 1.1.0 - 1.1.1 | master | Korrekturen.md |

Because of package dependencies it is recommended to use Version 1.1.0 or later (and Julia Version 1.6 or later).

**Errata:** Corrections of errors in the book. We list all errors we are aware of. In order to display the text, simply click on the corresponding file name in the list of linked documents above.

Notice that Section C.2 "Installation des Packages *ValueOrientedRiskManagementInsurance*" is outdated, as a new package manager has been introduced with Julia 1.0. Please see the *Julia documentation*, Section Pkg for details.

## Structure of the package

The package consists of 4 distinct parts:

*SSTLife*: An extremely simplified example of the SST (Swiss Solvency Test) calculation for life insurance. The Swiss Solvency Test is the Swiss regulatory capital requirement. The resulting monetary requirement is referred to as the "target capital"`ZK`

^{1}.*S2Life*: A simplified example of the S2 (Solvency 2) calculation for non-life insurance. Solvency 2 is the new regulatory capital requirement in the European Union. The resulting monetary requirement is referred to as the "Solvency capital requirement"`SCR`

.*S2NonLife*: A simplified example of the S2 calculation for life insurance*ECModel*: An extremely simplified example of an internal economic capital model for non-life insurance. This model is used to illustrate some techniques used in value based management.

Note that we have simplified and (in part changed for our exposition) the regulatory requirements for SST and Solvency 2. Also note that the implementation of Solvency 2 may be slightly different in different EU countries. For definitive information about SST or Solvency 2, please consult the original literature and any guidance issued by the supervisory authorities in the jurisdiction of interest.

## Files in the Folder "src" and its Subfolders

The folder "src" contains types and functions which are meant to be used in specific examples

### SST Life Calculation

The files *SST__Types.jl* and *SST_Functions.jl* contain types and functions which can be used to model a simplified version of the the SST standard life model. The calculation is basically as follows. The change of the "risk bearing capital", `ΔRTK`

^{2} over 1 year is approximated by a quadratic function of the risk factors. As the risk factors are assumed to be multinormally distributed, the distribution of `ΔRTK`

is known. The target capital `ZK`

is the sum of the 99% expected shortfall and the market value margin. The market value margin is calculated using a cost of capital method, where the capital is given by the 99% expected shortfall of `ΔRTK`

and the cost of capital factor is assumed to be 6%.

The example calculation provided here is based on an extremely simplified life insurance portfolio.

### Solvency 2 Life Calculation

The files *Life__Types.jl*, *Life_Constructors.jl* and *Life_Functions.jl* implement a simplified model of a life insurance company. A simplified Solvency 2 calculation for this model is implemented in the files *S2Life__Types.jl*, *S2Life_Constructors.jl* und *S2Life_Functions.jl*. The Solvency 2 Standard Formula for Life insurers consists of several modules for the different risk factors. For each module a capital requirement is calculated first, and then all these requirements are aggregated to the overall Solvency Capital Requirement `SCR`

. Most of the individual capital requirements are calculated through deterministic stress tests, which are calibrated to correspond to the 99.5% quantile. Only a subset of the Solvency 2 modules applicable for life insurance companies have been implemented, but it should not be difficult to extend the code to more modules.

### Solvency 2 Non-Life Calculation

The files *S2NonLife__Types.jl* and *S2Life_Functions.jl* contain a simplified implementation of the Solvency 2 capital requirement for a highly simplified non-life insurance company.

### Internal Economic Capital Model

The internal economic capital model is a highly simplified Monte Carlo model of an extremely simplified non-life insurance company. Reserves are completely ignored in the model. The purpose of this model is to illustrate some techniques used in value based management.

## Files in the Folder "test"

The folder "test" contains the files files *x_Input.jl*, *x.jl*, and *x_Test.jl* for each of the four parts *x* ∈ {*SSTLife*, *S2Life*, *S2NonLife*, *ECModel*}. The files *x_Input.jl* and *x.jl* replicate the calculation in the book and the files *x_Test.jl* are used for automatic testing. In addition, the file *Life_Input.jl* contains the input data for the example insurer, which is used in the S2 life calculation. *runtests.jl* controls the automated tests.

## Acknowledgements

@reumle updated the code to Julia 1.6.1 and DataFrames 1.0.0!

## Footnotes

^{1} The abbreviation `ZK`

refers to the original German term "Zielkapital". "Target capital" is the literal English translation.

^{2} The abbreviation `RTK`

refers to the original German term "Risikotragendes Kapital" ("risk bearing capital"). Observe that `RBC`

is usually understood to mean "risk based capital" which has a different meaning than "risk bearing capital".