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.0.tar.gz (132.0 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.0-py3-none-any.whl (85.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ratingmodels-0.9.0.tar.gz
  • Upload date:
  • Size: 132.0 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.0.tar.gz
Algorithm Hash digest
SHA256 e9ce3c0f89a85680bdd67d1adfd13e67e2f21e7fe5688c33b5ca9d94519339bf
MD5 08437bd0c7bf100c5c7473dbb0c20b4d
BLAKE2b-256 0d08b20155c949e52fe2176ca7eedd4f6105b4c5d1f8c5194d1a0ac7faf1edf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.9.0.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.0-py3-none-any.whl.

File metadata

  • Download URL: ratingmodels-0.9.0-py3-none-any.whl
  • Upload date:
  • Size: 85.4 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3115a601c3e14b6c53db7aff73f8fcdce05913b8f26cbf8a5f59587767089f06
MD5 4288f2a78d605df97ca0d854d359ff42
BLAKE2b-256 ccd194b6208eeb3c7a5b5182f89afa67161e730019cae514357fed4d5994298c

See more details on using hashes here.

Provenance

The following attestation bundles were made for ratingmodels-0.9.0-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