Skip to main content

ratingmodels

Manual and experience rating, credibility blending, and rate indication with an audit trail.

CI PyPI Python

Overview

ratingmodels implements the pieces of a pricing exercise as small, inspectable objects: an experience rate with pooling and trend, a manual rate with factor application, credibility blending, a rate indication that decomposes exactly into its drivers, renewal capping, and rate build-up with a line-by-line audit trail.

It also covers the modeling side of pricing — GLM relativities, a frequency–severity model with prediction intervals, on-leveling, dislocation, and scenario evaluation — all against tidy inputs.

Installation

pip install ratingmodels

Requires Python 3.10 or newer.

Quick start

import ratingmodels as rm

# experience side: pool large claims, trend, and target loss ratio
capped, excess = rm.pool_claims([612_000, 340_000, 128_000, 96_500],
                                pooling_point=250_000)
exp = rm.ExperienceRate(
    incurred_claims=4_200_000, exposure=9_600,
    trend_annual=0.075, trend_years=1.5,
    pooled_excess=excess, pooling_charge=38.00,
    target_loss_ratio=0.85,
)

# manual side, then blend by limited-fluctuation credibility
man = rm.ManualRate(base_loss_cost=480,
                    factors={"area": 1.05, "industry": 0.97, "tier": 1.10},
                    target_loss_ratio=0.85)
z = rm.limited_fluctuation_credibility(n=9_600, n_full=12_000)

ind = rm.RateIndication(
    experience_loss_cost=exp.loss_cost(), manual_loss_cost=man.loss_cost(),
    credibility=z, current_rate=520, target_loss_ratio=0.85,
    trend_total_factor=exp.trend_factor(),
    benefit_factor=1.00, demographic_factor=1.01,
)
print(f"indicated rate   : {ind.indicated_rate():.2f}")
print(f"indicated change : {ind.indicated_rate_change():+.2%}")

# why did the rate move, and what does a 5% cap do to it?
print(ind.rate_change_decomposition().to_frame())
action = rm.renew(current_rate=520, indicated_rate=ind.indicated_rate(), cap=0.05)
print(f"proposed (capped): {action.proposed_rate:.2f} ({action.proposed_change:+.2%})")

What's inside

  • Experience ratingExperienceRate with pooling, trend, and target-loss-ratio gross-up.
  • Manual ratingManualRate with multiplicative factor application.
  • Credibility and blending — limited-fluctuation credibility and experience/manual blends.
  • IndicationRateIndication with an exact rate-change decomposition; renewal capping via renew.
  • Rate build-up — layered build-up with a line-by-line audit trail; base rates and retention by the off-balance method.
  • ModelingGLMRelativities, a frequency–severity model with prediction intervals, on-leveling, dislocation, scenarios, and evaluation utilities.

The full API reference and end-to-end worked examples live at openactuarial.org/ratingmodels.html.

The OpenActuarial ecosystem

ratingmodels 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/ratingmodels
cd ratingmodels
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

ratingmodels-0.9.1.tar.gz (133.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ratingmodels-0.9.1-py3-none-any.whl (85.5 kB view details)

Uploaded Python 3

File details

Details for the file ratingmodels-0.9.1.tar.gz.

File metadata

  • Download URL: ratingmodels-0.9.1.tar.gz
  • Upload date:
  • Size: 133.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ratingmodels-0.9.1.tar.gz
Algorithm Hash digest
SHA256 61356a88dc214e1a5ae3039c40204179619bf58cd572097df3548dae26bfbe7d
MD5 4eeb1a98dbffcd497de1cc6fe885085b
BLAKE2b-256 6af69c2e918172c9ec82c9c21bcb762635b2c1b2c8249c6a1f23c9daf3c963f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.9.1.tar.gz:

Publisher: release.yml on OpenActuarial/ratingmodels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ratingmodels-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: ratingmodels-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 85.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ratingmodels-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 006e48366e05487c3e9e41eaad2d4a10cda6e71d822c8ecb50b58daf21ede94f
MD5 cbc8f60ba7509f967d1e0530ca81bebb
BLAKE2b-256 d4ccd5dbc89fdc16f54164bb0e099935220f384c155cf3c04eef9769227d45e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.9.1-py3-none-any.whl:

Publisher: release.yml on OpenActuarial/ratingmodels

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page