gem / oq-engine

OpenQuake Engine: a software for Seismic Hazard and Risk Analysis
https://github.com/gem/oq-engine/#openquake-engine
GNU Affero General Public License v3.0
377 stars 273 forks source link

Implementing reinsured losses #7886

Closed micheles closed 1 year ago

micheles commented 2 years ago

Reinsurance calculations in OpenQuake

Introduction

This issue introduces modifications and improvements to the OpenQuake calculators for incorporating reinsurance loss estimation for traditional non-life reinsurance contracts. For this implementation, proportional and non-proportional reinsurance treaties are considered.

Rationale

The insured and reinsured losses calculation is useful if the user is interested in estimating the retention, cession and remainder of losses generated for individual assets or a portfolio of assets during a single event or during multiple events over a given time window.

The insured and reinsured losses will be applicable to the scenario and event-based calculations. For the later calculator, it will be possible to compute almost all kinds of aggregated reinsured loss statistics for a distributed portfolio of assets (aggregated retention, cession and remainder). In addition, it will be possible to calculate aggregated reinsured losses for different return periods, and these metrics could be calculated at both the asset level and also at the aggregated level for groups of assets sharing a set of attributes.

Specifications

The implementation of traditional non-life reinsurance contracts is traditionally divided between facultative and obligatory contracts. The OpenQuake implementation considers a flexible approach in which the user can allocate assets into particular insurance and reinsurance contracts.

The implementation includes adjustments to two input files: exposure.csv and policy.csv. A new input file, reinsurance.csv is also required to complete the definition of the reinsurance agreements.

OpenQuake considers the following reinsurance treaty types:

  1. Proportional treaties (Pro-Rata)
    • Quota Share
    • Surplus
  2. Non-proportional treaties
    • Excess of loss
    • Stop loss

OpenQuake input fields

Exposure model input file

The exposure model needs to include a policy column as a tag. The policy column refers to a unique identifier of the policies, indicated in the policy column in the policy.csv input file.

<tagNames>policy</tagNames>
Additional parameters in exposure file

policy: str, a unique identifier for a policy

Insurance input file

The insurance input file specifies the liability and deductible of each policy, as well as the reinsurance treaties applicable for each policy.

Parameters in insurance file

policy: str, a unique identifier for a policy policy_unit: str, specify units to apply in each policy. Options ['asset', 'policy'] liability: float, the maximum amount covered in the policy in accordance with the policy_unit liability_as_fraction: bool (optional), default False deductible: float (optional), the value of losses not covered by the insurer deductible_as_fraction: bool (optional), default False min_deductible: float (optional), minimum value to apply the deductible in absolute value treaty: str, a unique identifier for a treaty or reinsurance contract

Reinsurance input file

Parameters in reinsurance file

treaty: str, a unique identifier for a treaty or reinsurance contract treaty_type : str, specify treaty contract for reinsurance. Options ['quota_share', 'surplus', 'WXL', 'CatXL'] treaty_unit: str, specify units to apply each treaty. Options ['policy', 'treaty', 'event'] qs_retention: float, the fraction of retention for the insurer in a Quota Share treaty qs_cession: float, the fraction of cession to the reinsurer in a Quota Share treaty _Note: qs_retention + qscession == 1 surplus_line: float, the limit of maximum retention treaty_limit: float, the maximum amount covered in the treaty in accordance with the treaty_unit event_limit: float, the maximum amount covered for a given event

reinsured_losses output files

retention: losses that the ceding company keeps for its own account cession: losses that are ceded by the ceding company to the reinsurer(s) remainder: losses above the limits of the reinsurance contracts overspilled: losses that exceed the event_limit of the treaty non-insured: losses with no insurance contracts

Note

For non-proportional insurance and a more recent version of the specs see https://github.com/gem/oq-engine/pull/8059

micheles commented 1 year ago

NB: the specs have been significantly simplified, so do not trust what is written in the description above; we will document properly what entered in the engine in the manual.

micheles commented 1 year ago

Closing now and moving the last details into https://github.com/gem/oq-engine/issues/8124.