risksim
Portfolio Monte Carlo: aggregate simulation, dependence, reinsurance contracts, and risk measures.
Overview
risksim simulates the aggregate loss of a portfolio whose components can
be anything exposing a .sample(n, rng=...) method — lossmodels aggregate
models, extremeloss tails, or your own objects. Components are independent
by default; rank correlation is imposed with the Iman–Conover construction
when you specify a dependence structure.
Aggregate reinsurance is applied as layers or stacked programs, and results come back with the standard risk measures (VaR, TVaR, exceedance probabilities) plus bootstrap confidence intervals, so a simulation answer always carries its simulation error.
Installation
pip install risksim
Requires Python 3.10 or newer.
Quick start
The example pairs risksim with lossmodels (pip install lossmodels),
the intended combination for frequency–severity components.
from lossmodels import Poisson, Lognormal, CollectiveRiskModel
from risksim import Portfolio, PortfolioItem, AggregateLayer
# two lines of business, each a collective-risk model (any .sample object works)
line_a = CollectiveRiskModel(Poisson(3.0), Lognormal(8.0, 0.9))
line_b = CollectiveRiskModel(Poisson(1.5), Lognormal(9.0, 0.7))
portfolio = Portfolio([
PortfolioItem("line_a", line_a),
PortfolioItem("line_b", line_b, weight=1.25), # optional exposure weight
])
# aggregate annual loss, net of an aggregate layer
layer = AggregateLayer(attachment=250_000, limit=500_000, share=1.0)
result = portfolio.simulate(100_000, contract=layer, rng=42)
print("gross mean :", result.gross_mean)
print("ceded mean :", result.ceded_mean)
print("retained mean :", result.retained_mean)
print("net (retained) 99% TVaR:", result.tvar(0.99))
What's inside
- Portfolios —
Portfolio/PortfolioItemover any objects exposing.sample, with optional exposure weights. - Dependence — Iman–Conover rank correlation via
risksim.dependence.impose_rank_correlation. - Contracts —
AggregateLayer, stackedContractPrograms, andapply_contracton raw loss vectors. - Risk measures — empirical VaR, TVaR, exceedance probabilities, and
one-call summaries in
risksim.metrics. - Uncertainty — bootstrap confidence intervals for any statistic in
risksim.uncertainty.
The full API reference and end-to-end worked examples live at openactuarial.org/risksim.html.
The OpenActuarial ecosystem
risksim is one of seven packages that share conventions — tidy tables,
explicit distribution parameterizations, reproducible random-number handling —
and compose across package seams:
| Package | Role |
|---|---|
| actuarialpy | Calculation primitives the workflow packages build on |
| experiencestudies | Experience reporting, actual-vs-expected, claimant and concentration analysis |
| projectionmodels | Claim, premium, and expense projection over a renewal horizon |
| ratingmodels | Manual and experience rating, credibility, indication, GLM relativities |
| lossmodels | Severity and frequency fitting, aggregate loss distributions |
| extremeloss | Extreme-value tails: POT/GPD, GEV, return levels, splicing |
| risksim | Portfolio Monte Carlo, dependence, reinsurance contracts, risk measures |
Install everything at once with pip install openactuarial.
Development
git clone https://github.com/OpenActuarial/risksim
cd risksim
python -m pip install -e ".[dev]"
pytest
ruff check src tests
CI runs the same gate on Python 3.10–3.14 across Linux and Windows.
Versioning and stability
All ecosystem packages are pre-1.0: minor releases may change APIs, and every release is documented in CHANGELOG.md. Current per-package API stability is tracked at openactuarial.org/stability.html.
License
MIT — see LICENSE.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file risksim-0.5.5.tar.gz.
File metadata
- Download URL: risksim-0.5.5.tar.gz
- Upload date:
- Size: 32.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
674a323be13b19d8a72cd701bc065e056eca69c804234bb7e797dd9719059c04
|
|
| MD5 |
613fb4804f0eb5bd19cba391d52231ab
|
|
| BLAKE2b-256 |
8e8bebdd54911ba0b46b58a1fb42d5831d3405c847ae51229f3b061a4bde474c
|
Provenance
The following attestation bundles were made for risksim-0.5.5.tar.gz:
Publisher:
release.yml on OpenActuarial/risksim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
risksim-0.5.5.tar.gz -
Subject digest:
674a323be13b19d8a72cd701bc065e056eca69c804234bb7e797dd9719059c04 - Sigstore transparency entry: 2163951493
- Sigstore integration time:
-
Permalink:
OpenActuarial/risksim@63e4991a693f5e6f0b5d260674739e98c9fc69c9 -
Branch / Tag:
refs/tags/v0.5.5 - Owner: https://github.com/OpenActuarial
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@63e4991a693f5e6f0b5d260674739e98c9fc69c9 -
Trigger Event:
push
-
Statement type:
File details
Details for the file risksim-0.5.5-py3-none-any.whl.
File metadata
- Download URL: risksim-0.5.5-py3-none-any.whl
- Upload date:
- Size: 17.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6eadbc113eed41a34864bb2503f398bcaf85dd0f84ff7cc36600caa79dca6d8d
|
|
| MD5 |
4c8cb7806b7953d264f022013d8ec8fb
|
|
| BLAKE2b-256 |
4d1a29bfbc0664f6e74a62f0d4c594247d0ae5700b077920c891df4a87908e42
|
Provenance
The following attestation bundles were made for risksim-0.5.5-py3-none-any.whl:
Publisher:
release.yml on OpenActuarial/risksim
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
risksim-0.5.5-py3-none-any.whl -
Subject digest:
6eadbc113eed41a34864bb2503f398bcaf85dd0f84ff7cc36600caa79dca6d8d - Sigstore transparency entry: 2163951652
- Sigstore integration time:
-
Permalink:
OpenActuarial/risksim@63e4991a693f5e6f0b5d260674739e98c9fc69c9 -
Branch / Tag:
refs/tags/v0.5.5 - Owner: https://github.com/OpenActuarial
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@63e4991a693f5e6f0b5d260674739e98c9fc69c9 -
Trigger Event:
push
-
Statement type: