Skip to main content

Reinsurance Pricing in Python!

Project description

rippy

ReInsurance Pricing in PYthon!

Getting Started

Install rippy from pypi:

pip install rippy

Introduction

Rippy is a simple, fast and lightweight simulation-based reinsurance modeling package. It has two main components:

  1. Frequency-Severity, otherwise known as compound distribution simulation

    Rippy contains the FrequencySeverityModel class to set up and simulate from compound distributions with a variety of frequency and severity distributions

    from rippy import FrequencySeverityModel, Distributions
    claims = FrequencySeverityModel(Distributions.Poisson(5),Distributions.Pareto(0.5,100000)).generate()
    
  2. Reinsurance contract calculation

    Rippy can then calculate the recoveries of a number of types of reinsurance contract for the simulated claims.

    from rippy import XoL
    xol_layer = XoL(name="Layer 1", limit=1000000, excess=100000, premium=1000)
    xol_layer.apply(claims)
    xol_layer.print_summary()
    

Rippy is based on the scientific python stack of numpy and scipy for fast performance. It can optionally run on a GPU for extremely fast performance. It is designed for interoperability with numpy and ndarrays, so for example the simulated claims can be operated on with numpy ufuncs:

import numpy as np
capped_claims = np.minimum(claims,2000000)

Under the hood/bonnet, rippy represents the simulations of the Frequency-Severity model in sparse storage, keeping two lists of simulation indices and values:

sim_index values
0 13231.12
0 432.7
2 78935.12
3 3213.9
3 43843.1
... ...

Frequency-Severity simulations can be aggregated (summed within a sim_index), which results in a standard np.ndarray

aggregate_claims = claims.aggregate()
np.array([13663.82,0,78935,12,47957.0,....])

Configuring the simulation settings

The global number of simulations can be changed from the config class (the default is 100,000 simulations)

from rippy import config
config.n_sims = 1000000

The global random seed can also be configured from the config class

config.set_random_seed(123456)

Rippy uses the default_rng class of the numpy.random module. This can also be configured using the config.rng property.

Using a GPU

GPU support requires a CUDA compatible GPU. Internally rippy uses the cupy library. Install the dependencies by running

pip install rippy[gpu]

To enable GPU mode, set the RIPPY_USE_GPU environment variable to 1.

export RIPPY_USE_GPU=1

on Linux or

set RIPPY_USE_GPU=1

on Windows. Set it to anythin else to revert to using a CPU

Project Status

Rippy is currently a proof of concept. There are a limited number of supported distributions and reinsurance contracts. We are working on:

  • Adding more distributions and loss generation types
  • Adding support for Catastrophe loss generation and reinsurance contracts
  • Adding support for more reinsurance contract types (Surplus, Stop Loss etc)
  • Grouping reinsurance contracts into programs and structures
  • Stratified sampling and Quasi-Monte Carlo methods
  • Reporting dashboards

Issues

Please log issues in github

Contributing

You are welcome to contribute pull requests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rippy-0.0.8.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

rippy-0.0.8-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file rippy-0.0.8.tar.gz.

File metadata

  • Download URL: rippy-0.0.8.tar.gz
  • Upload date:
  • Size: 17.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for rippy-0.0.8.tar.gz
Algorithm Hash digest
SHA256 8fd0d650e52e1843ffff64f0957c97eba55a5ddb86c28e71f60eb86c3a4a7354
MD5 4f7511cdfa148f656c7e7c3e1fd38e40
BLAKE2b-256 28f5f74254360da671ab13a950cefc14d90c833ab1bef2421359d9d42aecdb19

See more details on using hashes here.

File details

Details for the file rippy-0.0.8-py3-none-any.whl.

File metadata

  • Download URL: rippy-0.0.8-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for rippy-0.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 df39ce21dcba97b4ef9190bc209439b0c67198e793c8b0e1bf7f51f0a36b2141
MD5 3c026634b412efc85581a165b9af84b5
BLAKE2b-256 be4d5e701446410f62d1d7ad787b19813ad833df1c82a6dfafc483ea074e9edb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page